使用 ffmpeg 将视频的某些部分替换为另一个视频

使用 ffmpeg 将视频的某些部分替换为另一个视频

我有一段长达几个小时的 MP4 视频 (h264+AAC),我需要用另一个视频 (或仅音频) 替换其中的一小部分。原因是该文件是现场会议的录制,我需要在发布之前将其部分内容黑屏/静音。

我想使用 ffmpeg。我找到了很多有关 filter complex、concat 等的信息……但在深入研究所有这些之前,我想知道是否有更简单的方法。或者至少提示一下我应该使用 filter_complex 的哪些功能。

到目前为止,我都是在 Premiere Elements 中手动操作的,我会取出主视频并将另一个剪辑放入第二轨。我想让整个过程自动化……

答案1

假设你想在需要的时候关闭视频并静音,你的基本命令模板将是

ffmpeg -i video.mp4 -f lavfi -i "color=black:s=1280x720:r=25" -filter_complex \
"[0:v][1]overlay=enable='between(t,25,35)'[a]; \
 [a][1]overlay=enable='between(t,80,90)'[b]; \
 [b][1]overlay=enable='between(t,94,115)'[c]; \
 ...
 [n][1]overlay=enable='between(t,4805,4821)'[video]; \
 [0:a]volume=0:enable='between(t,25,35)', \
      volume=0:enable='between(t,80,90)', \
      volume=0:enable='between(t,94,115)', \
      ...
      volume=0:enable='between(t,4805,4821)'[audio]" \
-map "[video]" -map "[audio]"  output.mp4

颜色大小和速率应该与您的视频相同。

如果要用图像替换黑屏,请删除-f lavfi和颜色表达式并-loop 1在前面添加-i image.jpg

相关内容