在 ffmpeg 中替换视频的一部分(不替换音频)

在 ffmpeg 中替换视频的一部分(不替换音频)

我有一个视频文件,它被分成三个不同的部分。我想用另一个剪辑替换这个视频的中间部分。但是,我仍然想保留原始视频的音频。我可以在 ffmpeg 中做到这一点吗?

以下是我的要求:

  1. 原始视频长60秒。
  2. 我想要替换的部分是25到45秒。
  3. 我想保留 25 到 45 秒的原始音频,并用其他片段替换视觉部分。
  4. 生成的视频也将是 60 秒长。但是,新视频的长度将为 25 到 45 秒。

谢谢。

答案1

您可能需要执行三个单独的步骤:

  1. 将原始输入分成三个剪辑(0-25、25-45、45-60)
  2. 修改中间的剪辑以使用原始音频和自定义视频(见下文)
  3. 连接所有三个剪辑

为了获得包含原始音频和新视频的中间剪辑,你可以简单地使用-地图选项:

ffmpeg -i original.mp4 -i newvideo.mp4 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 newmiddle.mp4

答案2

简单的方法是使用设定点过滤器添加延迟new.mp4,然后覆盖过滤enable选择new.mp4放置original.mp4

ffmpeg -i original.mp4 -i new.mp4 -filter_complex "[1]setpts=PTS-STARTPTS+25/TB[fg];[0][fg]overlay=enable='between(t,25,45)'[v]" -map "[v]" -map 1:a -c:a copy output.mp4
  • 假设new.mp4其宽度 x 高度与 相同original.mp4。如果不是,则添加 scale、scale2ref、pad 和/或 crop 滤镜。

  • 如果您希望new.mp4在叠加时以自己的 25 秒时间戳而不是 0 时间戳播放,请删除 setpts。

相关内容