当前位置: 首页 > 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.dtcms.com/a/338669.html

相关文章:

  • 反向代理实现服务器联网
  • RNN(循环神经网络)和Transformer是处理自然语言处理(NLP)任务区别
  • 【深度学习新浪潮】如何利用多模态大模型优化结构力学性能?
  • 「内力探查术」:用 Instruments 勘破 SwiftUI 卡顿迷局
  • 开源 C++ QT Widget 开发(一)工程文件结构
  • linux系统装google chrome,amd64
  • Qt——文件操作
  • Vercel v0 iOS版重磅发布:AI驱动的移动开发新篇章
  • SWMM排水管网水力、水质建模及在海绵与水环境中的应用
  • 纯Qt结合ffmpeg实现本地摄像头采集/桌面采集/应用程序窗口采集/指定采集帧率和分辨率等
  • 数据仓库OLTPOLAP维度讲解
  • Qt事件处理机制详解
  • [激光原理与应用-308]:光学设计 - 266皮秒深紫外激光器设计图纸示例解析(基于工程实现与专利技术)
  • 《C++进阶之STL》【二叉搜索树】
  • 11.Ansible自动化之-内容集管理
  • 云原生俱乐部-shell知识点归纳(1)
  • MFC,C++,海康SDK,回调,轮询
  • 借助AI将infoNES移植到HarmonyOS平台的详细方案介绍
  • “道法术器” 思维:解析华为数字化转型
  • Springboot使用Selenium+ChormeDriver在服务器(Linux)端将网页保存为图片或PDF
  • 如何在未来进一步推动NLP技术的发展?
  • Java高级面试实战:Spring Boot微服务与Redis缓存整合案例解析
  • 【牛客刷题】岛屿数量问题:BFS与DFS解法深度解析
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第二十六讲)
  • 控制对文件的访问:Linux 文件系统权限管理总结
  • 基于VLM 的机器人操作视觉-语言-动作模型:综述 2
  • JavaSSM框架从入门到精通!第二天(MyBatis(一))!
  • 走进数字时代,融入数字生活,构建数字生态
  • 可以一键生成PPT的AI PPT工具(最新整理)
  • Flink Checkpoint 原理深度剖析与作用讲解(flink面试高频问题)