太長不看:MKV 檔案裡的字幕分為兩種本質不同的形式,用哪種擷取方法取決於你手上是哪一種。 如果 MKV 裡含有文字字幕軌道(SRT 或 ASS),一條免費指令——ffmpeg 或 MKVToolNix 的 mkvextract——幾秒鐘就能把字幕檔案存出來。但有兩種常見情況裡根本沒有文字:圖像字幕軌道(PGS 和 VobSub,是藍光和 DVD 擷取的標準格式),以及直接燒錄進畫面裡的字幕。這兩種都需要 OCR。本文涵蓋全部四種情況,附上準確的指令,先從一個 10 秒的檢查開始,幫你判斷自己屬於哪一種。
怎麼查看一個 MKV 檔案裡有哪些字幕軌道?
在擷取任何東西之前,先把字幕串流列出來。裝好 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
或者,如果你已經在用 MKVToolNix,mkvmerge -i input.mkv 會用更直白的方式列印同樣的資訊。輸出裡的 codec_name 就說明了一切:
| codec_name | 它是什麼 | 如何得到 SRT |
|---|---|---|
subrip | 純文字字幕(SRT) | 一條 ffmpeg 指令——幾秒搞定 |
ass | 帶樣式的文字字幕(動畫裡常見) | 一條 ffmpeg 指令;轉成 SRT 會丟掉樣式 |
hdmv_pgs_subtitle | 藍光圖像字幕(文字的圖片) | 需要 OCR |
dvd_subtitle | DVD 圖像字幕(VobSub) | 需要 OCR |
| 完全沒有任何輸出 | 沒有字幕軌道——如果看得到字幕,那是燒錄進畫面裡的 | 對影片本身做 OCR |
如果 ffprobe 列出的是 subrip 或 ass,擷取免費且只要幾秒;如果列出的是 hdmv_pgs_subtitle 或 dvd_subtitle,那這條軌道裝的是文字的圖片,不用 OCR 任何工具都無法把它變成 SRT。 這個區別是關於 MKV 字幕最常見的困惑點,也決定了後面的一切。
怎麼用 ffmpeg 從 MKV 擷取 SRT 字幕?
對於文字軌道,ffmpeg 是最快的方式,在 Mac、Windows 和 Linux 上用法都一樣:
# 把第一條字幕軌道匯出為 SRT
ffmpeg -i input.mkv -map 0:s:0 subtitles.srt
# 匯出第二條字幕軌道(0:s:1 = 第二條,以此類推)
ffmpeg -i input.mkv -map 0:s:1 subtitles.srt
# 按語言而非位置選擇軌道
ffmpeg -i input.mkv -map 0:s:m:language:eng english.srt
# 保持 ASS 軌道的原始格式(保留樣式)
ffmpeg -i input.mkv -map 0:s:0 -c copy subtitles.ass
有兩點值得了解。第一,把 ASS 軌道轉成 SRT 會悄悄丟掉所有樣式——字型、顏色、定位、卡拉 OK 效果——因為 SRT 格式無法表達這些;如果你需要樣式,就改成匯出為 .ass。第二,-map 0:s:0 只對字幕串流計數,所以這個編號跟 ffprobe 列印的串流索引不是同一個數字。
ffmpeg 在擷取時會在字幕格式之間做轉換,這就是為什麼 ffmpeg -i input.mkv -map 0:s:0 subtitles.srt 對 SRT 和 ASS 軌道都有效——但它無法把圖像字幕軌道(PGS/VobSub)轉成文字,如果你硬要試,會以編碼器報錯告終。
怎麼用 MKVToolNix(mkvextract)擷取字幕?
MKVToolNix(免費,mkvtoolnix.download,或 brew install mkvtoolnix)會以原始格式逐位元精確地擷取軌道。先列出軌道 ID,再按 ID 擷取:
# 列出軌道及其 ID
mkvmerge -i input.mkv
# 軌道 ID 0: 影片 (HEVC) / 軌道 ID 1: 音訊 (AAC) / 軌道 ID 2: 字幕 (SubRip/SRT)
# 把軌道 2 匯出為 SRT
mkvextract input.mkv tracks 2:subtitles.srt
# 一次匯出多條軌道
mkvextract input.mkv tracks 2:english.srt 3:spanish.srt
有一個幾乎絆倒所有搜尋這個問題的人的坑:MKVToolNix 圖形介面沒有擷取功能——擷取只以命令列工具 mkvextract 的形式提供。圖形介面負責的是多工混流(把軌道裝進去)、編輯標頭資訊和分割檔案,所以在裡面找「extract」按鈕,按設計就是找不到的。
你寫的副檔名必須與軌道的編解碼器相符:SubRip 用 .srt,ASS/SSA 用 .ass,PGS 用 .sup,而對於 VobSub,mkvextract 會寫出一對 .idx + .sub 檔案。這就引出了擷取出來的檔案根本不是文字的那種情況。
如果字幕軌道是 PGS 或 VobSub(圖像格式)怎麼辦?
藍光擷取幾乎總是帶 hdmv_pgs_subtitle 軌道,DVD 擷取則帶 dvd_subtitle(VobSub)。這些軌道把每一條字幕存成一張算繪好的圖片,由播放器疊加在影片上——裡面沒有任何文字。擷取出來會得到一個 .sup 或 .idx/.sub 檔案,字幕編輯器和影片平台都無法把它當作文字讀取。
把 PGS 或 VobSub 字幕轉成 SRT 一定需要 OCR,因為這些「字幕」是文字的點陣圖圖像,而不是文字。 在 Mac 上,務實的做法是先用 ffmpeg 把軌道算繪到影片上一次,然後對結果做字幕 OCR:
# 把圖像字幕軌道燒錄到影片上(一次性重新編碼)
ffmpeg -i input.mkv -filter_complex "[0:v][0:s:0]overlay[v]" \
-map "[v]" -map 0:a? -c:a copy burned.mp4
然後把 burned.mp4 匯入 GeekLink 並執行 OCR 擷取。它會偵測字幕區域,讀取每一幀的文字,把重複幀合併成單條字幕,匯出乾淨、時間軸準確的 SRT——全部在你的 Mac 本機完成,不上傳任何東西。重新編碼只要清晰到 OCR 能讀就夠了,所以預設設定即可。
如果 MKV 根本沒有字幕軌道(燒錄字幕)怎麼辦?
這在下載的動畫、劇集和重新編碼的影片裡最常見:ffprobe 沒列出任何字幕串流,可是影片播放時你明明看得到字幕。如果 ffprobe 顯示沒有字幕串流,但播放時能看到字幕,那它們就是燒錄進畫面本身的——任何擷取器、解多工器或轉換器都無法把它們抽出來,對影片做 OCR 是唯一的辦法。
- 在你的 Mac 上把 MKV 匯入 GeekLink——無需轉換,MKV 直接支援。
- 執行 OCR 擷取。它會從畫面幀中讀出字幕文字,並合併成帶時間軸的字幕行。
- 匯出為 SRT——或者先翻譯,再匯出雙語檔案。
OCR 在本機執行,一次處理一整批,所以一整季劇集可以一次排隊處理完。完整操作步驟見這裡:如何用 OCR 擷取燒錄字幕(硬字幕);如果你在挑工具,參見 2026 年最佳燒錄字幕擷取工具。不確定你的字幕是內嵌的還是燒錄的?兩者的區別在 內嵌字幕與燒錄字幕的區別 一文中有解釋。
怎麼翻譯你擷取出來的字幕?
擷取往往只是在地化工作的第一步。從 MKV 擷取出來的 SRT 檔案可以直接匯入 GeekLink,用 AI 翻譯成 40 多種語言,並保留原有時間軸——無需重新轉錄。 把結果匯出為翻譯後的 SRT、雙語 SRT,或把譯文燒錄進影片。完整流程:如何翻譯燒錄字幕。
常見問題
怎麼從 MKV 檔案擷取字幕?
如果 MKV 有文字字幕軌道,執行 ffmpeg -i input.mkv -map 0:s:0 subtitles.srt——幾秒完成而且免費。如果軌道是圖像格式(PGS/VobSub),或者字幕是燒錄進畫面裡的,就沒有文字可擷取;你需要 OCR 軟體從畫面幀裡把它們讀出來。
MKVToolNix 圖形介面能擷取字幕嗎?
不能。MKVToolNix 圖形介面把軌道混流進 MKV 檔案,但沒有擷取功能。擷取要用 mkvextract,也就是隨它一起安裝的命令列工具:先用 mkvmerge -i input.mkv 找出軌道 ID,再執行 mkvextract input.mkv tracks 2:subtitles.srt。
VLC 能從 MKV 擷取字幕嗎?
不能。VLC 可以顯示和切換內嵌字幕軌道,但沒有把軌道匯出為字幕檔案的功能。文字軌道用 ffmpeg 或 mkvextract,圖像字幕和燒錄字幕則用 OCR。
為什麼我擷取出來的是 .sup 或 .idx/.sub 檔案,而不是 SRT?
因為這條軌道是圖像格式的:.sup 是藍光 PGS,.idx/.sub 是 DVD VobSub。兩者都把字幕存成圖片,所以擷取出來保留的還是圖片。把它們轉成 SRT 需要 OCR——任何格式轉換器都做不到,因為檔案裡根本沒有可轉換的文字。
在 Mac 上怎麼把 PGS 字幕轉成 SRT?
用一條 ffmpeg 指令把 PGS 軌道算繪到影片上(見上文指南),然後對結果執行 GeekLink 的字幕 OCR。它會從畫面幀中讀出字幕文字並匯出帶時間軸的 SRT,全部在你的 Mac 本機完成。