如何為 MP4 加入 SRT 字幕:燒錄還是可選?

人工智能視頻翻譯、定位和配音工具
免費試用
您可以將 SRT 字幕作為可選字幕軌加入 MP4,也可以把文字燒錄到影片畫面中,讓字幕始終可見。
具體選擇取決於影片在哪裡播放。可選字幕軌讓觀眾能在相容的播放器中關閉字幕。燒錄字幕會一直保留在畫面中。如果發布平台接受獨立的字幕檔案,也可以讓 MP4 和 SRT 保持分開。
本指南從已有的影片和字幕檔案開始,介紹如何將它們整理為可交付檔案,不涉及產生逐字稿。
選擇字幕的交付方式
方式 | 交付內容 | 觀眾能否關閉字幕? | 是否重新編碼畫面? |
|---|---|---|---|
獨立 SRT | MP4 加 SRT | 平台或播放器支援字幕時可以 | 原始檔案不需要 |
內嵌字幕軌 | 一個包含文字軌的 MP4 | 在相容的播放器中可以 | 使用下文的串流複製方法時不需要 |
燒錄字幕 | 一個畫面中帶有文字的 MP4 | 不可以 | 使用下文的方法時需要 |
對於審閱用影片,可選字幕方便觀眾在不顯示文字時檢查畫面。如果影片必須始終顯示指定文字,燒錄字幕可以固定這種呈現方式。請保留無字幕的原始影片和 SRT,因為以後修改文字時,需要重新匯出燒錄版。
內嵌字幕軌仍然依賴播放環境。傳送一個 MP4,並不代表所有網站或應用程式都會顯示其中的文字軌。交付前,請在實際目標環境中測試。
準備 MP4 和 UTF-8 SRT
將 original.mp4 和 captions.srt 放在同一個工作資料夾中。請使用原始檔案的副本。下方指令會建立新的輸出檔案,請選擇尚未使用的輸出檔名。
每則 SRT 字幕包含序號、開始和結束時間,以及字幕文字。字幕項目之間用空白行隔開:
將檔案儲存為 UTF-8 文字,副檔名為 .srt。確認字幕對應影片的同一剪輯版本。早期剪輯版的字幕檔案可能文字正確,但時間不對。
以下方法使用從 FFmpeg 官方下載來源取得的 FFmpeg。燒錄方法需要支援 subtitles 濾鏡和 libass 的組建版本。僅安裝 FFmpeg,並不保證包含這個選用濾鏡。
加入可選字幕軌,無需重新編碼影片
在檔案所在資料夾中開啟終端機並執行以下指令。範例使用 macOS/Linux shell 語法;Windows shell 的引號和接續行方式不同:
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
這條指令選擇原始檔案的第一個視訊串流、所有存在的音訊串流,以及 SRT 輸入。它複製視訊和音訊,同時將字幕編碼為 MP4 文字軌。如果字幕使用其他語言,請修改語言中繼資料。這個語言標籤不會翻譯文字。
範例假設原始串流適用於 MP4。如果 FFmpeg 回報音訊編解碼器不相容,請選擇合適的音訊轉換方式,不要只清除錯誤訊息後原樣重試。做出決定期間,請保留原始檔案。
在目標播放器中開啟 selectable.mp4,找到字幕或語言選單。啟用英語字幕軌,然後將其關閉。如果沒有字幕選項,請測試支援該內嵌格式的播放器,或改用目標平台支援的交付方式。
不要只憑存在字幕串流就完成播放測試。檔案有效,也可能遇到不提供字幕顯示功能的播放器。
將 SRT 燒錄到 MP4 畫面
在同一個工作資料夾中執行此指令:
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕濾鏡將文字繪製到影片影格中。影片會重新編碼為 H.264。此處的 CRF 設定是一個可重現的範例,並非適用於所有情況的畫質建議。請檢查自己的輸出,確認文字可讀性、畫質和檔案大小。
測試時請使用範例中的簡單檔名。包含空格或特殊字元的路徑,可能需要在 FFmpeg 濾鏡內部進行額外的引號處理。把兩個輸入檔案放在同一資料夾,可在首次測試時排除這個變數。
如果指令回報 No such filter: subtitles,請檢查已安裝的組建版本。您需要一個編譯時包含必要字幕繪製相依元件的版本。FFmpeg 字幕濾鏡文件說明了這些要求。修改 SRT 檔名並不能補上缺少的濾鏡。
如果希望使用圖形介面,可參考 HandBrake 關於 SRT 匯入和字幕燒錄的文件。本指南的範例檔案由 FFmpeg 產生,並非 HandBrake 介面的操作教學。
可重現測試的結果
我們製作了一個 12 秒、1280 × 720、沒有音訊的合成測試影片,以及一個包含四則英語字幕的 SRT。使用 FFmpeg 9.0.1,我們產生了內嵌字幕軌 MP4 和燒錄字幕 MP4。
內嵌版本包含 H.264 視訊和一個 mov_text 字幕串流。將該串流重新擷取為 SRT 後,字幕文字和時間戳記得到保留,只有結尾空白行存在差異。解碼後的影片雜湊值與原始影片一致,確認了本次測試保留了畫面。
燒錄輸出包含一個視訊串流,其解碼後的影格中可見字幕文字。顯示這些文字不需要獨立的字幕串流。

