一次在 ffmpeg 中过滤并合并

一次在 ffmpeg 中过滤并合并

我想要一次性对视频文件做几项修改。

我需要向输入视频添加简介和结尾视频片段。这意味着要合并 3 个视频。我需要向输入视频(第二段)添加叠加图像,仅此而已。我怎样才能将它们合并为一行?

我设法通过两个步骤完成这些。首先是覆盖:

ffmpeg -i input.mkv -i image.png -filter_complex overlay=main_w-overlay_w-0:0 output_file.mkv

然后合并:

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv

答案1

我们可以使用临时命名的[v1]输出,overlay=main_w-overlay_w-0:0然后将其用作过滤器[v1]的输入concat

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -i image.png -filter_complex "[1:v][3:v]overlay=main_w-overlay_w-0:0[v1];[0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv


  • 以下部分应用覆盖阶段:
    [1:v][3:v]overlay=main_w-overlay_w-0:0[v1]
    覆盖的输出获得临时名称[v1]
  • [0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat
    用作[v1]输入concat(而不是[1:v:0])。

相关内容