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

FFmpeg循环播放视频序列直至音频结束的命令修复请求

FFmpeg循环视频并匹配音频时长的修复方案

问题

需要实现视频按0.mp4→1.mp4→2.mp4顺序循环播放,直到音频文件结束;原命令播放完3个视频后停留在第3个视频,无法继续循环。

修复后的完整命令

ffmpeg -y -i "video\0.mp4" -i "video\1.mp4" -i "video\2.mp4" -i audio.m4a \
-filter_complex "
# 让每个视频源无限循环
[0:v]loop=loop=-1:size=1[v0];
[1:v]loop=loop=-1:size=1[v1];
[2:v]loop=loop=-1:size=1[v2];
# 0→1的转场(保留原命令参数)
[v0][v1]xfade=transition=wipeleft:duration=1:offset=9[v01];
# 1→2的转场(保留原命令参数)
[v01][v2]xfade=transition=wipeleft:duration=1:offset=18[v012];
# 2→0的转场,形成循环链路(offset按原命令节奏设置,若视频时长不同需调整)
[v012][v0]xfade=transition=wipeleft:duration=1:offset=27[vloop];
# 截取与音频时长完全匹配的视频片段
[vloop]trim=duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 audio.m4a)[v];
" \
-map "[v]" -map 3:a -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac ./out_fade_loop.mp4

关键调整说明

  • 循环视频源:通过loop=-1:size=1让每个视频无限重复,保证循环时能重新调用原视频文件
  • 补全循环转场:新增2.mp4→0.mp4的转场逻辑,形成完整的循环播放链,offset=27是按原命令的9秒视频+1秒转场节奏计算的,若你的视频时长不同,需对应修改这个值
  • 同步音频时长:用ffprobe自动读取音频时长,再通过trim滤镜截取对应长度的循环视频,确保视频和音频完全同步

内容的提问来源于stack exchange,提问作者Khuê Bùi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:08:33