vlc实现PC与树莓派的视频流传输

2023-11-15

一、使用vlc实现PC与树莓派之间的视频流传输

(一)Windows

  1. 安装下载vlc
    装的32位 本人用64位不ok

  2. 使用vlc
    打开VLC
    媒体--> 流--> 捕获设备-->
    捕获模式:DirectShow
    适配设备名称:
    音频设备名称:
    点击 串流 -->下一步
    捕获设备
    进入流输出设置界面
    添加UDP 输入树莓派ip
    流输出设置界面
    在这里插入图片描述

(二)树莓派

使用team viewer 在树莓派上安装vlc:
sudo apt-get update
sudo apt-get install vlc
在这里插入图片描述
打开vlc
在这里插入图片描述
接收推流代码:
udp://@(树莓派地址):(端口号)
eg: udp://@192.168.43.247:1234
在这里插入图片描述
在这里插入图片描述
选择电脑中的视频文件
在这里插入图片描述
在这里插入图片描述

二、树莓派与Windows系统之间的聊天

  1. 查看ip地址
    打开命令提示符cmd 用ipconfig查看ip

  2. 编写代码
    (1)windows上打开

在这里插入图片描述
服务器端:

import socket
host = '192.168.43.66'
port = 8090
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(5)
sock,addr = s.accept()
print('Connection built...')
info = sock.recv(1024).decode()
while info != 'exit':
  print('raspberry:'+info)
  send_mes = input()
  sock.send(send_mes.encode())
  if send_mes =='exit':
    break
  info = sock.recv(1024).decode()
sock.close()
s.close()

在这里插入图片描述
(2)树莓派上

在这里插入图片描述

  1. 开始聊天

在这里插入图片描述
在这里插入图片描述

三、非堵塞方式传输图像/视频文件

  1. 服务器端:
    准备要传输的文件

在这里插入图片描述

import socket
import os
import hashlib

server = socket.socket()
server.bind(("192.168.43.66",6969)) # 绑定监听端口
server.listen(5)  # 监听
print("监听开始..")

while True:
    conn, addr = server.accept()  # 等待连接
    print("conn:", conn, "\naddr:", addr)  # conn连接实例
    while True:
        data = conn.recv(1024)  # 接收
        if not data:  # 客户端已断开
            print("客户端断开连接")
            break
        print("收到的命令:", data.decode("utf-8"))
        cmd, filename = data.decode("utf-8").split(" ")
        if cmd =="get":
            if os.path.isfile(filename):  # 判断文件存在

                # 1.先发送文件大小,让客户端准备接收
                size = os.stat(filename).st_size  #获取文件大小
                conn.send(str(size).encode("utf-8"))  # 发送数据长度
                print("发送的大小:", size)

                # 2.发送文件内容
                conn.recv(1024)  # 接收确认
                m = hashlib.md5()
                f = open(filename, "rb")
                for line in f:
                    conn.send(line)  # 发送数据
                    m.update(line)
                f.close()
                # 3.发送md5值进行校验
                md5 = m.hexdigest()
                conn.send(md5.encode("utf-8"))  # 发送md5值
                print("md5:", md5)
server.close()

在这里插入图片描述

  1. 客户端:
    新建 Client2.py
# 客户端
import socket
import os
import hashlib

client = socket.socket()  # 生成socket连接对象

ip_port =("192.168.43.241", 6969)  # 地址和端口号

client.connect(ip_port)  # 连接

print("服务器已连接")

while True:
    content = input(">>")
    if len(content)==0: continue  # 如果传入空字符会阻塞
    if content.startswith("get"):
        client.send(content.encode("utf-8"))  # 传送和接收都是bytes类型

        # 1.先接收长度,建议8192
        server_response = client.recv(1024)
        file_size = int(server_response.decode("utf-8"))
        print("接收到的大小:", file_size)

        # 2.接收文件内容
        client.send("准备好接收".encode("utf-8"))  # 接收确认
        filename = "new" + content.split(" ")[1]

        f = open(filename, "wb")
        received_size = 0
        m = hashlib.md5()

        while received_size < file_size:
            size = 0  # 准确接收数据大小,解决粘包
            if file_size - received_size > 1024: # 多次接收
                size = 1024
            else:  # 最后一次接收完毕
                size = file_size - received_size
            data = client.recv(size)  # 多次接收内容,接收大数据
            data_len = len(data)
            received_size += data_len
            print("已接收:", int(received_size/file_size*100), "%")

            m.update(data)
            f.write(data)

        f.close()

        print("实际接收的大小:", received_size)  # 解码

        # 3.md5值校验
        md5_sever = client.recv(1024).decode("utf-8")
        md5_client = m.hexdigest()
        print("服务器发来的md5:", md5_sever)
        print("接收文件的md5:", md5_client)
        if md5_sever == md5_client:
            print("MD5值校验成功")
        else:
            print("MD5值校验失败")
