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

FFmpeg:使用filter_complex与movie滤镜修复帧率及多RTMP推流同步问题

多视频无限循环同步推流至多个RTMP端点的FFmpeg方案

经过@Gyan的协助,我整理出了这条可以同时处理4个视频、实现无限循环推流且保证音视频同步的FFmpeg命令,亲测有效:

ffmpeg \
-filter_complex \
"movie=01.mp4:loop=0[v1];[v1]setpts=N/FRAME_RATE/TB[v1]; \
amovie=01.mp4:loop=0[a1];[a1]asetpts=N/SR/TB[a1]; \
movie=02.mp4:loop=0[v2];[v2]setpts=N/FRAME_RATE/TB[v2]; \
amovie=02.mp4:loop=0[a2];[a2]asetpts=N/SR/TB[a2]; \
movie=03.mp4:loop=0[v3];[v3]setpts=N/FRAME_RATE/TB[v3]; \
amovie=03.mp4:loop=0[a3];[a3]asetpts=N/SR/TB[a3]; \
movie=04.mp4:loop=0[v4];[v4]setpts=N/FRAME_RATE/TB[v4]; \
amovie=04.mp4:loop=0[a4];[a4]asetpts=N/SR/TB[a4]" \
-map "[v1]" -map "[a1]" -f flv rtmp://endpoint1/live/stream1 \
-map "[v2]" -map "[a2]" -f flv rtmp://endpoint2/live/stream2 \
-map "[v3]" -map "[a3]" -f flv rtmp://endpoint3/live/stream3 \
-map "[v4]" -map "[a4]" -f flv rtmp://endpoint4/live/stream4

关键参数说明:

  • 无限循环实现:每个movie和amovie命令后加上loop=0,表示让媒体文件无限重复播放,无需额外脚本控制循环逻辑
  • 音视频同步保障:
    • setpts=N/FRAME_RATE/TB:重置视频流的时间戳,基于当前帧率生成连续的时间线,避免循环时出现跳帧或时间偏移
    • asetpts=N/SR/TB:对应重置音频流的时间戳,基于采样率生成连续时间线,确保和视频时间线完全对齐
  • 多端点推流:通过多次-map分别绑定每个视频流和对应的音频流,再指定不同的RTMP地址,实现一次命令完成4路独立推流

内容的提问来源于stack exchange,提问作者stevendesu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:10