ffmpeg使用文本视频创建空白屏幕

时间:2014-03-28 10:24:10

标签: video text ffmpeg

我想制作一个由一些文字组成的视频。视频只有0.5秒长。背景应该是一些颜色,我能够从照片创建这样的视频,但无法在任何地方找到如何在没有照片的情况下完成此操作,只需使用文本来创建此类视频。

你能帮帮我吗?提前致谢

1 个答案:

答案 0 :(得分:39)

将文字添加到纯色背景

enter image description here

使用color video source filterdrawtext video filter

ffmpeg -f lavfi -i color=c=blue:s=320x240:d=0.5 -vf \
"drawtext=fontfile=/path/to/font.ttf:fontsize=30: \
 fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text='Stack Overflow'" \
output.mp4

文字后面有一个透明框

另一个示例,文本后面有一个白色框,不透明度为25%,带有5像素填充:

enter image description here

ffmpeg -f lavfi -i color=c=red:s=320x240:d=0.5 -vf \
"drawtext=fontfile=/path/to/font.ttf:fontsize=30: \
 box=1:boxborderw=5:boxcolor=white@0.25: \
 fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text='Stack Overflow'" \
output.mp4

多行

enter image description here enter image description here
使用多个drawtext实例(左图)使两条线居中更容易。右图来自外部文件和换行符示例。

您可以将两个drawtext过滤器链接在一起,或使用textfile选项引用外部文本文件,或在命令中添加换行符。

多个drawtext个实例

ffmpeg -f lavfi -i color=c=green:s=320x240:d=0.5 -vf \
"drawtext=fontfile=/path/to/font.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h-text_h)/2:text='Stack', \
 drawtext=fontfile=/path/to/font.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h+text_h)/2:text='Overflow'" \
output.mp4

外部文本文件

文本文件text.txt的内容如下所示:

Stack
Overflow

ffmpeg命令:

ffmpeg -f lavfi -i color=c=green:s=320x240:d=0.5 -vf \
"drawtext=fontfile=/path/to/font.ttf:fontsize=30: \
 fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:textfile=text.txt" \
output.mp4

命令行换行

ffmpeg -f lavfi -i color=c=green:s=320x240:d=0.5 -vf \
"drawtext=fontfile=/path/to/font.ttf:fontsize=30: \
fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text='Stack
Overflow'" \
output.mp4

输出图像而不是视频

如果您想要图像输出,请将output.mp4替换为-frames:v 1 output.png

替代方法

使用subtitles filter是另一种方法。