You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单条FFmpeg命令同步推送两路RTSP流至MediaMTX服务器

如何通过单条FFmpeg命令同步推送两路RTSP流至MediaMTX服务器

嗨,我完全懂你的需求——要避免分开启动两个FFmpeg进程导致的流不同步问题,用一条命令推两路同步的RTSP流对吧?其实很简单,我们可以让FFmpeg从同一个输入源生成两路独立输出,这样它们共享同一帧数据,完全不会有启动时间差的问题。

直接给你最实用的解决方案,分两种场景:

场景1:从同一个视频文件生成原画质+低画质两路流

这应该是你最需要的情况,用一个输入源同时推送原画质和缩放后的低画质流:

ffmpeg -re -stream_loop -1 -i NameFile.mkv \
  # 第一路:原画质直接复用编码推送
  -c:v copy -c:a copy -f rtsp rtsp://localhost:554/mystream1 \
  # 第二路:缩放后重新编码推送(参数可按需调整)
  -c:v libx264 -vf scale=640:360 -preset fast -crf 23 \
  -c:a aac -b:a 128k -f rtsp rtsp://localhost:554/mystream2

参数说明:

  • -re -stream_loop -1 -i NameFile.mkv:保留你原来的设置,按视频帧率读取文件,无限循环播放
  • 第一路输出:-c:v copy -c:a copy 直接复用原音视频编码,无需重新编码,节省资源,推送到mystream1
  • 第二路输出:
    • -vf scale=640:360:将视频缩放到640x360分辨率,你可以改成自己需要的尺寸(比如1280:720)
    • -c:v libx264:用H.264编码重新压缩视频(缩放操作必须重新编码,若原视频已是H.264也适用)
    • -preset fast:平衡编码速度与画质,可选ultrafast到slow之间的参数,越快资源占用越低但画质稍降
    • -crf 23:控制画质,数值越小画质越好(18-28是常用合理范围)
    • -c:a aac -b:a 128k:将音频转成AAC编码,128k比特率保证兼容性与音质平衡

场景2:如果已准备两个独立分辨率的视频文件

如果你已经有原画质和低画质两个分开的视频文件,也可以用一条命令同时推送,不过同步性不如单输入源可靠:

ffmpeg -re -stream_loop -1 -i NameFile.mkv -re -stream_loop -1 -i LowResFile.mkv \
  -c copy -map 0 -f rtsp rtsp://localhost:554/mystream1 \
  -c copy -map 1 -f rtsp rtsp://localhost:554/mystream2

关键注意点:

  • 两种方案都是单FFmpeg进程处理,所以两路流的帧数据完全同步,不会出现分开启动时的时间差问题
  • 记得检查MediaMTX的配置文件(mediamtx.yml),确保允许/mystream1和/mystream2这两个流路径,默认配置一般支持任意路径,但最好确认一下

备注:内容来源于stack exchange,提问作者Sebastian Vasii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:24:51