rtsp,。。。。

发布于:2025-05-10 ⋅ 阅读:(20) ⋅ 点赞:(0)

下面是基于 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 subprocess

width, 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:
        break
    process.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/video0 rtsp://localhost:8554/cam0
/dev/video2 rtsp://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
GStreamer latency=0 sync=false
分辨率 480p 推荐,控制带宽
传输协议 使用 -rtsp_transport tcp,更稳定

✅ 总结

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


网站公告

今日签到

点亮在社区的每一天
去签到