FFmpeg视频叠加带延迟:输出时长不符与叠加截断问题求助
解决FFmpeg叠加视频后输出时长不符的问题
正确命令
ffmpeg -i bg.webm -i ol.webm -filter_complex "[1:v]setpts=PTS-STARTPTS+60/TB[delayed_overlay];[0:v][delayed_overlay]overlay=x=10:y=10:enable='between(t,60,180)'[out_video]" -map "[out_video]" -map 0:a? -c:a copy output.webm
命令说明
[1:v]setpts=PTS-STARTPTS+60/TB[delayed_overlay]:将叠加视频的时间轴整体偏移60秒(1分钟),让它的起始帧对应主视频的第60秒,匹配需求的播放起点。overlay=x=10:y=10:enable='between(t,60,180)':指定叠加层在主视频的60秒到180秒(3分钟)之间显示,这段时长刚好覆盖2分钟的叠加视频,不会出现截断或提前结束的问题。-map "[out_video]" -map 0:a?:保留主视频的视频流和音频流(如果主视频有音频),确保输出完整的5分钟内容。-c:a copy:直接复制主视频音频,避免不必要的编码,提升处理速度。
你之前命令的问题分析
第一个命令:
- 偏移时间参数错误:
1/TB是偏移1秒而非1分钟,应改为60/TB。 - 未映射主视频音频流,且未明确以主视频时长为基准,导致FFmpeg默认以叠加视频时长输出,最终结果和叠加视频时长一致。
- 偏移时间参数错误:
第二个命令:
- 使用了较老旧的
movie滤镜,该滤镜在时间轴处理上不如多输入的filter_complex灵活,易出现流截断问题。 between(t, 05, 13)的时间范围仅8秒,远短于叠加视频的2分钟时长,导致叠加视频只播放前8秒就被截断。
- 使用了较老旧的
内容的提问来源于stack exchange,提问作者user13773537
相关产品推荐
相关产品推荐