第 1 秒的合成範例。字幕文字已成為解碼後影片影格的一部分。這是本機 FFmpeg 範例,並非由 Perso 產生的影片。
試用相同輸入:原始測試 MP4和四則字幕的 SRT。比較內嵌字幕軌結果與燒錄結果。
這些檢查說明了範例檔案的組成方式,並不能證明它們相容於所有手機、社群平台或學習管理系統。我們的無聲範例也沒有驗證特定音訊編解碼器是否得到保留。
修復字幕延遲、消失或亂碼
字幕出現時間不正確
將第一則字幕與影片中清晰可辨的事件對照。在時間範例中,將第一則字幕從 00:00:00,500 改為 00:00:02,500,會使它延遲兩秒。恢復原始時間戳記即可修復這個刻意設定的偏移。
如果所有字幕都延遲相同時間,可在字幕編輯器中依照該偏移量調整整個字幕軌。如果隨著影片播放,時間差越來越大,請先調查剪輯版本或時間轉換是否不同,再決定是否整體平移。每次調整後,都要檢查開頭、中間和結尾。
上傳後字幕消失
先確認使用了哪種交付方式。接收平台可能不顯示內嵌文字軌。獨立 SRT 需要透過平台的字幕上傳流程加入。燒錄字幕已經在畫面中,因此如果文字缺失,請檢查匯出的檔案本身。
在已經燒錄字幕的影片上加入平台字幕軌前,請先檢查觀看效果。兩層可見字幕可能重疊。
字元顯示異常
檢查儲存的文字編碼,以及繪製用字型是否包含所需字元。編碼問題與字型缺少字形需要不同的修復方法。先匯出一段包含問題字元的短字幕並檢查,再處理完整影片。
合併檔案前需要先建立字幕?
如果已有準確的 SRT,直接使用即可。如果仍需製作或翻譯字幕,可以從 Perso 字幕工作流程或多語字幕指南開始。
如果還需要翻譯語音,可查看 Perso Dubbing。組合交付檔案前,請讓字幕文字與最終音訊和剪輯版本保持一致。
常見問題
沒有影片,可以把 SRT 轉成 MP4 嗎?
SRT 提供字幕文字和時間資訊。製作有用的影片仍然需要畫面內容。將 .srt 檔案改名為 .mp4 不會產生影片影格。本指南將已有 MP4 與其對應的字幕檔案組合。
觀眾能移除成品 MP4 中的字幕嗎?
支援的播放器可以關閉內嵌字幕軌。燒錄文字是畫面的一部分,無法透過字幕選單關閉。請保留無字幕原始影片,以便匯出不帶這些文字或修訂字幕後的版本。
加入 SRT 會降低影片畫質嗎?
內嵌字幕軌指令直接複製視訊串流,不會重新編碼。燒錄指令則會重新編碼影片,把文字加入畫面。請按觀眾實際觀看的尺寸檢查輸出畫面和字幕。
您可以將 SRT 字幕作為可選字幕軌加入 MP4,也可以把文字燒錄到影片畫面中,讓字幕始終可見。
具體選擇取決於影片在哪裡播放。可選字幕軌讓觀眾能在相容的播放器中關閉字幕。燒錄字幕會一直保留在畫面中。如果發布平台接受獨立的字幕檔案,也可以讓 MP4 和 SRT 保持分開。
本指南從已有的影片和字幕檔案開始,介紹如何將它們整理為可交付檔案,不涉及產生逐字稿。
選擇字幕的交付方式
方式 | 交付內容 | 觀眾能否關閉字幕? | 是否重新編碼畫面? |
|---|---|---|---|
獨立 SRT | MP4 加 SRT | 平台或播放器支援字幕時可以 | 原始檔案不需要 |
內嵌字幕軌 | 一個包含文字軌的 MP4 | 在相容的播放器中可以 | 使用下文的串流複製方法時不需要 |
燒錄字幕 | 一個畫面中帶有文字的 MP4 | 不可以 | 使用下文的方法時需要 |
對於審閱用影片,可選字幕方便觀眾在不顯示文字時檢查畫面。如果影片必須始終顯示指定文字,燒錄字幕可以固定這種呈現方式。請保留無字幕的原始影片和 SRT,因為以後修改文字時,需要重新匯出燒錄版。
內嵌字幕軌仍然依賴播放環境。傳送一個 MP4,並不代表所有網站或應用程式都會顯示其中的文字軌。交付前,請在實際目標環境中測試。
準備 MP4 和 UTF-8 SRT
將 original.mp4 和 captions.srt 放在同一個工作資料夾中。請使用原始檔案的副本。下方指令會建立新的輸出檔案,請選擇尚未使用的輸出檔名。
每則 SRT 字幕包含序號、開始和結束時間,以及字幕文字。字幕項目之間用空白行隔開:
將檔案儲存為 UTF-8 文字,副檔名為 .srt。確認字幕對應影片的同一剪輯版本。早期剪輯版的字幕檔案可能文字正確,但時間不對。
以下方法使用從 FFmpeg 官方下載來源取得的 FFmpeg。燒錄方法需要支援 subtitles 濾鏡和 libass 的組建版本。僅安裝 FFmpeg,並不保證包含這個選用濾鏡。
加入可選字幕軌,無需重新編碼影片
在檔案所在資料夾中開啟終端機並執行以下指令。範例使用 macOS/Linux shell 語法;Windows shell 的引號和接續行方式不同:
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
這條指令選擇原始檔案的第一個視訊串流、所有存在的音訊串流,以及 SRT 輸入。它複製視訊和音訊,同時將字幕編碼為 MP4 文字軌。如果字幕使用其他語言,請修改語言中繼資料。這個語言標籤不會翻譯文字。
範例假設原始串流適用於 MP4。如果 FFmpeg 回報音訊編解碼器不相容,請選擇合適的音訊轉換方式,不要只清除錯誤訊息後原樣重試。做出決定期間,請保留原始檔案。
在目標播放器中開啟 selectable.mp4,找到字幕或語言選單。啟用英語字幕軌,然後將其關閉。如果沒有字幕選項,請測試支援該內嵌格式的播放器,或改用目標平台支援的交付方式。
不要只憑存在字幕串流就完成播放測試。檔案有效,也可能遇到不提供字幕顯示功能的播放器。
將 SRT 燒錄到 MP4 畫面
在同一個工作資料夾中執行此指令:
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕濾鏡將文字繪製到影片影格中。影片會重新編碼為 H.264。此處的 CRF 設定是一個可重現的範例,並非適用於所有情況的畫質建議。請檢查自己的輸出,確認文字可讀性、畫質和檔案大小。
測試時請使用範例中的簡單檔名。包含空格或特殊字元的路徑,可能需要在 FFmpeg 濾鏡內部進行額外的引號處理。把兩個輸入檔案放在同一資料夾,可在首次測試時排除這個變數。
如果指令回報 No such filter: subtitles,請檢查已安裝的組建版本。您需要一個編譯時包含必要字幕繪製相依元件的版本。FFmpeg 字幕濾鏡文件說明了這些要求。修改 SRT 檔名並不能補上缺少的濾鏡。
如果希望使用圖形介面,可參考 HandBrake 關於 SRT 匯入和字幕燒錄的文件。本指南的範例檔案由 FFmpeg 產生,並非 HandBrake 介面的操作教學。
可重現測試的結果
我們製作了一個 12 秒、1280 × 720、沒有音訊的合成測試影片,以及一個包含四則英語字幕的 SRT。使用 FFmpeg 9.0.1,我們產生了內嵌字幕軌 MP4 和燒錄字幕 MP4。
內嵌版本包含 H.264 視訊和一個 mov_text 字幕串流。將該串流重新擷取為 SRT 後,字幕文字和時間戳記得到保留,只有結尾空白行存在差異。解碼後的影片雜湊值與原始影片一致,確認了本次測試保留了畫面。
燒錄輸出包含一個視訊串流,其解碼後的影格中可見字幕文字。顯示這些文字不需要獨立的字幕串流。

