FFmpeg 可以同时进行 concat 和 drawtext 吗?

FFmpeg 可以同时进行 concat 和 drawtext 吗?

我可以在单独的命令中成功使用 FFmpeg 的 concat 过滤器和 drawtext 过滤器。

但这需要两次编码运行。

是否可以让这两个过滤器以链式方式工作,以便只进行一种编码?如何操作?

我有三个视频剪辑需要连接起来,并且希望在生成的视频上出现一个共同的文本。

答案1

尝试这个:

ffmpeg -i inputfile1 -i inputfile2 -y \
-filter_complex '[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a];\
[v]drawtext=fontsize=72:fontcolor=White:fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf:text=Text Line To Render:x=(w)/2:y=(h)/2[o]'\
-map '[o]' -map '[a]' ...other encoding parameters... outputfile

请注意,[v][a]只是标签——您也可以使用[p][q],这样也可以。只有流 0 转到第一个标签,流 1 转到第二个标签。所以我假设流 0 是视频。

您必须确保inputfile1和中的流inputfile2具有相同的顺序。然后我们将视频流的输出作为输入传递给 drawtext 过滤器,方法是:[v]drawtext=....

现在,此输出[o]在参数末尾标记为drawtext。通过说-map [o],我们使用来自的输出drawtext将其转发到您的其他编码参数。

我使用的字体路径来自 OpenSUSE。您的可能有所不同。

相关内容