全部指南

四种原因,看一眼屏幕就分得清

iPhone 或 CarPlay 上字幕不显示? 你看到什么,就说明了原因。

iPhone 或 CarPlay 上字幕不显示通常有四种原因,屏幕上的样子就能分辨。清单里有轨道却什么都不出现,是没有选中。出现方块或问号,是文件不是 UTF-8。光盘转出的文件一片空白,是 PGS 或 VobSub 这类图形字幕。菜单是空的,则是外挂字幕从来没配上。

找到对应的排查方法
产品示意图。使用体验取决于 App 与显示设备的兼容性。
  • 01

    清单里列出的字幕轨道,在你选中它之前一直闲着。

  • 02

    方块和问号是编码问题,不是播放器的问题。

  • 03

    字幕大小、字体和背景来自 iOS 的“设置”,不在播放器里。

使用方法

快速上手

  1. 01

    打开“音轨”与“字幕”

    Dashow 的选项菜单里列着这个视频提供的字幕轨道,以及跟它一起进来的文件。

  2. 02

    选中清单里的那条轨道

    轨道在你按名字挑中之前一直闲着,选好想要的语言,让画面继续走。

  3. 03

    对上你看到的现象

    什么都没有、方块和问号、空菜单,各自指向不同的原因。

  4. 04

    在“设置”里调大小

    字幕的大小、字体、颜色、描边和背景来自“设置”→“辅助功能”→“字幕与隐藏式字幕”。

字幕完全不出现,多半是一条都没选中。

在 Dashow 中打开选项菜单。“音轨”与“字幕”会按名称和语言列出视频自带的文字轨道,以及跟它一起进来的字幕文件。列在那里的轨道,不等于正在绘制的轨道。选中你要的那一条,下一句台词到的时候文字就出现了。

这是最常见的一种,也是最快排除的一种。压制组做的 MKV 常常带着三四条内封字幕轨道,一种语言一条,另外还有一条只覆盖外语对白的强制字幕。它们是彼此独立的轨道,你按名字在其中挑。选中之后看一句对白。接下来发生的事,就是这一页剩下的内容。

方块和问号是文件的编码,不是播放器。

盯住一个带重音符号或生僻字的词。如果它变成方块、问号或一串乱码,说明这个字幕文件存的不是 UTF-8。SubRip 自己不声明编码,所以一份存成 Windows-1252, GBK, GB18030 或 Big5 的 .srt,交给渲染器的字节会被读成另外一些字符。

要改的是文件,不是播放器里的设置。用纯文本编辑器打开这个 .srt,把编码设成 UTF-8 重新保存,再放一遍视频。WebVTT 完全绕开了这个问题,因为规范要求每一个 .vtt 文件都是 UTF-8,这也是同样的台词存成 .vtt 就干净、存成 .srt 却不行的原因。

PGS 和 VobSub 轨道是一张张写着字的图。

蓝光转出的文件把字幕存成 PGS,DVD 转出的文件存成 VobSub。两者都把每一句存成带起止时间的位图,而不是字符。Matroska 把它们都归在轨道类型 17(字幕)之下,靠 codec ID 区分,所以一个 .mkv 里可以有一条内封字幕轨道,而文字渲染器在它里面找不到可以画的东西。

这是内封的图形字幕,不是压进画面的硬字幕:它在菜单里选得到,只是没有文字可画。字幕渲染器画的是文字。光盘转出的文件想要字幕,出路是一条文本轨道:同一部电影的 .srt 或 .vtt,“音轨”与“字幕”会把它列在文件自带的那些轨道旁边。现象自己会说话:你按名字选了轨道,什么都没出现,而这个文件来自蓝光或 DVD。

菜单是空的,说明外挂字幕从来没配上。

第四种现象和第一种正好相反。“音轨”与“字幕”列着视频自带的轨道,却完全看不到你放在旁边的那个 .srt,或者干脆什么都没列。在共享上,文件是靠名字被找到的,名字和视频差得不够近,就会被当成属于另一个文件。被读取的只有 .srt 和 .vtt。

确切的命名规则、语言标记,以及文件在 SMBWebDAV 共享上该放哪里,属于 iPhone SRT 字幕那篇指南。字幕一次都没出现过,去那边。轨道列出来了却什么都不显示,回这一页。.ass 或 .sub 文件是另外的格式,和被读取的那两种不同。

字幕大小、字体和背景来自 iOS 的“设置”。

字幕出来了,却太小,或者颜色在明亮画面上看不清,这是样式问题而不是播放问题。导入的字幕跟随系统字幕样式。打开“设置”,进入“辅助功能”,再进“字幕与隐藏式字幕”,点“样式”。选一种现成样式,或者自己建一种,字体、大小、颜色、背景和文字描边都由它决定。

这项设置属于 iOS,不属于某一个播放器的菜单,所以你在那里建好的样式,就是导入字幕出现时的样子。设一次就够。字号更大、背景不透明,这一对在车载显示屏上最好读,因为画面比手里的手机离眼睛更远。再放一遍视频,新样式已经到位。

只有部分台词有字幕,那是一条强制字幕。

只在部分台词上出现的字幕,是强制字幕在做它该做的事。那条轨道只放观众必须看到的几句,不放其余对白,Matroska 会给它标上 FlagForced,让播放器即使在字幕总体关闭时也能选中它。打开“音轨”与“字幕”,改选整门语言那一行。

有两种情况不在这一页里。菜单从来没有列出过的字幕文件,问题在配对而不在显示,iPhone SRT 字幕那篇指南里有命名规则。如果视频根本不开始播放,先打开“详情”,它会从文件里读出时长、画面尺寸、视频编码与音频编码、文件大小和文件自带的标题,再去看 iPhone 视频格式那一页,以及讲 MKV 播放的那一页。

Apple:iPhone 上的字幕与隐藏式字幕W3C:WebVTT 网页视频文字轨道格式规范Matroska:技术元素规范

常见问题

你可能还想了解。

为什么我的字幕显示成方块或问号?

这个字幕文件不是 UTF-8。SubRip 自己不声明编码,所以一份用 Windows-1252, GBK, GB18030 或 Big5 写成的文件,会被逐字节读成别的东西。用纯文本编辑器打开这个 .srt,另存为 UTF-8。

MKV 里的内封字幕为什么不显示?

光盘转出的文件通常带的是 PGS 或 VobSub,它们把每一句存成位图而不是字符。字幕渲染器画的是文字。把同一部电影的 .srt 或 .vtt 放在视频旁边,它就会和文件自带的轨道一起列进“音轨”与“字幕”。

字幕太小了,去哪里调大?

在“设置”→“辅助功能”→“字幕与隐藏式字幕”→“样式”里。这个面板为整个 iOS 设定字幕的字体、大小、颜色、文字描边和背景,导入的字幕就按你在那里建好的样式绘制。改一次,再重新打开视频。

字幕文件根本没出现在菜单里,怎么办?

这属于配对问题,不是显示问题。在 SMB 或 WebDAV 共享上,文件是靠视频旁边的名字被找到的,而且只读取 .srt 和 .vtt。iPhone SRT 字幕那篇指南里有确切的命名规则和语言标记。