client.close()

运行 连接成功 输入get p11.png
在这里插入图片描述
在这里插入图片描述
查看接收的文件
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vlc实现PC与树莓派的视频流传输 的相关文章

  • GPIO的两种引脚规则:BCM与BOARD

    树莓派 raspberry 针脚在python中BCM与BOARD模式的区别 在python程序中定义的GPI针脚有两种模式 BCM模式 BOARD模式 BCM模式 例如 GPIO setmode GPIO BCM 测试结果如下 物理针脚1
  • 为何在新建STM工程中全局声明两个宏

    在uVision中新建STM32工程后 需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中 此时需要在工程设置 gt C C 选项卡下的Define文本框中键入这两个全局宏定义 STM32F40 41xxx USE STDPERIP
  • 【树莓派4B】darknet-nnpack的安装及使用

    文章目录 前言 步骤 1 下载依赖项 2 安装NNPACK darknet 3 下载darknet nnpack 4 使用YOLO进行预测 检测图像 检测视频 检测视频流 错误处理 make 时报错 undefined reference
  • 2022年 大学生工程训练比赛[物料搬运]

    本人和团结参加了2022年大学生工程训练 简称工训赛 校赛选拔 准备了几个月的时间和花费了较多的资金 由于疫情等多种情况 很遗憾未能参加湖南省省赛 过了这么久还是写个博客记录参赛准备和调试过程 目录 一 比赛要求 二 整体思路 三 硬件模块
  • 如何在 Ubuntu 18.04 上安装 VLC 媒体播放器

    VLC 是最流行的开源多媒体播放器之一 它是跨平台的 几乎可以播放所有多媒体文件以及 DVD 音频 CD 和不同的流媒体协议 本教程介绍如何在 Ubuntu 18 04 上安装 VLC 媒体播放器 相同的说明适用于 Ubuntu 16 04
  • 使用VLC的虚拟界面时如何防止显示控制台

    我正在尝试从 Node js 服务器脚本以 虚拟 模式启动 VLC 但是使用child process spawn vlc I dummy 使用 Windows 时 为 VLC 的输出生成一个新的控制台窗口 有没有办法防止这种情况发生并强制
  • 如何使用 VLC 流式传输图像/文件?

    所以我知道有很多 libVLC dll 的包装器 但我只是不知道谁准备好做我需要做的事情 我需要的很简单 在我的 C 程序中 我创建了一些位图 每秒一次或两次 我现在想使用 VLC 将位图作为视频 以 VLC 可以提供的某种格式 实时流式传
  • VLCJ 创建多个视频面板

    我正在使用 vlcj 创建多个视频面板 对于每个视频窗口我应该添加代码 factory0 new MediaPlayerFactory mediaPlayer0 factory0 newEmbeddedMediaPlayer mediaPl
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 将 VlcManager 与最新版本的 Vlc.DotNet 结合使用

    我正在尝试将 Vlc DotNet 库用于我的 WinForms C 应用程序 我不想使用 Vlc DotNet 库的 Core Interops 中的 VlcManager 但没有最新的文档 在早期版本中 您可以创建 VlcControl
  • 使用 VLC 通过 RTP 流式传输桌面,延迟尽可能低

    我一直在尝试找出如何使用 VLC 流式传输我的桌面 通过 LAN 并实现尽可能低的延迟 我应该使用什么设置 我尝试了多种方法但尚未成功 编辑 我也愿意使用 VLC 以外的东西 我也用 VLC 尝试过同样的操作 但延迟始终无法低于 3 秒 F
  • 视频在回溯时卡住 (C++) (QT) (libvlc)

    我正在使用 libvlc 使用 QT 4 在我的 GUI 应用程序上播放视频 当我向前搜索视频时 它工作正常 但是当我向后搜索视频时 它会卡住 我的意思是帧不会改变 而我的回调函数是 videopostrender没有接到任何电话 void
  • AttributeError:“NoneType”对象没有属性“media_player_new”

    我想在 python 中使用 vlc 但我总是遇到这个错误 Traceback most recent call last File radio py line 3 in
  • VLC 流至 MP4 WEBM 和 Flash

    我正在尝试将视频从 IP 摄像机流式传输到我的 WordPress 网站 我希望我的流可以通过常见设备 Windows Mac Android 和 IOS 访问 目前我正在使用 VLC 进行流式传输 但我只能使用 flash 流 但我想做
  • VLC录制rtsp流

    我在使用 VLC 播放器录制 rtsp 流时遇到问题 实际上我的方法在 MacOS X 中有效 但在 Windows 中无效 命令行 vlc vvv rtsp admin email protected cdn cgi l email pr
  • libvlc - 如何在播放过程中改变音量

    我试图在播放音频文件时设置音量 但它似乎根本不起作用 请问我做错了什么 create a vlc playable object from source self playable vlc libvlc media new path sel
  • 使用适用于 Android 的 LibVLC 创建视频播放器

    我正在尝试使用最后一个 LibVLC 为 Android 应用程序创建一个视频播放器 问题是我不知道这个库是如何工作的 而且我找不到示例来帮助我 正如这里所说https bitbucket org edwardcw libvlc andro
  • libVLCSharp 无法创建 MediaList

    我正在玩 libVLCSharp 发现了一个有线行为 实际上 我创建媒体并使用 MediaPlayer 播放它没有任何问题 但是 当我尝试从 MediaList 创建媒体时 它会中断并显示以下消息 无法在本机端执行实例化 确保你 在您的系统
  • Python VLC 实例全屏不起作用

    我对 Python 有点陌生 正在为连接运动传感器的 Raspberry Pi 开发一个应用程序 这个想法是把这个 Raspberry 放在一个房间里 在运动检测时 视频开始全屏播放 视频播放完毕后 我想让设备休眠 10 分钟 然后再次激活
  • 从命令行运行 vlc 扩展

    我有一个用 Lua 编写的 vlc 扩展 我知道如何从 GUI 运行它 查看 gt 我的扩展 我想从命令行运行它 这样我就不需要每次都启动X 它还没有实施 查看门票 3883 https trac videolan org vlc tick

