如何從 MP4 影片擷取字幕

作者 Flora Wang,影片在地化專家 · 發布於 2026 年 7 月 17 日 · 閱讀約 6 分鐘

太長不看:先檢查 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_textMP4 帶有內嵌文字字幕軌道(在播放器裡可開關)一條 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——一種從影片畫面幀中讀出字幕文字、並把它重建為帶時間軸字幕檔案的軟體:

  1. 在你的 Mac 上把 MP4 匯入 GeekLink
  2. 執行 OCR 擷取。它會偵測字幕區域,讀取每一幀的文字,並把重複幀合併成乾淨、時間軸準確的字幕行。
  3. 匯出為 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 檔案擷取字幕。

相關文章

ffmpeg 找不到的字幕?

GeekLink 用 OCR 讀取燒錄字幕並匯出乾淨的 SRT——全部在你的 Mac 本機完成。

免費下載