太长不看:字幕要么是画面的一部分,要么是一条独立轨道。如果你能在播放器里把它关掉,说明它是一条可以提取的轨道;如果它牢牢贴在画面上关不掉,那就是烧录字幕,只有对视频画面做 OCR 才能把它找回来。文本轨道用 ffmpeg 就能瞬间导出,图像轨道(蓝光 PGS 和 DVD VobSub)在拉取轨道之后还需要 OCR,烧录字幕则需要对画面逐帧做 OCR。
如何判断我的字幕是哪种类型?
最快的判断方法只需要一个视频播放器:尝试把字幕关掉。如果能关掉,说明它是一条独立轨道,可以被提取;如果无论怎么操作它都留在画面上,那就是烧录字幕。这一个动作几乎能分辨你打开的每一个文件。
想要一个确切的答案,可以列出所有轨道。在装有 ffmpeg 的 Mac 上(brew install ffmpeg),运行:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language,title \
-of default=noprint_wrappers=1 input.mkv
如果你更喜欢图形界面,MediaInfo 也能显示同样的轨道列表。而当你真正提取出一条轨道后,得到的文件扩展名本身就是线索:.srt 代表文本,.sup 代表蓝光 PGS(一种图像格式),.idx/.sub 代表 DVD VobSub(同样是图像格式)。
决定一切的这一个测试:如果你能在播放器里把字幕关掉,它就是一条可提取的轨道;如果不能,它就已经烧录进画面,需要 OCR。
字幕的四种类型
抛开所有的文件扩展名和编码器名称,你会遇到的字幕其实只有四种类型:两种是文本,一种是存在轨道里的图片,还有一种是烙进视频本身的画面。
- 文本轨道(内嵌 SRT/ASS、MP4 tx3g、WebVTT):字幕本身就已经以真正的文本形式存储。它在播放器里可以开关,用 ffmpeg 或 mkvextract 几秒钟就能提取出来——不需要 OCR。这是最省心的情况,也是大家都希望自己遇到的那种。
- 图像轨道——PGS 和 VobSub:PGS(
.sup)是蓝光的字幕格式;VobSub(.idx/.sub)是 DVD 的字幕格式。它们都是独立的、可开关的轨道——但每一行字幕存储的是一张小小的文字图片,而不是文本本身。你需要先拉取这条轨道(用 mkvextract,或在 Mac 上用 Subler),再对图片做 OCR,才能得到可编辑的 SRT。 - 烧录字幕(硬字幕):文字直接烙进了视频的像素里——它就是画面的一部分,无法关闭。没有轨道可以拉取,因此任何解复用工具或转换工具都帮不上忙。你需要对视频画面做 OCR,把文字重新读出来。这正是 GeekLink 在 Mac 上所做的事。
- 隐藏字幕(CEA-608/708):内嵌在视频信号本身而不是字幕轨道中——常见于电视广播录像和部分 MP4/MOV 文件。它们可以开关,也是基于文本的,因此用 ccextractor 或 ffmpeg 就能提取,不需要 OCR。
四种类型中有三种是可开关的轨道;只有烧录字幕是画面本身的一部分——这条分界线决定了你是能直接提取,还是必须用 OCR。
不同类型该用哪种工具?
一旦你知道自己手上是哪一种类型,该用什么工具也就一目了然了。整个判断逻辑一屏就能看完:
| 类型 | 如何判断 | 如何提取 | 输出结果 |
|---|---|---|---|
| 文本轨道(SRT/ASS/tx3g/WebVTT) | 可开关;ffprobe 显示为文本编码 | ffmpeg 或 mkvextract | 瞬间得到 SRT |
| 图像轨道——PGS / VobSub | 可开关;提取后为 .sup 或 .idx/.sub | 先提取轨道,再做 OCR | SRT(OCR 之后) |
| 烧录字幕(硬字幕) | 无法关闭;轨道列表中不存在字幕轨道 | 对视频逐帧做 OCR | SRT(来自 OCR) |
| 隐藏字幕(CEA-608/708) | 广播/MP4/MOV 文件中可开关的字幕 | ccextractor(或 ffmpeg) | SRT |
四种类型里只有两种需要 OCR——图像轨道和烧录字幕——原因完全相同:文件里没有文本,只有图片。
为什么图像轨道和烧录字幕都需要 OCR
看起来是两个不同的问题,其实是同一个问题。PGS 或 VobSub 轨道把每一条字幕存成一张文字的位图图像;烧录字幕则被直接画进了视频自身的像素里。这两种情况下,文件中都没有任何文本可以直接复制出来——有的只是图片(图像轨道)或像素(烧录字幕)。
没有任何格式转换工具能把图片变成文本,只有 OCR 能读出来。这就是为什么把 PGS/VobSub 轨道转成 SRT,或是从视频中提取烧录字幕,本质上是一项 OCR 任务,而不是文件格式转换任务。
这也是很多人卡住的原因:他们尝试用 ffmpeg 或字幕转换工具,结果得到一个编码器报错,或者一个用文本编辑器打不开的 .sup 文件,于是以为哪里出了问题。其实什么都没坏——工具只是没办法凭空造出原本不存在的文本。
在 Mac 上逐一提取各类字幕
下面是在 macOS 上针对这四种类型的实际操作路径。
文本轨道——一条命令搞定,几秒钟就能完成:
# Extract the first subtitle track as SRT
ffmpeg -i input.mkv -map 0:s:0 subtitles.srt
图像轨道(PGS / VobSub)——先拉取轨道,再做 OCR。在 Mac 上最简单的方法是先把这条轨道渲染叠加到视频画面上一次,再对结果做 OCR:
# Render the image-subtitle track onto the video (one-time re-encode)
ffmpeg -i input.mkv -filter_complex "[0:v][0:s:0]overlay[v]" \
-map "[v]" -map 0:a? -c:a copy rendered.mp4
然后把 rendered.mp4 导入 GeekLink,运行 OCR 提取,就能得到一份干净、带时间轴的 SRT。
烧录字幕——没有轨道可以拉取,所以直接做 OCR。把视频导入 Mac 上的 GeekLink,运行 OCR 提取:它会直接从画面中读出字幕文字,导出一份时间轴正确的 SRT,全程在本地离线完成,不上传任何内容。
隐藏字幕——用 ccextractor(ccextractor input.mp4 -o captions.srt)或 ffmpeg 提取即可,不需要 OCR。
对于这两种需要 OCR 的情况——烧录字幕视频和渲染后的图像轨道——GeekLink 是本地 Mac 端的解决方案:离线运行 OCR 提取并导出带时间轴的 SRT,同时支持语音识别(Whisper)、40+ 语言的 AI 翻译(Claude、GPT-4o、DeepSeek)、内置编辑器,以及在需要一次处理一整季内容时的批量处理。完整的 OCR 操作教程见这里:如何用 OCR 提取烧录(硬编码)字幕。
常见问题
如何判断字幕是否是烧录字幕?
试着在播放器里把它关掉。如果无论选择或关闭哪条字幕轨道它都关不掉、始终留在画面上,那它就是烧录进画面的字幕。如果它消失了,说明这是一条可开关的轨道,可以被提取。
可以提取烧录字幕吗?
不能作为一条轨道来提取——因为没有轨道可以拉取,文字本身就是视频像素的一部分。你需要对视频画面做 OCR,把文字读进一份 SRT 里。在 Mac 上,GeekLink 会在本地完成这一过程,并导出带时间轴的 SRT。
什么是 .sup 文件?
这是蓝光的 PGS 字幕轨道。它是基于图像的——每一行字幕存储的是文字的图片,而不是文本本身——所以需要 OCR 才能变成可编辑的 SRT。
什么是 .idx/.sub 文件?
这是 DVD 的 VobSub 字幕轨道。和 PGS 一样,它把字幕存成图像而不是文本,所以同样需要 OCR 才能转换成 SRT。
Netflix 或流媒体的字幕是烧录字幕吗?
通常不是——它们是可以在播放器里开关的文本轨道。只有当有人在字幕显示的情况下对视频进行了录屏,才会把文字烙进录制的像素里,变成烧录字幕。