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

FFmpeg drawtext滤镜无法通过绝对路径加载指定字体的问题求助

FFmpeg drawtext滤镜无法通过绝对路径加载指定字体的问题求助

各位大佬好,我最近写了个Python脚本,用来生成一段简单视频——就是用一段MP3音频搭配屏幕上的固定文本。现在我想加个功能,让用户可以指定字体类型来格式化视频里的文本,但折腾了好久都没搞定,想请大家帮我看看问题出在哪。

先贴一下我的核心代码:

import subprocess
from pathlib import Path
from myproject import AUDIOS_FOLDER, FONTS_FOLDER

font_name = "Montserrat-LightItalic"
font_path = str(FONTS_FOLDER / font_name) + '.ttf'

assert Path(font_path).is_file()

ffmpeg_command = [
    'ffmpeg',
    '-y',
    '-f', 'lavfi',
    '-i', 'color=c=gray:s=640x480:d=4',
    '-i', f'{str(AUDIOS_FOLDER / "i_have_a_cat.mp3")}',
    '-vf', f'drawtext=text=\'I have a cat\':fontsize=24:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:fontfile=\'{font_path}\'',
    str(ffmpeg_poc_path / 'output.mp4')
]

subprocess.run(ffmpeg_command)

遇到的问题

不管我怎么设置fontfile参数,它都好像没生效——加不加这个参数,生成的视频文本字体都是默认的,完全没变化。

我已经尝试过的方法,全都没用:

  • 直接用系统默认字体的文件名,比如fontfile=\'arialbd.ttf\'或者fontfile=\'sseriff.ttf\',这些字体确实存在于我的C:\Windows\Fonts目录里,但就是不生效
  • 各种引号组合都试过了:
    :fontfile='sseriff.ttf'
    :fontfile=\'sseriff.ttf\'
    :fontfile="sseriff.ttf"
    :fontfile=\"sseriff.ttf\"
    
  • 按照网上的建议转义路径格式:把反斜杠替换成双反斜杠,还把C:改成C\:,比如转义后的路径是C\:\\user\\OneDrive\\Desktop\\myproject\\fonts\\Montserrat-LightItalic.ttf,依然没用

目前唯一能生效的方法,但不符合需求

后来我把字体文件复制到了脚本的工作目录里,直接写fontfile=arialbd.ttf(注意这里不能加引号,加了就失效),这样倒是能正常加载指定字体了。但我需要的是通过绝对路径加载任意位置的字体,这个方法没法满足我的需求。

比如下面这段用绝对路径的代码还是不行:

font_path = FONTS_FOLDER / "arialbd.ttf"
assert font_path.is_file()
font_path_str = str(font_path)
# 路径示例:c:\user\OneDrive\myproject\fonts\arialbd.ttf

ffmpeg_command = [
    'ffmpeg',
    '-y',
    '-f', 'lavfi',
    '-i', 'color=c=gray:s=640x480:d=4',
    '-i', f'{str(audios_path / "i_have_a_cat.mp3")}',
    '-vf', f'drawtext=text=\'I have a cat\':fontsize=24:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:fontfile={font_path_str}',
    str(ffmpeg_poc_path / 'output.mp4')
]

我也试过再次转义路径里的反斜杠和C:,还是没效果。

有没有大佬知道这到底是哪里出问题了?怎么才能让drawtext滤镜通过绝对路径正确加载字体呢?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:15:29