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

如何用FFmpeg实现叠加视频结束时终止合成并适配背景时长差异?

解决叠加视频与背景视频时长匹配问题

针对你遇到的两种场景,只需调整FFmpeg滤镜参数即可同时满足需求,具体命令如下:

ffmpeg -i background.mp4 -i overlay.mp4 -filter_complex "[0:v][1:v]overlay=eof_action=repeat[v]" -map "[v]" -map 1:a -c:a copy output.mp4

参数说明

  • eof_action=repeat:当背景视频流先结束(场景2),会持续重复背景的最后一帧,直到叠加视频的所有流(包括音频)结束;若叠加视频先结束(场景1),整个合成流程会随叠加视频终止,自动截断更长的背景视频。
  • -map "[v]":指定输出合成后的视频流。
  • -map 1:a:仅提取叠加视频的音频流(符合你“仅叠加视频带音频”的需求)。
  • -c:a copy:直接复制音频流,避免重新编码损失质量。

为什么之前的方法失效

你之前使用shortest=1时,该参数会强制合成时长等于视频流的最短时长。在场景2中,背景视频先结束,shortest=1会让视频合成提前终止,但叠加视频的音频流仍未结束,因此出现“视频冻结、音频继续”的问题。去掉shortest=1并改用eof_action=repeat,就能让合成时长由叠加视频的完整时长(含音频)主导,同时自动处理背景视频的时长适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:27:31