当前位置: 首页 > news >正文

GStreamer无线图传:从树莓派到计算机的实现方案

一、场景描述

无线图传​(Wireless Video Transmission)是指通过无线通信技术(如 Wi-Fi、4G/5G、毫米波等)将视频信号从摄像头或其他采集设备实时传输到显示端(如电脑、手机、监控屏等)的技术。

本教程所采用的无线图传方式是Wi-Fi,即树莓派和计算机连接到同一网络下,将树莓派实时捕捉的画面,通过Wi-Fi传输到计算机上进行显示,系统架构如下图所示。

为方便称呼和辨别,将树莓派简称为Pi,将计算机简称为PC。本教程所用的Pi为64bit无桌面版本,所用的PC为安装了Windows 11的笔记本电脑。


二、关键技术

GStreamer​ 是一个开源的、跨平台的多媒体处理框架,用于构建高效的音视频流处理管道(Pipeline)。它支持多种编解码器、容器格式和硬件加速,广泛应用于视频播放、流媒体传输、音视频录制、实时通信等领域。

GStreamer官网地址见下。

GStreamer: open source multimedia frameworkhttps://gstreamer.freedesktop.org/


三、设置Pi和PC

为实现系统功能,Pi和PC均需要安装GStreamer。

1、Pi安装GStreamer

sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base

2、PC安装GStreamer

打开以下网址,选择MSVC版本的runtime installer,下载后安装。注意,在安装GStreamer时,应该选择完整安装

Download GStreamerhttps://gstreamer.freedesktop.org/download/#windows

3、PC设置GStreamer

默认情况下,GStreamer安装在C盘,如以下位置。

C:\Program Files\gstreamer\1.0\msvc_x86_64\bin

进入环境变量中的Path,依次点击“编辑-新建”,将bin文件夹绝对路径粘贴后保存。


四、正式推流

推流(Stream Pushing)​​ 是指将音视频数据从采集设备(如摄像头、电脑、手机等)​实时传输到服务器或接收端的过程。

1、检查摄像头的工作参数

对于不同型号的摄像头,其工作参数(包括像素和帧率)也不同。为确保推流的顺利进行,应该先检查摄像头的工作参数。

v4l2-ctl --list-formats-ext

如上图所示,摄像头的帧率是30fps,包含5类像素。

2、检查计算机IP地址

按Win + R并输入cmd,进行cmd窗口,输入以下内容并运行。

ipconfig

找到以太网适配器 VMware Network Adapter VMnet1:字段后面的IPv4地址并记下。

3、在PC上运行GStreamer服务

按Win + R并输入cmd,进行cmd窗口,输入以下内容并运行。

gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264 ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=480 ! autovideosink sync=false

在上述命令行中,需要自定义的参数是width和height,这两个参数需要与摄像头的像素相对应。

4、在Pi上运行GStreamer服务

Pi运行以下命令行。

host

在上述命令行中,需要自定义的参数包括4类。

(1)device:指向摄像头地址,默认是/dev/video0

(2)width和height:宽度和高度,建议任一参数不超过640

(3)framerate:帧率

(4)host:计算机的IP地址,即前述通过ipconfig指令查询到的IPv4地址


五、运行效果

注意,GStreamer服务的启动顺序,务必是先PC后Pi

经测试,树莓派4B+ 4GB版本,在640*480像素、30帧率情况下,无线传输的延迟很小,运行也很稳定。

http://www.dtcms.com/a/340096.html

相关文章:

  • 20250819 强连通分量,边双总结
  • 嵌入式-SPI的IO引脚初始化、模块初始化、数据的收发-Day16
  • Codeforces 盒装苹果
  • vLLM加载lora
  • CF266E More Queries to Array... Solution
  • GPFS不同存储方式的优劣
  • 2943. 最大化网格图中正方形空洞的面积
  • Manus AI 与多语言手写识别技术深度剖析
  • 不同的 Text2sql 方式优缺点探究
  • 智慧校园中IPTV融合对讲:构建高效沟通新生态
  • Unity常用工具及默认快捷键
  • PowerBI登录出错解决过程
  • YOLO多模态改进系列 | YOLOFuse:多模态融合的 Slim-Neck 改进
  • java面试——多线程
  • C++高频知识点(二十九)
  • HarmonyOS 中的 泛型类和泛型接口
  • 51单片机拼接板(开发板积木)
  • 爬小红书搜索详情软件:根据关键词采集笔记详情,包含正文内容、发布时间、转评赞藏等
  • C++开发基础之:队列用法与生产者消费者模型实战和可直接复用的线程安全的队列
  • 疏老师-python训练营-Day50预训练模型+CBAM注意力
  • 会话技术之<Cookie>和<Session>的区别联系
  • “数据权限”的道和术
  • 从 SGD 到梯度累积:Epoch、Batch、Step 的关系全解析
  • 使用redis读写锁实现抢券功能
  • Hive 存储管理测试用例设计指南
  • 力扣(最小栈)
  • Android逆向工程:Smali语法解析完整指南
  • [ Maven 开发工具 ] 环境搭建及配置
  • DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)
  • 基于 OpenMV 的矩形识别与 STM32 串口通信(电子设计大赛实用教程)