太長不看:先檢查 MP4 裡到底有沒有字幕軌道——大多數都沒有。 一條免費的 ffprobe 指令幾秒就能告訴你。如果有軌道,一條 ffmpeg 指令就能把它轉成 SRT 檔案。但絕大多數 MP4——社群媒體影片、CapCut 和 Premiere 匯出的成片、下載的片段——字幕都是燒錄進畫面裡的,唯一能擷取的辦法就是 OCR,從畫面幀裡把文字讀出來。本文涵蓋這兩條路徑,外加影片根本沒有字幕的情況。
怎麼檢查 MP4 有沒有字幕軌道?
裝好 ffmpeg 後(Mac 上執行 brew install ffmpeg),執行:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language \
-of default=noprint_wrappers=1 input.mp4
兩種可能的結果:
| 輸出 | 它意味著什麼 | 如何擷取 |
|---|---|---|
codec_name=mov_text | MP4 帶有內嵌文字字幕軌道(在播放器裡可開關) | 一條 ffmpeg 指令 |
| 完全沒有任何輸出 | 沒有字幕軌道——你看到的字幕都是燒錄進畫面裡的 | OCR |
如果 ffprobe 什麼都沒列印,但影片播放時你能看到字幕,那字幕就是影片畫面的一部分——任何擷取器或轉換器都無法把它們抽出來,OCR 是唯一有效的方法。
怎麼把 MP4 的字幕軌道擷取為 SRT?
MP4 用 mov_text 格式儲存文字字幕。ffmpeg 用一條指令就能把它轉成標準 SRT 檔案:
# 把第一條字幕軌道匯出為 SRT
ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt
# 如果有多條軌道,0:s:1 是第二條,以此類推
ffmpeg -i input.mp4 -map 0:s:1 subtitles.srt
輸出是一個純 SRT 檔案,能在任何字幕編輯器裡開啟,也能上傳到任何平台。這就是全部的順利路徑——如果成功了,你就完成了。如果 ffmpeg 回報 Stream map '0:s:0' matches no streams,代表這個 MP4 沒有字幕軌道,而這才是常見得多的情況。
為什麼大多數 MP4 影片沒有字幕軌道?
MP4 對字幕的支援一直是個附帶功能。社群平台要麼在上傳時剝掉字幕軌道,要麼在播放時忽略它們,很多播放器對 MP4 檔案從來不顯示字幕選單——所以創作者不再依賴它們。
正因為各平台和播放器對 MP4 字幕軌道的處理如此不一致,大多數創作者乾脆把字幕直接燒錄進畫面——這就是為什麼一個典型 MP4 裡的字幕用 ffmpeg 或任何轉換器都擷取不出來。 你在 CapCut 匯出成片、下載的 Reels 或重新上傳的片段裡看到的每一條字幕,幾乎都是像素,而不是軌道。兩種字幕類型的完整解析見這裡:內嵌字幕與燒錄字幕的區別。
怎麼從 MP4 擷取燒錄字幕?
用 OCR——一種從影片畫面幀中讀出字幕文字、並把它重建為帶時間軸字幕檔案的軟體:
- 在你的 Mac 上把 MP4 匯入 GeekLink。
- 執行 OCR 擷取。它會偵測字幕區域,讀取每一幀的文字,並把重複幀合併成乾淨、時間軸準確的字幕行。
- 匯出為 SRT——或者先翻譯,再匯出雙語檔案。
OCR 在你的 Mac 本機執行——影片永遠不會上傳——而且一整個資料夾的影片可以一批處理完。分步操作步驟見這裡:如何用 OCR 擷取燒錄字幕(硬字幕);如果影片上還有你想排除的浮水印或頻道台標,參見 擷取字幕時排除浮水印。
如果 MP4 根本沒有字幕怎麼辦?
如果既沒有軌道、也沒有燒錄進去的字幕,那就沒有東西可擷取了——這時你改為產生字幕。把影片匯入 GeekLink,在你的 Mac 本機執行 Whisper 語音辨識:你會得到帶時間軸的字幕,可以編輯、翻譯並匯出為 SRT。參見 Whisper 影片轉錄完整指南。
怎麼翻譯你擷取出來的字幕?
從 MP4 擷取出來的 SRT 檔案可以直接匯入 GeekLink,用 AI 翻譯成 40 多種語言,並保留原有時間軸。 把它匯出為翻譯後的 SRT、雙語 SRT,或者對那些忽略字幕軌道的平台,把譯文重新燒錄回影片裡。完整流程:如何翻譯燒錄字幕。
常見問題
怎麼從 MP4 檔案擷取字幕?
先檢查有沒有字幕軌道:ffprobe -v error -select_streams s -show_entries stream=codec_name input.mp4。如果列印出 mov_text,執行 ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt,你就得到 SRT 了。如果什麼都沒列印,代表字幕是燒錄進畫面裡的,需要 OCR。
我擷取字幕時 ffmpeg 為什麼說「matches no streams」?
因為這個 MP4 沒有字幕軌道。你在播放時看到的字幕是燒錄進影片畫面裡的——它們是像素,不是資料——所以沒有可供 ffmpeg 對應的串流。像 GeekLink 這樣的 OCR 軟體會改從畫面幀裡把它們讀出來。
線上工具能從我的 MP4 擷取字幕嗎?
只有當 MP4 帶內嵌軌道時才行,而大多數都沒有——而且把一個大影片上傳到網站很慢。對於燒錄字幕,在你 Mac 本機執行的 OCR 更快,還能保證影片不外洩。
我能從 CapCut 或 Premiere 匯出的成片裡擷取字幕嗎?
編輯器匯出的成片幾乎總是燒錄字幕:字幕在匯出時被算繪進畫面,所以檔案裡沒有軌道。OCR 是正解——GeekLink 會偵測字幕區域,逐幀讀取文字,並匯出帶時間軸的 SRT。
從 MP4 擷取字幕和從 MKV 擷取有什麼區別?
MKV 通常帶有內嵌字幕軌道(SRT、ASS 或藍光 PGS),所以用 ffmpeg 或 mkvextract 擷取通常能成功。MP4 則很少帶軌道,所以擷取通常意味著對燒錄字幕做 OCR。參見搭配指南:如何從 MKV 檔案擷取字幕。