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

ffmpeg-python烧录SRT字幕时指定Roboto字体失效回退到默认字体

解决方案

根因说明

日志中显示字体文件已被成功加载,但最终fallback到系统默认字体,原因是ffmpeg的subtitles滤镜使用fontconfig做字体匹配时,匹配依据是字体内部注册的家族名,而非字体文件名。Roboto-Regular是字体文件的文件名,这款字体的实际家族名为Roboto,Regular是字重属性,直接填入FontName字段无法被fontconfig识别,因此触发了默认字体 fallback。

修复方案

  • 方案1:调整force_style的字体配置
    将style参数拆分字体名和字重属性,不要将字重写到FontName字段中:
style = "FontName=Roboto,FontSize=8,Bold=0"

其中Bold=0对应Regular字重,可正常匹配到Roboto家族的常规字重字体。

  • 方案2:直接指定字体文件路径(最稳定)
    跳过fontconfig的匹配逻辑,直接指定要使用的字体文件路径,不会出现匹配错误:
caption_file = "captions.srt"
style = "FontSize=8"
# 填Roboto-Regular.ttf的绝对/相对路径
font_file = "fonts-main/apache/Roboto-Regular.ttf"

(
    ffmpeg  
    .concat(video.filter("subtitles", caption_file, fontfile=font_file, force_style=style), audio, v=1, a=1)
    .output("my_video_w_subs.mp4")
    .run()
)
  • 方案3:查询系统内正确的字体家族名
    如果需要继续使用fontconfig匹配,可在终端执行以下命令查询当前系统内Roboto字体对应的正确家族名,替换到FontName字段即可:
    fc-list | grep "Roboto"

内容的提问来源于stack exchange,提问作者Sefi_k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:54:02