随机推荐

  • 轻松刷脸是美妙的线下消费体验过程

    刷脸支付的过程非常的简单 你不需要带钱包 信用卡或手机 支付时只需要自己面对刷脸支付pos机屏幕上的摄像头 刷脸支付系统会自动将消费者面部信息与个人账户相关联 整个交易过程十分便捷 在移动支付的快速发展中 消费者逐渐习惯使用移动支付 即使身
  • 交换机的Access口与Trunk口

    基本概念 Access类型的端口只能属于1个VLAN 一般用于连接计算机的端口 Trunk类型的端口可以允许多个VLAN通过 可以接收和发送多个VLAN的报文 一般用于交换机之间连接的端口 处理流程 Acess端口收报文 收到一个报文 判断
  • Python 分割技术提取图像和视频中对象

    计算机视觉是计算机查看和识别对象的媒介 计算机视觉的目标是使计算机能够分析图像和视频中的对象 解决不同的视觉问题 对象分割为方便分析图像和视频中的对象铺平了道路 对不同领域做出了巨大贡献 例如医学 自动驾驶汽车的视觉以及图像和视频的背景编辑
  • vue form 滑动验证码、手机短信验证

    话不多说直接上效果图 vue 注册首页 校验 滑动验证 页面源码
  • mysql explain执行计划

    mysql explain执行计划 mysql gt EXPLAIN SELECT FROM t item i LEFT JOIN t sku s ON i item id s item id LEFT JOIN t sku stock t
  • 楠姐技术漫话:接着唠唠社区发现

    halo 大家好 很开心又和大家见面了 在第一篇技术漫话 图计算的那些事 发布之后 楠姐收到了很多鼓励和支持 非常感谢大家的喜欢 所以楠姐尽自己所能马不停蹄开始第二篇的创作 虽迟但到 也尝试在第二期中 在可读性和观感上尽量做些优化和进步 本
  • Managing Big Data with MySQL学习笔记

    Managing Big Data with MySQL学习笔记 Intro Week 1 How Relational Databases Help Solve Those Problems Database Design Tools E
  • Vue 高德地图实现添加标记,AMap.PlaceSearch 地点搜索,根据页面主题修改地图样式

    Vue 高德地图实现添加标记 AMap PlaceSearch 地点搜索 根据页面主题修改地图样式 效果图 成为开发者并创建key 详细请查阅官方文档 https developer amap com api jsapi v2 guide
  • 分布式锁实现方案3、基于Redis的SET操作实现的分布式锁

    在我的上一篇文章中 关于redis分布式锁的写法 释放锁还有些缺陷 细节见评论部分 本文进一步做了完善 分布式锁实现方案2 基于Redis的SET操作实现的分布式锁 package com alioo common lock import
  • 【leetcode.283】——移动零

    题目 注意 解析 思路 定义left和right指针 都初始化在数组的第一个位置 right指针一直向右走 如果right走到指向的值不为0时 那么right指针指向的值与left指针指向的值进行交换 然后left指针再向后走一步 如此循环
  • c++十大排序——快速排序

    算法基本知识铺垫 有些人可能不知道什么是稳定排序 原地排序 时间复杂度 空间复杂度 我这里先简单解释一下 1 稳定排序 如果 a 原本在 b 的前面 且 a b 排序之后 a 仍然在 b 的前面 则为稳定排序 2 非稳定排序 如果 a 原本
  • nodejs高大上的部署方式-PM2

    如果直接通过node app来启动 如果报错了可能直接停在整个运行 supervisor感觉只是拿来用作开发环境的 再网上找到pm2 目前似乎最常见的线上部署nodejs项目的有forever pm2这两种 使用场合 supervisor是
  • 旋转链表——快慢指针法的实践

    一 题目 给你一个链表的头节点 head 旋转链表 将链表每个节点向右移动 k 个位置 示例1 输入 1 gt 2 gt 3 gt 4 gt 5 gt NULL k 2 输出 4 gt 5 gt 1 gt 2 gt 3 gt NULL 解释
  • matlab灵敏度分析操作,灵敏度分析 使用MATLAB编写.doc

    灵敏度分析 使用MATLAB编写 实验二 线性规划的灵敏度分析 实验目的 1 线性规划求解的单纯形法的灵敏度分析的编程实现 2 掌握使用matlab Lingo Excel的规划求解功能求解 并利用 敏感性报告 进行分析 二 实验内容 课本
  • wazuh中的规则编写以及日志分析

    目录 什么是wazuh 如何搭建wazuh 实验环境 wazuh的规则 配置代理 wazuh中的配置了解 ssh的暴力破解 用户自定义规则 SQL注入的检测 什么是wazuh Wazuh是一个免费 开源和企业级的安全监控解决方案 用于威胁检
  • 【2223sW2】LOG2

    写在前面 好好学习 走出宿舍 走向毕设 一些心路历程记录 很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧 还是不要给自己的查重挖坑罢了 23 3 2 检验FFT 早上师兄帮忙看了一眼我画的丑图 说样子应该是对的 增加了检查的精
  • D3DXMESHOPT_ATTRSORT

    Mesh的顶点和索引能够被重组以便能更有效的渲染mesh 当我们这样做时 我们说我们优化了一个mesh 我们可以使用下面的方法来进行优化 HRESULT ID3DXMesh OptimizeInplace DWORD Flags CONST
  • DbVisualizer数据库管理工具

    一款数据库管理工具 推荐使用 安装包及破解方法见盘附件 百度云盘 http pan baidu com share link shareid 253466598 uk 1629211176
  • 【Unity3D日常开发】Unity3D中比较string字符串的常用方法

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好 我是佛系工程师 恬静的小魔龙 不定时更新Unity开发技巧 觉得有用记得一键三连哦 一 前言 字符串string的比较有很多方法 比如 E
  • vlc实现PC与树莓派的视频流传输

    目录 一 使用vlc实现PC与树莓派之间的视频流传输 一 Windows 二 树莓派 二 树莓派与Windows系统之间的聊天 三 非堵塞方式传输图像 视频文件 一 使用vlc实现PC与树莓派之间的视频流传输 一 Windows 安装下载v