FFmpeg 可以同时连接和绘制文本吗?

fio*_*dad 2 video ffmpeg

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

但这需要两次编码运行。

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

我尝试连接三个视频剪辑,并且我希望在生成的视频上显示一个通用文本。

Raj*_*jib 5

尝试这个:

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
Run Code Online (Sandbox Code Playgroud)

请注意,[v]and[a]只是标签——你可以很好地使用[p]and [q],那也很好。只有流 0 转到第一个标签,而流 1 转到第二个标签。所以我假设流 0 是视频。

你必须确保在流inputfile1,并inputfile2具有相同的顺序。然后我们通过说将视频流的输出作为输入传递给 drawtext 过滤器[v]drawtext=....

这个输出现在被标记为[o]drawtext参数的末尾。也就是说-map [o],我们使用 from 的输出drawtext传递给您的其他编码参数。

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