我们如何在drawtext过滤器中指定样式。例如,以常规字体绘制“Hello”,但应为粗体、斜体和下划线。这可能吗?
也许这个答案已经晚了,但是,来自 FFMPEG 文档:http://ffmpeg.org/ffmpeg-all.html
使用fontconfig设置字体。请注意,冒号必须是 逃脱了。
drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
当然,您必须配置 fontconfig 文件,在字体位置设置您的 所需字体(注意拥有您需要的所有样式),然后使用字体系列名称后跟 ' 运行绘图文本:风格='.
示例:
-vf "drawtext='fontfile=DejaVuSans\:style=ExtraLight:text=FFmpeg'"
这在控制台和 php shell exec 命令中对我有用。您可以使用任何字体样式,只要(对于您选择的样式和字体系列),字体目录中有一个遵循以下规则的字体文件: FontFamilyName-StyleName 。 我真的希望这有帮助!
您可以指定目标字体:
drawtext= fontfile=fonts/path/Arial-Bold.ttf :text=FFmpeg
字体系列应该有适合您要使用的每种样式的正确文件。
Windows 用户
对我来说,这在 Windows 中有效,你必须使用 fontfile 和下一个带有 3 个反斜杠的转义符,然后使用样式,例如:
fontfile=c\:\Windows\fonts\bahnschrift.ttf\:style='粗体'
*您还必须转义字体文件的路径
ffplay -f lavfi -i "color=color=blue:s=500x300,drawtext=text='Teste 1 (default)':fontfile='c\:\\windows\\fonts\\bahnschrift.ttf':fontsize=62:x=(W-tw)/2:y=20:fontcolor=white:borderw=3:bordercolor=black,drawtext=text='Teste 2 (italic)':fontfile='c\:\\windows\\fonts\\bahnschrift.ttf'\\\:style='italic':fontsize=62:x=(W-tw)/2:y=20+th+20:fontcolor=white:borderw=3:bordercolor=black,drawtext=text='Teste 3 (bold)':fontfile='c\:\\windows\\fonts\\bahnschrift'\\\:style='bold':fontsize=62:x=(W-tw)/2:y=20+20+20+th+th:fontcolor=white:borderw=3:bordercolor=black"
通过使用字幕而不是绘图文本,我还能够生成下划线和删除线文本:
ffplay -f lavfi -i "color=color=blue:s=500x300,subtitles='underline.txt':force_style='fontsize=50,bold=1,underline=1,alignment=6,primarycolour=&Hffffff&,outlinecolour=&h000000&,fontname='arial black,subtitles='strikethrough.txt':force_style='fontsize=50,strikeout=1,marginv=80,alignment=6,primarycolour=&Hffffff&,outlinecolour=&h000000&,fontname='arial black"
下划线.txt:
001
00:00:00.000 --> 02:00:00.000
test 1 (underline)
删除线.txt:
001
00:00:00.000 --> 02:00:30.000
test 2 (Strikethrough)