將字幕「燒錄」到影片中,但可以自訂字幕的顯示樣式
由於 FFmpeg 可以指定的樣式非常多,你幾乎可以調整出任何你想要的字幕樣式,包含文字大小、文字顏色、背景顏色、邊框顏色、邊框寬度、陰影等等,幾乎都可以自訂,功能十分強大。
基本上 FFmpeg 在燒錄字幕時,使用的是 libass 開源套件,所以其實你很難在 FFmpeg Filters Documentation 官方文件找到任何資訊,頂多只能知道有個 force_style
選項可以設定而已。這也是我覺得 FFmpeg 很難上手的其中一個原因,他真的太複雜了。
我最後從 ASS File Format Specification 找到了所有樣式參數的清單,總共有 Name
, Fontname
, Fontsize
, PrimaryColour
, SecondaryColour
, TertiaryColour
, BackColour
, Bold
, Italic
, Underline
, StrikeOut
, ScaleX
, ScaleY
, Spacing
, Angle
, BorderStyle
, Outline
, Shadow
, Alignment
, MarginL
, MarginR
, MarginV
, AlphaLevel
, Encoding
共 23 個。這是我找出最權威的資訊來源了!
其實我第一時間不到 10 秒鐘就從 ChatGPT 問到了這 23 種 force_style
可用的選項,但我實在無法判斷他是不是在胡說八道,所以花了十幾分鐘才找到我要的權威資料!😅
以下這組參數是我調整無數次之後覺得最美觀的字幕樣式,但你其實還可以做出許多特殊的調整!
ffmpeg -i video.mp4 -vf "subtitles=video.zh_TW.srt:force_style='PrimaryColour=0xCCCCCC,BackColour=0x000000,OutlineColour=0x000000,BorderStyle=1,Outline=1,Shadow=0,MarginV=10,Fontsize=14'" -c:a copy output.mp4
如果你的影片擁有比較雜亂的畫面,那麼你可以改用以下參數,讓整個字幕套上一個不透明的方框(BorderStyle=3
):
ffmpeg -i video.mp4 -vf "subtitles=video.zh_TW.srt:force_style='PrimaryColour=0xCCCCCC,BackColour=0x000000,OutlineColour=0x000000,BorderStyle=3,Outline=1,Shadow=0,MarginV=10,Fontsize=14'" -c:a copy output.mp4
如果字太小,也可以調整 Fontsize
參數調大字體。