是否可以使用 FFMPEG 创建“时间轴”?

Is it possible to create a ”timeline” using FFMPEG?

我知道可以使用以下命令获取文件的一部分: ffmpeg -ss 00:02:00.000 -i input.mp4" -t 00:00:05.000 out.mp4

但是否可以将多个视频与文字和其他效果结合起来? 我想从以下

创建一个输出

文件1.mp4: 从 00:02:00.000 读取到 00:02:05.000

文件2.mp4 从 00:00:00.000 读取到 00:01:30.000 插入叠加图像“logo.png”20 秒

File3.mp4 插入整个文件 插入从 00:00:10.000 到 00:00:30.000

的文本

它可以用 FFmpeg 完成,但它并不是真正的 'editor',因此命令将变得冗长、笨拙并且容易出现执行错误,您应用的输入剪辑和效果的数量越多。

也就是说,一种方法是使用 concat 过滤器。

ffmpeg -i file1.mp4 -i file2.mp4 -i file3.mp4 -loop 1 -t 20 -i logo.png \
-filter_complex "[0:v]trim=120:125,setpts=PTS-STARTPTS[v1];
        [1:v]trim=duration=90,setpts=PTS-STARTPTS[vt2];
        [vt2][3:v]overlay=eof_action=pass[v2];
        [2:v]drawtext=enable='between(t,10,30)':fontfile=font.ttf:text='Hello World'[v3];
        [0:a]atrim=120:125,asetpts=PTS-STARTPTS[a1];
        [1:a]trim=duration=90,setpts=PTS-STARTPTS[a2];
   [v1][a1][v2][a2][v3][2:a]concat=n=3:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

我没有指定任何编码参数,如编解码器或比特率等。假设您熟悉这些。此外,还没有为 overlay or drawtext 指定参数,例如 position..etc。请参阅文档以获取相关指南。