我需要用这个命令连接两个文件。
ffmpeg -ss 00:04 -to 1:15:28 -i 1_out.mp4 -ss 0:42 -to 10:28 -i 2.mp4 -lavfi concat=n=2:a=1 result.mp4
但是,我需要1.mp4
在连接之前进行缩放以获得1_out.mp4
.
ffmpeg -to 2:00 -i 1.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black" 1_out.mp4
如您所见,我有两个命令,并且1_out.mp4
在中间文件中。如何组合这两个命令以便不生成中间文件?
-filter_complex
是你的朋友我还没有测试完整的命令,但这就是想法。
[0:v:0]
是第一个文件的第一个视频流(请记住,ffmpeg 中的所有编号都从 0 开始),它是缩放和填充过滤器的输入(并且只有它),并且结果被命名[vscaled]
(您的选择)。然后与(第二个文件的第一个视频流)和音频流[vscaled]
一起用作 concat 过滤器的输入。[1:v:0]
结果为[outv]
级联视频流和[outa]
级联音频流命名(再次由您选择)。并[outv]
最终[outa]
映射到输出文件。否则,您可以使用管道进行调查(第一个 ffmpeg 将输出写入标准输出,然后通过管道传输到第二个 ffmpeg,后者从标准输入中读取其中一个文件。仍然是两个单独的命令,但没有中间文件)。