FFmpeg drawtext - 无法从文件加载字体。

12

我尝试使用FFmpeg的drawtext参数在视频上方添加简单文本。每次执行此操作时,都会返回错误:

无法从文件'arial.ttf'中加载字体:无法打开资源

为了指示字体的位置,我使用了以下方法:

ffmpeg -i C:\Test\rec\vid_1321909320.avi -vf drawtext=fontfile=arial.ttf:text=test -sameq vid_1321909320.flv
ffmpeg -i C:\Test\rec\vid_1321909320.avi -vf drawtext=fontfile=C:\Windows\Fonts\arial.ttf:text=test -sameq vid_1321909320.flv

所有的方法都失败了。有人在使用ffmpeg添加文本方面有经验吗?

FFMPEG version: N-34549-g13b7781 build on Nov 6 2011
3个回答

23

如果在字体文件的路径中使用冒号,会导致ffmpeg将其视为键分隔符而出错。 我曾经遇到相同的问题

尝试:

ffmpeg -i C:\Test\rec\vid_1321909320.avi -vf drawtext=fontfile=/Windows/Fonts/arial.ttf:text=test -sameq vid_1321909320.flv

19

在指定drawtext参数时,“:”和“\”具有特殊含义。因此,您可以通过将“:”转换为“\:”并将“\”转换为“\\”来对它们进行转义。

此外,如果路径中包含空格,您可以使用单引号将字体文件的路径括起来。

因此,您将会有:

ffmpeg -i C:\Test\rec\vid_1321909320.avi -vf drawtext=fontfile='C\:\\Windows\\Fonts\\arial.ttf':text=test vid_1321909320.flv

2
2011年的答案不可行,但adentum的答案可行。 - Jaex
1
2015年仍然有用。 - DrHaze
3
在2017年仍然有用。 - MarianD
所以我是一个考古学家 :) - adentum
2
仍然在2018年有用! - Brad
显示剩余4条评论

5

我也遇到了ffmpeg无法识别Windows路径的问题。最后,我把字体Arial.ttf放在与输入文件相同的文件夹中,问题得以解决。

[drawtext @ 03C66EA0] Key '/Windows/Fonts/Arial.ttf: text' not found.
[drawtext @ 03C66E00] Error parsing options string: 'fontfile=C:/Windows/Fonts/Arial.ttf: text=Test Text:x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2'
Error initializing filter 'drawtext' with args 'fontfile=C:/Windows/Fonts/Arial.ttf: text=Test Text:x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2'
Error opening filters!

3
在引用字体文件时,使用正斜杠是适当的方式,包括在Windows系统中。在我的Win10机器上,我通过转义冒号、使用正斜杠并将路径用单引号括起来来实现这一点,例如fontfile='C\:/WINDOWS/fonts/lucon.ttf' - Chris Woods

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接