← 教學與知識

怎麼把字幕壓進影片?內嵌與外掛字幕的差別與做法

最後更新:2026-08-24

「把字幕壓進影片」其實有兩種完全不同的做法,結果差很多: 一種是把字畫進畫面像素裡(硬字幕),一種是把字幕當成另一條軌道封裝進檔案 (軟字幕)。選錯會白花一次轉檔時間。

硬字幕 vs 軟字幕

硬字幕(burn-in) 軟字幕(封裝軌道)
字在哪 畫進畫面的像素裡 獨立軌道,播放時才疊上去
可以關掉嗎 不行,是畫面的一部分 可以,也可以切換多語言
需要重新編碼嗎 要,畫面被改了 不用,只是換個容器
處理時間 長(等同重壓整支影片) 短(通常幾秒鐘)
畫質 會有一次重新編碼的損失 完全無損
相容性 最好,任何地方都看得到 看播放器與容器支援

什麼時候用硬字幕

  • 要傳到 Instagram、TikTok、Threads 這類不支援字幕軌的平台
  • 要在電視、投影機或別人的裝置上播,不確定對方能不能載入字幕檔
  • 字幕有特殊排版或特效,需要保證呈現一致

什麼時候用軟字幕

  • 自己收藏、用自己的播放器看
  • 需要中文與原文之間切換,或收多國語言
  • 不想損失畫質,也不想等重新編碼

軟字幕:封裝(快,無損)

MKV 容器對字幕支援最完整,SRT 與 ASS 都能直接放進去:

ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s srt output.mkv

-c copy 表示影音串流原封不動搬過去,所以這個指令通常幾秒就跑完。

要放進 MP4 的話,字幕編碼必須用 mov_text——MP4 容器不吃 SRT 格式:

ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4

要加上語言標記與預設開啟:

ffmpeg -i input.mkv -i zh.srt -c copy -c:s srt \
  -metadata:s:s:0 language=chi -disposition:s:0 default output.mkv

硬字幕:燒錄(慢,但到哪都看得到)

用 subtitles 濾鏡。因為畫面被改動,一定會重新編碼:

ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" -c:a copy output.mp4

-c:a copy 讓音訊直接複製、不重壓,可以省下一些時間也避免音質損失。

指定字型與外觀

SRT 沒有樣式資訊,ffmpeg 會套用預設值(常常是不含中文的字型,導致方框或豆腐字)。 用 force_style 指定:

ffmpeg -i input.mp4 -vf "subtitles=zh.srt:force_style='FontName=Noto Sans TC,FontSize=24,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,MarginV=30'" -c:a copy output.mp4

這裡的參數名稱與顏色格式沿用 ASS 的樣式定義, 所以 &H00FFFFFF 是不透明的白色(BGR 順序)。 Outline=2 給字加描邊,這在淺色畫面上很重要, 不然白字會整段看不見。

ASS 字幕要用另一個濾鏡

如果字幕本身是 ASS 且帶有樣式,要用 ass 濾鏡而不是 subtitles,才會保留原本的排版與特效:

ffmpeg -i input.mp4 -vf "ass=subtitle.ass" -c:a copy output.mp4

Windows 路徑的跳脫問題

subtitles= 的參數會經過濾鏡語法解析,Windows 的反斜線與磁碟機 冒號都是特殊字元,直接寫絕對路徑常常會失敗。最省事的做法是 cd 到字幕檔所在目錄後只寫檔名。若一定要寫完整路徑, 反斜線要寫成 \\\\、冒號要寫成 \\:。

字幕醬線上版:瀏覽器直接燒錄 mp4

使用桌面版 Chrome 或 Edge,就能在字幕編輯器直接把字幕燒進 mp4; 影片全程留在你的瀏覽器、不會上傳,而且免費。透明背景 .mov 仍是本機版功能,適合要丟進剪輯軟體再疊片的工作流。

先有字幕檔才有得壓

如果還沒有字幕檔,字幕醬 可以從影片語音直接辨識並翻成繁體中文, 先在編輯器校對,再下載 SRT、VTT、ASS 或 FCPXML;需要雙語(中文加原文)也能一次輸出。

延伸閱讀:SRT、VTT、ASS 差在哪、 字幕時間軸跑掉怎麼校正。

字幕醬首頁 · 教學與知識 · 費率 · 服務條款 · 隱私權政策 · 退款政策 · 聯絡我們