第 1 秒的合成範例。字幕文字已成為解碼後影片影格的一部分。這是本機 FFmpeg 範例,並非由 Perso 產生的影片。
試用相同輸入:原始測試 MP4和四則字幕的 SRT。比較內嵌字幕軌結果與燒錄結果。
這些檢查說明了範例檔案的組成方式,並不能證明它們相容於所有手機、社群平台或學習管理系統。我們的無聲範例也沒有驗證特定音訊編解碼器是否得到保留。
修復字幕延遲、消失或亂碼
字幕出現時間不正確
將第一則字幕與影片中清晰可辨的事件對照。在時間範例中,將第一則字幕從 00:00:00,500 改為 00:00:02,500,會使它延遲兩秒。恢復原始時間戳記即可修復這個刻意設定的偏移。
如果所有字幕都延遲相同時間,可在字幕編輯器中依照該偏移量調整整個字幕軌。如果隨著影片播放,時間差越來越大,請先調查剪輯版本或時間轉換是否不同,再決定是否整體平移。每次調整後,都要檢查開頭、中間和結尾。
上傳後字幕消失
先確認使用了哪種交付方式。接收平台可能不顯示內嵌文字軌。獨立 SRT 需要透過平台的字幕上傳流程加入。燒錄字幕已經在畫面中,因此如果文字缺失,請檢查匯出的檔案本身。
在已經燒錄字幕的影片上加入平台字幕軌前,請先檢查觀看效果。兩層可見字幕可能重疊。
字元顯示異常
檢查儲存的文字編碼,以及繪製用字型是否包含所需字元。編碼問題與字型缺少字形需要不同的修復方法。先匯出一段包含問題字元的短字幕並檢查,再處理完整影片。
合併檔案前需要先建立字幕?
如果已有準確的 SRT,直接使用即可。如果仍需製作或翻譯字幕,可以從 Perso 字幕工作流程或多語字幕指南開始。
如果還需要翻譯語音,可查看 Perso Dubbing。組合交付檔案前,請讓字幕文字與最終音訊和剪輯版本保持一致。
常見問題
沒有影片,可以把 SRT 轉成 MP4 嗎?
SRT 提供字幕文字和時間資訊。製作有用的影片仍然需要畫面內容。將 .srt 檔案改名為 .mp4 不會產生影片影格。本指南將已有 MP4 與其對應的字幕檔案組合。
觀眾能移除成品 MP4 中的字幕嗎?
支援的播放器可以關閉內嵌字幕軌。燒錄文字是畫面的一部分,無法透過字幕選單關閉。請保留無字幕原始影片,以便匯出不帶這些文字或修訂字幕後的版本。
加入 SRT 會降低影片畫質嗎?
內嵌字幕軌指令直接複製視訊串流,不會重新編碼。燒錄指令則會重新編碼影片,把文字加入畫面。請按觀眾實際觀看的尺寸檢查輸出畫面和字幕。
您可以將 SRT 字幕作為可選字幕軌加入 MP4,也可以把文字燒錄到影片畫面中,讓字幕始終可見。
具體選擇取決於影片在哪裡播放。可選字幕軌讓觀眾能在相容的播放器中關閉字幕。燒錄字幕會一直保留在畫面中。如果發布平台接受獨立的字幕檔案,也可以讓 MP4 和 SRT 保持分開。
本指南從已有的影片和字幕檔案開始,介紹如何將它們整理為可交付檔案,不涉及產生逐字稿。
選擇字幕的交付方式
方式 | 交付內容 | 觀眾能否關閉字幕? | 是否重新編碼畫面? |
|---|---|---|---|
獨立 SRT | MP4 加 SRT | 平台或播放器支援字幕時可以 | 原始檔案不需要 |
內嵌字幕軌 | 一個包含文字軌的 MP4 | 在相容的播放器中可以 | 使用下文的串流複製方法時不需要 |
燒錄字幕 | 一個畫面中帶有文字的 MP4 | 不可以 | 使用下文的方法時需要 |
對於審閱用影片,可選字幕方便觀眾在不顯示文字時檢查畫面。如果影片必須始終顯示指定文字,燒錄字幕可以固定這種呈現方式。請保留無字幕的原始影片和 SRT,因為以後修改文字時,需要重新匯出燒錄版。
內嵌字幕軌仍然依賴播放環境。傳送一個 MP4,並不代表所有網站或應用程式都會顯示其中的文字軌。交付前,請在實際目標環境中測試。
準備 MP4 和 UTF-8 SRT
將 original.mp4 和 captions.srt 放在同一個工作資料夾中。請使用原始檔案的副本。下方指令會建立新的輸出檔案,請選擇尚未使用的輸出檔名。
每則 SRT 字幕包含序號、開始和結束時間,以及字幕文字。字幕項目之間用空白行隔開:
將檔案儲存為 UTF-8 文字,副檔名為 .srt。確認字幕對應影片的同一剪輯版本。早期剪輯版的字幕檔案可能文字正確,但時間不對。
以下方法使用從 FFmpeg 官方下載來源取得的 FFmpeg。燒錄方法需要支援 subtitles 濾鏡和 libass 的組建版本。僅安裝 FFmpeg,並不保證包含這個選用濾鏡。
加入可選字幕軌,無需重新編碼影片
在檔案所在資料夾中開啟終端機並執行以下指令。範例使用 macOS/Linux shell 語法;Windows shell 的引號和接續行方式不同:
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
這條指令選擇原始檔案的第一個視訊串流、所有存在的音訊串流,以及 SRT 輸入。它複製視訊和音訊,同時將字幕編碼為 MP4 文字軌。如果字幕使用其他語言,請修改語言中繼資料。這個語言標籤不會翻譯文字。
範例假設原始串流適用於 MP4。如果 FFmpeg 回報音訊編解碼器不相容,請選擇合適的音訊轉換方式,不要只清除錯誤訊息後原樣重試。做出決定期間,請保留原始檔案。
在目標播放器中開啟 selectable.mp4,找到字幕或語言選單。啟用英語字幕軌,然後將其關閉。如果沒有字幕選項,請測試支援該內嵌格式的播放器,或改用目標平台支援的交付方式。
不要只憑存在字幕串流就完成播放測試。檔案有效,也可能遇到不提供字幕顯示功能的播放器。
將 SRT 燒錄到 MP4 畫面
在同一個工作資料夾中執行此指令:
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕濾鏡將文字繪製到影片影格中。影片會重新編碼為 H.264。此處的 CRF 設定是一個可重現的範例,並非適用於所有情況的畫質建議。請檢查自己的輸出,確認文字可讀性、畫質和檔案大小。
測試時請使用範例中的簡單檔名。包含空格或特殊字元的路徑,可能需要在 FFmpeg 濾鏡內部進行額外的引號處理。把兩個輸入檔案放在同一資料夾,可在首次測試時排除這個變數。
如果指令回報 No such filter: subtitles,請檢查已安裝的組建版本。您需要一個編譯時包含必要字幕繪製相依元件的版本。FFmpeg 字幕濾鏡文件說明了這些要求。修改 SRT 檔名並不能補上缺少的濾鏡。
如果希望使用圖形介面,可參考 HandBrake 關於 SRT 匯入和字幕燒錄的文件。本指南的範例檔案由 FFmpeg 產生,並非 HandBrake 介面的操作教學。
可重現測試的結果
我們製作了一個 12 秒、1280 × 720、沒有音訊的合成測試影片,以及一個包含四則英語字幕的 SRT。使用 FFmpeg 9.0.1,我們產生了內嵌字幕軌 MP4 和燒錄字幕 MP4。
內嵌版本包含 H.264 視訊和一個 mov_text 字幕串流。將該串流重新擷取為 SRT 後,字幕文字和時間戳記得到保留,只有結尾空白行存在差異。解碼後的影片雜湊值與原始影片一致,確認了本次測試保留了畫面。
燒錄輸出包含一個視訊串流,其解碼後的影格中可見字幕文字。顯示這些文字不需要獨立的字幕串流。

