FFmpeg添加字幕时指定字体不生效问题求助
FFmpeg添加字幕时指定字体不生效问题求助
嗨,我来帮你解决FFmpeg指定字幕字体不生效的问题~ 你遇到的情况大概率是字体名称/路径没写对,或者参数用法有误,下面给你几个具体的解决方向:
1. 先搞清楚字体的「真实名称」和路径
你现在写的Fontname=saveur-sans-bold.ttf是字体文件名,但FFmpeg识别的是字体的内部名称(不是文件名),而且如果字体没安装在系统默认字体目录,FFmpeg可能根本找不到它。
- 怎么看字体内部名称?
- Linux/macOS:打开终端,执行
fc-list | grep -i saveur,就能找到该字体对应的官方名称(比如可能是Saveur Sans Bold) - Windows:右键字体文件→「属性」→「详细信息」标签,找到「字体名称」字段就是内部名称
- Linux/macOS:打开终端,执行
- 如果字体没装在系统目录,直接用绝对路径指定字体文件会更可靠,不用依赖系统字体库。
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
相关产品推荐
相关产品推荐

