我想要一次性对视频文件做几项修改。
我需要向输入视频添加简介和结尾视频片段。这意味着要合并 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]
)。