我想创建一个包含一些文本的视频.视频只有0.5秒长.背景应该只是一些颜色,我可以从照片创建这样的视频,但无法找到任何地方如何可以做到没有照片,只是使用文本来创建这样的视频.
你可以帮我吗 ?提前致谢
解决方法
将文本添加到纯色背景
使用color
video source filter和drawtext
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
> d = 0.5将产生0.5秒的持续时间.
>见list of supported color names and how to use a hex code to set color.
文字背后有一个透明框
另一个例子是在25%不透明度的文本背后有5个像素填充的白框:
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
多行
将两行与多个绘图文本实例对齐(左图)更为容易.右图是从外部文件和换行符的例子.
您可以链接两个绘图文本过滤器,或使用textfile选项引用外部文本文件,或在命令中添加换行符.
多个绘图文本实例
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
外部文本文件
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
输出图像而不是视频
如果你想要一个图像输出,而不是用-frames:v 1 output.png替换output.mp4.
替代方法
使用subtitles
filter是另一种方法.