第 1 秒的合成範例。字幕文字已成為解碼後影片影格的一部分。這是本機 FFmpeg 範例,並非由 Perso 產生的影片。
試用相同輸入:原始測試 MP4和四則字幕的 SRT。比較內嵌字幕軌結果與燒錄結果。
這些檢查說明了範例檔案的組成方式,並不能證明它們相容於所有手機、社群平台或學習管理系統。我們的無聲範例也沒有驗證特定音訊編解碼器是否得到保留。
修復字幕延遲、消失或亂碼
字幕出現時間不正確
將第一則字幕與影片中清晰可辨的事件對照。在時間範例中,將第一則字幕從 00:00:00,500 改為 00:00:02,500,會使它延遲兩秒。恢復原始時間戳記即可修復這個刻意設定的偏移。
如果所有字幕都延遲相同時間,可在字幕編輯器中依照該偏移量調整整個字幕軌。如果隨著影片播放,時間差越來越大,請先調查剪輯版本或時間轉換是否不同,再決定是否整體平移。每次調整後,都要檢查開頭、中間和結尾。
上傳後字幕消失
先確認使用了哪種交付方式。接收平台可能不顯示內嵌文字軌。獨立 SRT 需要透過平台的字幕上傳流程加入。燒錄字幕已經在畫面中,因此如果文字缺失,請檢查匯出的檔案本身。
在已經燒錄字幕的影片上加入平台字幕軌前,請先檢查觀看效果。兩層可見字幕可能重疊。
字元顯示異常
檢查儲存的文字編碼,以及繪製用字型是否包含所需字元。編碼問題與字型缺少字形需要不同的修復方法。先匯出一段包含問題字元的短字幕並檢查,再處理完整影片。
合併檔案前需要先建立字幕?
如果已有準確的 SRT,直接使用即可。如果仍需製作或翻譯字幕,可以從 Perso 字幕工作流程或多語字幕指南開始。
如果還需要翻譯語音,可查看 Perso Dubbing。組合交付檔案前,請讓字幕文字與最終音訊和剪輯版本保持一致。
常見問題
沒有影片,可以把 SRT 轉成 MP4 嗎?
SRT 提供字幕文字和時間資訊。製作有用的影片仍然需要畫面內容。將 .srt 檔案改名為 .mp4 不會產生影片影格。本指南將已有 MP4 與其對應的字幕檔案組合。
觀眾能移除成品 MP4 中的字幕嗎?
支援的播放器可以關閉內嵌字幕軌。燒錄文字是畫面的一部分,無法透過字幕選單關閉。請保留無字幕原始影片,以便匯出不帶這些文字或修訂字幕後的版本。
加入 SRT 會降低影片畫質嗎?
內嵌字幕軌指令直接複製視訊串流,不會重新編碼。燒錄指令則會重新編碼影片,把文字加入畫面。請按觀眾實際觀看的尺寸檢查輸出畫面和字幕。
您可以將 SRT 字幕作為可選字幕軌加入 MP4,也可以把文字燒錄到影片畫面中,讓字幕始終可見。
具體選擇取決於影片在哪裡播放。可選字幕軌讓觀眾能在相容的播放器中關閉字幕。燒錄字幕會一直保留在畫面中。如果發布平台接受獨立的字幕檔案,也可以讓 MP4 和 SRT 保持分開。
本指南從已有的影片和字幕檔案開始,介紹如何將它們整理為可交付檔案,不涉及產生逐字稿。
選擇字幕的交付方式
方式 | 交付內容 | 觀眾能否關閉字幕? | 是否重新編碼畫面? |
|---|---|---|---|
獨立 SRT | MP4 加 SRT | 平台或播放器支援字幕時可以 | 原始檔案不需要 |
內嵌字幕軌 | 一個包含文字軌的 MP4 | 在相容的播放器中可以 | 使用下文的串流複製方法時不需要 |
燒錄字幕 | 一個畫面中帶有文字的 MP4 | 不可以 | 使用下文的方法時需要 |
對於審閱用影片,可選字幕方便觀眾在不顯示文字時檢查畫面。如果影片必須始終顯示指定文字,燒錄字幕可以固定這種呈現方式。請保留無字幕的原始影片和 SRT,因為以後修改文字時,需要重新匯出燒錄版。
內嵌字幕軌仍然依賴播放環境。傳送一個 MP4,並不代表所有網站或應用程式都會顯示其中的文字軌。交付前,請在實際目標環境中測試。
準備 MP4 和 UTF-8 SRT
將 original.mp4 和 captions.srt 放在同一個工作資料夾中。請使用原始檔案的副本。下方指令會建立新的輸出檔案,請選擇尚未使用的輸出檔名。
每則 SRT 字幕包含序號、開始和結束時間,以及字幕文字。字幕項目之間用空白行隔開:
將檔案儲存為 UTF-8 文字,副檔名為 .srt。確認字幕對應影片的同一剪輯版本。早期剪輯版的字幕檔案可能文字正確,但時間不對。
以下方法使用從 FFmpeg 官方下載來源取得的 FFmpeg。燒錄方法需要支援 subtitles 濾鏡和 libass 的組建版本。僅安裝 FFmpeg,並不保證包含這個選用濾鏡。
加入可選字幕軌,無需重新編碼影片
在檔案所在資料夾中開啟終端機並執行以下指令。範例使用 macOS/Linux shell 語法;Windows shell 的引號和接續行方式不同:
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
這條指令選擇原始檔案的第一個視訊串流、所有存在的音訊串流,以及 SRT 輸入。它複製視訊和音訊,同時將字幕編碼為 MP4 文字軌。如果字幕使用其他語言,請修改語言中繼資料。這個語言標籤不會翻譯文字。
範例假設原始串流適用於 MP4。如果 FFmpeg 回報音訊編解碼器不相容,請選擇合適的音訊轉換方式,不要只清除錯誤訊息後原樣重試。做出決定期間,請保留原始檔案。
在目標播放器中開啟 selectable.mp4,找到字幕或語言選單。啟用英語字幕軌,然後將其關閉。如果沒有字幕選項,請測試支援該內嵌格式的播放器,或改用目標平台支援的交付方式。
不要只憑存在字幕串流就完成播放測試。檔案有效,也可能遇到不提供字幕顯示功能的播放器。
將 SRT 燒錄到 MP4 畫面
在同一個工作資料夾中執行此指令:
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕濾鏡將文字繪製到影片影格中。影片會重新編碼為 H.264。此處的 CRF 設定是一個可重現的範例,並非適用於所有情況的畫質建議。請檢查自己的輸出,確認文字可讀性、畫質和檔案大小。
測試時請使用範例中的簡單檔名。包含空格或特殊字元的路徑,可能需要在 FFmpeg 濾鏡內部進行額外的引號處理。把兩個輸入檔案放在同一資料夾,可在首次測試時排除這個變數。
如果指令回報 No such filter: subtitles,請檢查已安裝的組建版本。您需要一個編譯時包含必要字幕繪製相依元件的版本。FFmpeg 字幕濾鏡文件說明了這些要求。修改 SRT 檔名並不能補上缺少的濾鏡。
如果希望使用圖形介面,可參考 HandBrake 關於 SRT 匯入和字幕燒錄的文件。本指南的範例檔案由 FFmpeg 產生,並非 HandBrake 介面的操作教學。
可重現測試的結果
我們製作了一個 12 秒、1280 × 720、沒有音訊的合成測試影片,以及一個包含四則英語字幕的 SRT。使用 FFmpeg 9.0.1,我們產生了內嵌字幕軌 MP4 和燒錄字幕 MP4。
內嵌版本包含 H.264 視訊和一個 mov_text 字幕串流。將該串流重新擷取為 SRT 後,字幕文字和時間戳記得到保留,只有結尾空白行存在差異。解碼後的影片雜湊值與原始影片一致,確認了本次測試保留了畫面。
燒錄輸出包含一個視訊串流,其解碼後的影格中可見字幕文字。顯示這些文字不需要獨立的字幕串流。

