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

rtsp,。。。。

下面是基于 FFmpeg + H.264 + RTSP + GStreamer 的低延时视频传输方案的详细搭建指南。此方案可将延迟控制在 <100ms,适合远程驾驶、监控等实时性要求较高的应用场景。


📦 方案架构

摄像头(OpenCV)→ FFmpeg(H.264编码+RTSP推流)→ RTSP服务端 → GStreamer(客户端接收+播放)

✅ 1. 准备工作

✅ 安装依赖

Ubuntu 系统:
sudo apt update
sudo apt install ffmpeg gstreamer1.0-tools gstreamer1.0-plugins-base \gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \gstreamer1.0-plugins-ugly gstreamer1.0-libav \libgstrtspserver-1.0-dev v4l-utils

✅ 2. RTSP 服务器搭建方案

RTSP 服务器推荐使用轻量级的 RTSPServerGStreamer RTSP Server(支持自定义管道)。

方式一:使用 ffmpeg 自带推流到 RTSP Simple Server(最简单)

安装 RTSP Simple Server(github.com/aler9/rtsp-simple-server)
wget https://github.com/bluenviron/mediamtx/releases/download/v1.12.2/mediamtx_v1.12.2_linux_amd64.tar.gz
tar -xvzf mediamtx_v1.12.2_linux_amd64.tar.gz
./rtsp-simple-server &

默认 RTSP 地址为:

rtsp://localhost:8554/mystream

✅ 3. 摄像头 H.264 推流(使用 OpenCV + FFmpeg)

你可以用 FFmpeg 从摄像头采集并直接推送 RTSP:

示例脚本 push_rtsp.py

import cv2
import subprocesswidth, height, fps = 640, 480, 25
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
cap.set(cv2.CAP_PROP_FPS, fps)# FFmpeg 推流命令:推送到本地 RTSP Server(H.264)
rtsp_url = 'rtsp://127.0.0.1:8554/mystream'
ffmpeg_cmd = ['ffmpeg','-f', 'rawvideo','-pix_fmt', 'bgr24','-s', f'{width}x{height}','-r', str(fps),'-i', '-',  # 从stdin接收'-c:v', 'libx264','-preset', 'ultrafast','-tune', 'zerolatency','-f', 'rtsp','-rtsp_transport', 'tcp',rtsp_url
]process = subprocess.Popen(ffmpeg_cmd, stdin=subprocess.PIPE)while True:ret, frame = cap.read()if not ret:breakprocess.stdin.write(frame.tobytes())

运行此脚本后,会实时把视频数据推送到 RTSP 服务端。


✅ 4. 客户端使用 GStreamer 接收播放

推荐命令(延时极低):

gst-launch-1.0 rtspsrc location=rtsp://192.168.31.100:8554/mystream latency=0 ! \
rtph264depay ! avdec_h264 ! autovideosink sync=false

说明:

  • latency=0: 表示极低缓冲

  • sync=false: 不等待系统时间戳,直接渲染

  • 可替换为其他渲染后端如 xvimagesink, glimagesink


✅ 5. 多摄像头支持

你可以运行多个脚本,推送到不同 RTSP 路径:

摄像头地址
/dev/video0rtsp://localhost:8554/cam0
/dev/video2rtsp://localhost:8554/cam2

订阅方式:

gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/cam0 latency=0 ! rtph264depay ! avdec_h264 ! autovideosink sync=false
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/cam2 latency=0 ! rtph264depay ! avdec_h264 ! autovideosink sync=false

🚀 延迟优化建议

优化项建议设置
编码参数-preset ultrafast -tune zerolatency
GStreamerlatency=0 sync=false
分辨率480p 推荐,控制带宽
传输协议使用 -rtsp_transport tcp,更稳定

✅ 总结

模块工具
采集与推流Python + OpenCV + FFmpeg
服务端RTSP Simple Server
播放端GStreamer(gst-launch-1.0

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

相关文章:

  • 现代框架对SEO的深度影响
  • 【概念解读】开发中遇到的概念阶段
  • RuntimeError: expected scalar type ComplexDouble but found Float
  • 计算机视觉与深度学习 | 视觉+激光雷达+惯惯性SLAM算法汇总(原理,公式,代码)
  • Java中的分布式缓存与Memcached集成实战
  • 电压取样端口静电浪涌防护方案 之6TS Series瞬态抑制器TVS
  • hz2新建Keyword页面
  • 使用 swift 微调 Qwen3-4b 模型
  • 矩阵短剧系统:如何用1个后台管理100+小程序?深度解析多端绑定技术
  • C++--类中this指针的讲解
  • 从数据孤岛到智能工厂:RG3000边缘网关的数字化转型实践
  • Mac QT水平布局和垂直布局
  • 小红书视频无水印下载方法
  • AI技术与园区运营的深度融合:未来生态型园区的建设路径
  • VS Code配置指南:打造高效的QMK开发环境
  • 老旧 LabVIEW 系统升级改造
  • 系统的从零开始学习电子的相关知识,该如何规划?你是工作了18年的电子工程师,请给出你的建议
  • 三维GIS开发cesium智慧地铁教程(6)添加模型
  • 31【干货】Arcgis属性表常用查询表达式实战大全
  • 基于Java和GeoTools的根据矢量BBOx自动生成格网文件实践
  • 基于C++的多线程网络爬虫设计与实现(CURL + 线程池)
  • Java游戏服务器开发流水账(3)游戏数据的缓存简介
  • 第04章—技术突击篇:如何根据求职意向进行快速提升与复盘
  • 数据库索引
  • 使用Java处理多客户端服务器:从传统线程到虚拟线程
  • [250509] x-cmd 发布 v0.5.11 beta:x ping 优化、AI 模型新增支持和语言变量调整
  • kotlin 数据类
  • Electron知识框架
  • 基于SSM + JSP 的个人通讯录管理系统
  • 使用 ANSYS AEDT(单向耦合)进行高功率同轴射频滤波器的热分析