FFmpeg 是个强大的跨平台软件,在Mac下使用的时候要稍注意一下。我这记录一下自己的摸索过程。
我想在一个 MP4 文件里面添加字幕,不是把 .srt 字幕文件集成到 MP4 文件里,然后在播放器里选择字幕,这种集成字幕比较简单,速度也相当快:
1
| ffmpeg -i input.mp4 -i subtitles.srt -c:s mov_text -c:v copy -c:a copy output.mp4
|
我希望字幕直接显示出来,其实也不难,两句命令而已:
1
2
| ffmpeg -i subtitle.srt subtitle.ass
ffmpeg -i input.mp4 -vf ass=subtitle.ass output.mp4
|
但在 Mac 下处理不成功,我看到有错误信息:
1
2
3
| Fontconfig error: Cannot load default config file
[Parsed_ass_0 @ 0x102d00000] No usable fontconfig configuration file found, using fallback.
Fontconfig error: Cannot load default config file
|
看来是 Fontconfig 出了问题,我的解决方案是:
一、在~/.bashrc 最后添加一句:
1
| export FONTCONFIG_PATH=/opt/X11/lib/X11/fontconfig
|
使之有效:
二、编辑 /opt/X11/lib/X11/fontconfig/fonts.conf
在字体目录添加 /Library/Fonts
1
2
3
4
5
6
7
8
| :
<!-- Font directory list -->
<dir>/opt/X11/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir>~/.fonts</dir>
<dir>/Library/Fonts</dir>
:
|
再次运行添加 ass 字幕的命令就可以了,简单吧。市面上那么多视频处理软件,我估计都是FFmpeg加了个UI而已,如果命令行用得好,效率会高很多的。
更多 fontconfig 的信息可以参考这里。