FFmpeg drawtext - 无法从文件中加载字体[关闭]

Posted

技术标签:

【中文标题】FFmpeg drawtext - 无法从文件中加载字体[关闭]【英文标题】:FFmpeg drawtext - Could not load fontface from file [closed] 【发布时间】:2011-12-27 13:50:29 【问题描述】:

我尝试使用 drawtext 参数在带有 FFmpeg 的视频顶部添加简单的文本。每次我要这样做时,都会返回错误:

无法从文件 '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

【问题讨论】:

【参考方案1】:

字体文件的路径中不能有冒号,因为冒号在 ffmpeg 中充当关键分隔符。 I had the same problem。

尝试:

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

【讨论】:

2019 年为我工作。 你是救世主【参考方案2】:

在为drawtext 指定参数时,冒号“:”和反斜杠“\”具有特殊含义。所以你可以做的是通过将“:”转换为“\:”和“\”转换为“\\”来逃避它们。 您也可以将字体文件的路径用单引号括起来,以防路径包含空格。

这样你就有了

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

【讨论】:

2011 年的回答无效,但 adentum 的回答有效。 2015 年依然有用。 2017年依然有用 :D 所以我是考古学家 :) 2018 年依然有用!【参考方案3】:

我也遇到了 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!

【讨论】:

您的解决方案也有效。谢谢 使用正斜杠是引用字体文件的适当方式,包括在 Windows 上。为了在我的 Win10 机器上执行此操作,我转义了冒号,使用正斜杠并将路径括在单引号中,例如fontfile='C\:/WINDOWS/fonts/lucon.ttf'

以上是关于FFmpeg drawtext - 无法从文件中加载字体[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Ffmpeg drawtext 向视频中添加文字

FFmpeg 转换的 mp4 文件无法在 Quicktime 中加载

FFmpeg之Filter:drawtext-给视频叠加文本

FFmpeg之Filter:drawtext-给视频叠加文本

使用 ffmpeg drawtext 突出显示文本中的一些单词

FFmpeg中剪裁crop绘制文字drawtext叠加overlay滤镜在关于x坐标计算时的问题