You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg添加字幕时指定字体不生效问题求助

FFmpeg添加字幕时指定字体不生效问题求助

嗨,我来帮你解决FFmpeg指定字幕字体不生效的问题~ 你遇到的情况大概率是字体名称/路径没写对,或者参数用法有误,下面给你几个具体的解决方向:

1. 先搞清楚字体的「真实名称」和路径

你现在写的Fontname=saveur-sans-bold.ttf是字体文件名,但FFmpeg识别的是字体的内部名称(不是文件名),而且如果字体没安装在系统默认字体目录,FFmpeg可能根本找不到它。

  • 怎么看字体内部名称?
    • Linux/macOS:打开终端,执行fc-list | grep -i saveur,就能找到该字体对应的官方名称(比如可能是Saveur Sans Bold)
    • Windows:右键字体文件→「属性」→「详细信息」标签,找到「字体名称」字段就是内部名称
  • 如果字体没装在系统目录,直接用绝对路径指定字体文件会更可靠,不用依赖系统字体库。

2. 修改FFmpeg命令的正确写法

根据上面的信息,给你两种可靠的命令写法:

写法一:直接指定字体文件路径(推荐,不受系统字体影响)

把字体文件的绝对路径加到fontfile参数里,这样FFmpeg会直接加载你指定的字体:

ffmpeg -y -i output.mp4 -vf "subtitles=testsrt.srt:fontfile=/你/的/字体/绝对路径/saveur-sans-bold.ttf:force_style='FontSize=24,PrimaryColour=&H03fcff,Alignment=10,Bold=1'" raw_output2.mp4

写法二:用系统已安装的字体(需确认内部名称)

如果已经把字体安装到系统了,把Fontname改成你查到的内部名称就行:

ffmpeg -y -i output.mp4 -vf "subtitles=testsrt.srt:force_style='Fontname=Saveur Sans Bold,FontSize=24,PrimaryColour=&H03fcff,Alignment=10,Bold=1'" raw_output2.mp4

3. 几个容易踩坑的小细节

  • 你之前写的Bold=5是无效的,FFmpeg里这个参数是布尔值,用1代表启用加粗,0代表禁用
  • PrimaryColour的格式是&HBBGGRR(BGR颜色顺序),你写的&H03fcff对应的是亮青色,如果颜色不符合预期可以调整顺序
  • 记得把整个滤镜参数用双引号包裹,避免shell解析特殊字符出问题

备注:内容来源于stack exchange,提问作者Anton Varshavsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:58:03