第 1 秒的合成範例。字幕文字已成為解碼後影片影格的一部分。這是本機 FFmpeg 範例,並非由 Perso 產生的影片。
試用相同輸入:原始測試 MP4和四則字幕的 SRT。比較內嵌字幕軌結果與燒錄結果。
這些檢查說明了範例檔案的組成方式,並不能證明它們相容於所有手機、社群平台或學習管理系統。我們的無聲範例也沒有驗證特定音訊編解碼器是否得到保留。
修復字幕延遲、消失或亂碼
字幕出現時間不正確
將第一則字幕與影片中清晰可辨的事件對照。在時間範例中,將第一則字幕從 00:00:00,500 改為 00:00:02,500,會使它延遲兩秒。恢復原始時間戳記即可修復這個刻意設定的偏移。
如果所有字幕都延遲相同時間,可在字幕編輯器中依照該偏移量調整整個字幕軌。如果隨著影片播放,時間差越來越大,請先調查剪輯版本或時間轉換是否不同,再決定是否整體平移。每次調整後,都要檢查開頭、中間和結尾。
上傳後字幕消失
先確認使用了哪種交付方式。接收平台可能不顯示內嵌文字軌。獨立 SRT 需要透過平台的字幕上傳流程加入。燒錄字幕已經在畫面中,因此如果文字缺失,請檢查匯出的檔案本身。
在已經燒錄字幕的影片上加入平台字幕軌前,請先檢查觀看效果。兩層可見字幕可能重疊。
字元顯示異常
檢查儲存的文字編碼,以及繪製用字型是否包含所需字元。編碼問題與字型缺少字形需要不同的修復方法。先匯出一段包含問題字元的短字幕並檢查,再處理完整影片。
合併檔案前需要先建立字幕?
如果已有準確的 SRT,直接使用即可。如果仍需製作或翻譯字幕,可以從 Perso 字幕工作流程或多語字幕指南開始。
如果還需要翻譯語音,可查看 Perso Dubbing。組合交付檔案前,請讓字幕文字與最終音訊和剪輯版本保持一致。
常見問題
沒有影片,可以把 SRT 轉成 MP4 嗎?
SRT 提供字幕文字和時間資訊。製作有用的影片仍然需要畫面內容。將 .srt 檔案改名為 .mp4 不會產生影片影格。本指南將已有 MP4 與其對應的字幕檔案組合。
觀眾能移除成品 MP4 中的字幕嗎?
支援的播放器可以關閉內嵌字幕軌。燒錄文字是畫面的一部分,無法透過字幕選單關閉。請保留無字幕原始影片,以便匯出不帶這些文字或修訂字幕後的版本。
加入 SRT 會降低影片畫質嗎?
內嵌字幕軌指令直接複製視訊串流,不會重新編碼。燒錄指令則會重新編碼影片,把文字加入畫面。請按觀眾實際觀看的尺寸檢查輸出畫面和字幕。
繼續閱讀
瀏覽全部
ESTsoft Inc. 15770 Laguna Canyon Rd #250, Irvine, CA 92618
ESTsoft Inc. 15770 Laguna Canyon Rd #250, Irvine, CA 92618




