GStreamer无线图传:树莓派到计算机的WiFi图传方案
一、场景描述
无线图传(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帧率情况下,无线传输的延迟很小,运行也很稳定。