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

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帧率情况下,无线传输的延迟很小,运行也很稳定。

http://www.xdnf.cn/news/1327825.html

相关文章:

  • GEO 优化专家孟庆涛:技术破壁者重构 AI 时代搜索逻辑
  • RESTful API 开发实践:淘宝商品详情页数据采集方案
  • Apache IoTDB:大数据时代时序数据库选型的技术突围与实践指南
  • 从0到1认识Rust通道
  • Redis-缓存-击穿-分布式锁
  • 无人机场景 - 目标检测数据集 - 山林野火烟雾检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + FPGA通信案例
  • 如何免费给视频加字幕
  • Linux的ALSA音频框架学习笔记
  • Spring AOP 和 Spring 拦截器
  • LeetCode 100 -- Day2
  • JVM垃圾收集器
  • ts 引入类型 type 可以省略吗
  • sfc_os!SfcValidateDLL函数分析之cache文件版本
  • python的社区互助养老系统
  • 【实时Linux实战系列】实时平台下的图像识别技术
  • 微软AD国产化替换倒计时——不是选择题,而是生存题
  • 初识线段树
  • 电影购票+票房预测系统 - 后端项目介绍(附源码)
  • 114. 二叉树展开为链表
  • 华为云之开发者空间云主机使用体验【玩转华为云】
  • RH134 运行容器知识点
  • 【QT入门到晋级】进程间通信(IPC)-socket(包含性能优化案例)
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 如何使用DeepSeek解析长pdf的文本
  • 需求开发广告系列 Gmail广告投放教程
  • 跨域信息结构:四界统一的动态机制
  • 大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践
  • 机器学习概念(面试题库)
  • 智慧校园中IPTV融合对讲:构建高效沟通新生态