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


0

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

但这需要两次编码运行。

是否可以使这两个过滤器在链中一起工作,以便仅进行一种编码?怎么样?

我要连接三个视频片段,并且希望在生成的视频上出现一个普通文本。


视频的编解码器/编码设置是否不同?如果没有,您可以使用concat多路分配器或协议代替过滤器。
slhck

是的,很遗憾,视频的编码设置不同,我无法控制此设置。要加入他们,我必须使用concat过滤器。但是我无法弄清楚如何在一条语句中将concat过滤器和drawtext过滤器组合在一起。
fionasdad 2013年

请提供一些有关您输入内容的信息(完整的控制台输出):ffmpeg -i input1 -i input2 -i input3
llogan 2013年

我在Windows上。我如何产生您希望看到的完整控制台输出?
fionasdad 2013年

:)谢谢,但是我知道如何将FFmpeg的输出定向到文本文件。我的意思是我不知道如何在三个输入文件上运行FFmpeg,以便它生成所需的报告。我试过了:ffmpeg -i input1 -i input2 -i input3。这样做时,我用实际的三个视频替换了输入。唯一的输出是我未提供输出的错误消息。那么,完整的控制台输出是什么?谢谢。
fionasdad 2013年

Answers:


3

尝试这个:

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。您的可能会有所不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.