太长不看:视频字幕可分成四种实用类型。外挂字幕是你手上已有的 .srt/.ass 文件;内嵌软字幕是视频文件中的文字或图片轨道;烧录硬字幕被画进视频画面,只能用逐帧 OCR 还原;隐藏式字幕是视频信号中的 CEA-608/708 文本,可用 ccextractor 等工具直接提取。5 秒测试法:在播放器里试着关闭字幕;如果怎么都关不掉,它就是烧录字幕。
如果你试着「提取字幕」,工具却什么都没找到 —— 或者找到了却用不了 —— 几乎总是因为你面对的字幕和工具预期的不是同一种。先弄清你手上是四种中的哪一种,正确的方法就一目了然了。
我怎么判断自己是哪一种?
开关测试法。用 VLC(或任意播放器)打开视频,找到字幕开/关菜单。你能把字幕关掉吗?
- 它们消失了 → 字幕是一条独立轨道(内嵌),或者是外挂文件。可作为文字或图片提取。
- 不管你怎么弄它们都赖在屏幕上 → 字幕是烧录进画面里的(硬字幕)。没有轨道 —— 你需要用 OCR。
ffmpeg 线索。运行 ffmpeg -i yourvideo.mp4。如果它列出了一条 Subtitle: 流,你就有一条内嵌轨道。如果一条都没列出、但你在视频里明明能看到字幕,那它们就是烧录进画面里的(或者是一条 ffmpeg 没映射的隐藏式字幕 CC 流)—— 这也是为什么「提取字幕」命令什么都没返回。
类型 1 — 外挂字幕(.srt / .ass)
最简单的情况:字幕已经是视频旁边的一个独立文件,或者可以从字幕站下载。没有什么要提取的 —— 直接打开或编辑文件即可。如果你只需要把它翻译成另一种语言,把 .srt 导入翻译器并保留时间轴即可。
类型 2 — 内嵌 / 软字幕轨道(MKV,部分 MP4)
字幕是容器内部的一条流,所以可以无损地取出来。这里有两个子情况:
- 文字轨道(MKV 或 MP4 内的 SRT/ASS/SSA/WebVTT) → 在 Mac 上把视频导入 GeekLink:它会自动检测内嵌轨道,一键提取成干净的 SRT,无需 OCR 或重新转录。如果你不想装 App,mkvextract(MKVToolNix 的一部分)是一个免费的命令行替代方案。
- 图片轨道(DVD VobSub、蓝光 PGS/SUP) → 这些是文字的图片而不是文字流,所以需要一个基于 OCR 的字幕轨道工具把它们转成 SRT。GeekLink 的内嵌轨道提取只处理基于文字的轨道,不处理这种图片轨道的情况。
对于根本没有轨道的烧录文字 —— 上面两个工具都抓不到东西 —— 见下方类型 3。
类型 3 — 烧录 / 硬字幕(困难情况)
文字被永久地画进了每一帧 —— 没有轨道,没有开关。基于轨道的工具(包括 GeekLink 自己的内嵌轨道提取器和 mkvextract)都找不到东西可抓,因为没有字幕流可以指向它们。把文字还原出来的唯一办法是逐帧读取视频画面的 OCR。
- 在 Windows 上:VideoSubFinder 提取字幕帧,然后 Subtitle Edit 对图片做 OCR —— 这是两步流程。
- 在 Mac 上:GeekLink 一步搞定。你在字幕区域画一个框,它就把烧录的文字读成一份可编辑、时间同步的 SRT —— 一次处理一整个文件夹,本地、免费。
类型 4 — 隐藏式字幕(CEA-608/708)
隐藏式字幕不是普通字幕轨道,而是随视频信号一起保存的文本,常见于电视广播录像以及部分 MP4 或 MOV 文件,也可能包含说话人和声音说明。因为它本身就是文字,所以不需要 OCR;可使用 ccextractor,或在 ffmpeg 能识别该字幕流时直接提取。
隐藏式字幕在播放器里看起来可能和内嵌字幕一样,但提取方式不同。如果 ffmpeg 没有列出普通字幕流,先检查是否存在 CEA-608 或 CEA-708 数据,不要马上断定画面中的文字一定是烧录字幕。
快速决策表
| 你的情况 | 类型 | 这样做 |
|---|---|---|
| 视频旁边有一个 .srt 文件 | 外挂 | 直接打开或翻译它 |
VLC 能把字幕关掉;ffmpeg 显示一条 Subtitle: 流 | 内嵌(文字) | GeekLink(Mac)或 mkvextract |
| 关得掉,但它是 DVD/蓝光 | 内嵌(图片) | 图片轨道 OCR 工具 |
| 字幕关不掉 —— 卡在画面里 | 烧录 | 逐帧 OCR —— GeekLink(Mac) |
| 电视广播录像或带 CEA-608/708 数据的 MP4/MOV | 隐藏式字幕 | ccextractor 或 ffmpeg |
常见问题
我怎么知道我的字幕是不是硬字幕?
如果你在播放器里关不掉它们、它们一直卡在屏幕上,那就是烧录(硬字幕)。如果一个字幕开/关开关能把它们移除,那它们就是一条独立轨道。
能关掉烧录字幕吗?
不能 —— 它们是视频画面的一部分,所以没有播放器能把它们隐藏。你无法移除它们,但可以用 OCR 把文字读回成一份可编辑的 SRT。
为什么 ffmpeg 说「没有字幕轨道」?
因为字幕不是一条轨道 —— 它们是烧录进画面里的(或者是一条 ffmpeg 没映射的隐藏式字幕 CC 流)。烧录文字需要对视频帧做 OCR,而不是轨道提取。
软字幕和硬字幕有什么区别?
软字幕是一条独立、可开关的轨道(可作为文字或图片提取)。硬字幕 —— 硬编码 / 烧录 —— 被画进了画面,需要 OCR 才能还原。
有处理烧录字幕的 Mac 工具吗?
有 —— GeekLink 在 Apple Silicon Mac 上原生把烧录字幕 OCR 成可编辑的 SRT。它是从 geeklink.dev 免费直接下载(不是 Mac App Store),无需账号。
GeekLink 也能提取内嵌(软)字幕轨道吗?
能。GeekLink 在导入时检测基于文字的内嵌轨道(SRT、ASS、SSA、WebVTT),一键提取成干净的 SRT —— 无需 OCR 或重新转录。不支持基于图片的内嵌轨道(DVD VobSub、蓝光 PGS);那些需要专门的图片轨道 OCR 工具。
CEA-608 或 CEA-708 隐藏式字幕需要 OCR 吗?
不需要。隐藏式字幕是视频信号中的文本数据,可用 ccextractor 或 ffmpeg 提取。只有图片字幕轨道和烧录进视频像素的字幕才需要 OCR。
相关文章
披露:GeekLink 是我们自己的产品。它在 Mac 上既能提取内嵌(文字)字幕轨道,也能提取烧录(硬)字幕。对于内嵌图片轨道(DVD/蓝光),或者如果你不用 Mac,mkvextract 是处理文字轨道的免费命令行替代方案。