打开主菜单

更改

创建页面,内容为“== 废话 == 要将字幕从文本变成可以显示出来的文字,[https://zh.wikipedia.org/wiki/%E5%AD%97%E4%BD%93 字体]是必须的,播放器在显示独...”
== 废话 ==

要将字幕从文本变成可以显示出来的文字,[https://zh.wikipedia.org/wiki/%E5%AD%97%E4%BD%93 字体]是必须的,播放器在显示独立字幕文件或字幕流的时候需要在电脑中找到合适的字体,才能将字幕渲染到屏幕上, FFmpeg 在将字幕编入视频流的时候也是如此。

FFmpeg 在找字体的时候,会使用一个叫做 [https://zh.wikipedia.org/wiki/Fontconfig Fontconfig] 的程序,这个程序是为[https://zh.wikipedia.org/wiki/%E7%B1%BBUnix%E7%B3%BB%E7%BB%9F 类 Unix] 系统设计的,所以在 GNU/Linux 以及 Mac OS X 上,它工作地很好。

但是, Microsoft Windows 没有实现大部分的 [https://zh.wikipedia.org/wiki/POSIX POSIX] 接口,所以 Fontconfig 无法在它上面正常的工作,进而 FFmpeg 无法找到字体,将字幕编入视频流也是无从谈起。

{{方框|borderColor=#2196F3|background=#E3F2FD|heading=安利|content=虽然这篇文章将指导你解决 Fontconfig 在 Microsoft Windows 上工作不正常的问题,但是为了你的精神、财富和智慧,[https://program-think.blogspot.com/2013/10/linux-newbie-guide.html 切换到 GNU/Linux] 才是最佳的选择。}}

== fonts.conf ==

<code>fonts.conf</code> 是 Fontconfig 用来存储其配置的文件,在 GNU/Linux 下它已经存在与系统中了,而在 Microsoft Windows 下没有。

因为没有,所以我们就得自己写一个,好在已经有现成的了。将[[/fonts.conf|我已经准备好的文件]]的内容复制并保存为文本文件,命名为 <code>fonts.conf</code> 。将这个文件放到 <code>C:\\Users\用户名\</code> 里,比如如果你的用户名叫 Alex ,就放到 <code>C:\\Users\Alex\</code> 里面。

{{提示|在 Windows XP 中,文件应该放到 <code>C:\\Documents and Settings\用户名\</code> 里面。}}

[[文件:Fw-c-users-username.png|600px]]

接下来,在“计算机”( Windows 7 )或“这台电脑”( Windows 8 或更高版本)上右键,选择“属性”。在出来的窗口中的左边,点击“高级系统设置”(图中红框部分)。

{{提示|在 Windows XP 中,在“我的电脑”上右键后将直接打开“系统属性”窗口。}}

[[文件:Fw-system.png|800px]]

在出来的“系统属性”窗口中,选择“高级”选项卡,再在其中点击“环境变量”按钮。

[[文件:Fw-advanced-system-props.png|600px]]

在“环境变量”窗口中的上半部分(“ XX 的用户变量”),点“新建”按钮。

[[文件:Fw-environ-var.png|600px]]

在“变量名”中,写 <code>FONTCONFIG_FILE</code> ,在“值”中写上 <code>fonts.conf</code> 文件的路径,也就是 <code>C:\\Users\用户名\fonts.conf</code> 。

{{提示|在 Windows XP 中,路径应该是 <code>C:\\Documents and Settings\用户名\fonts.conf</code> 。}}

[[文件:Fw-new-var.png|600px]]

点“确定”,再点“确定”,再点“确定”。这样就完成了。

== 后果 ==

以后再执行 FFmpeg 的时候,会停顿一段时间,这段时间是 Fontconfig 在加载字体。时间长短因字体数量而异。

这段停顿的时间确实很令人不爽,但是没办法,谁叫 Windows 不支持 POSIX 接口呢。