在 Linux 環境中,MPlayer 套件自帶的 mencoder 是一款功能極其強大的視頻音頻轉碼工具。它猶如一台全手動的專業相機,提供了海量可調參數,雖然學習曲線較陡峭,但掌握核心用法後即可應對絕大多數場景。本文以將 AVI 文件轉換為適合智能手機/PDA 播放的 MPEG-4 格式、並內嵌字幕為例,詳細講解常用參數含義。
video.avivideo.srtnew.avisimsun.ttf (用於渲染中文字幕)mencoder -oac mp3lame -lameopts vbr=3:br=64 -ovc lavc \
-lavcopts vcodec=mpeg4:mbd=1:vbitrate=200 \
-sub video.srt -font simsun.ttf -subcp cp936 -subfont-text-scale 4 \
-vf scale=320:240 -o new.avi video.avi
-oac mp3lame:使用 LAME 編碼器將音頻壓縮為 MP3 格式。-lameopts vbr=3:br=64:vbr=3 選擇 ABR (平均碼率) 模式,br=64 設定目標碼率為 64 kbps。此組合在音質與體積間取得良好平衡。-ovc lavc:調用 libavcodec 庫進行編碼,支援最豐富的編碼格式。vcodec=mpeg4:指定視頻編碼為 MPEG-4 (相容 DivX 4/5)。其他常用值還有 h264、h263、wmv1/2 等。mbd=1:啟用簡單的宏塊決策算法,提升壓縮效率。vbitrate=200:設定視頻目標碼率為 200 kbps (默認 800 kbps)。-sub video.srt:載入外掛字幕文件。-font simsun.ttf:指定渲染字幕的 TrueType 字體路徑,解決中文顯示方塊問題。-subcp cp936:聲明字幕文件編碼為 GBK/CP936 (簡體中文);若為 UTF-8 字幕可省略或改為 utf8。-subfont-text-scale 4:字幕字體縮放比例,數值越大字體越大。-vf scale=320:240:強制縮放視頻幀至 320×240 分辨率。提示: 若無需內嵌字幕,只需移除 -sub、-font、-subcp、-subfont-text-scale 四項即可。同理,RMVB 轉 MPEG-4 僅需替換輸入文件名。
作為多媒體處理的瑞士軍刀,ffmpeg 以語法靈活、濾鏡豐富著稱。基本語法結構為:
ffmpeg [全局選項] -i 輸入文件 [輸出選項] 輸出文件
例如將上述需求用 ffmpeg 實現:
ffmpeg -i video.avi -vf "scale=320:240,subtitles=video.srt:force_style='FontName=SimSun,FontSize=18'" \
-c:v mpeg4 -b:v 200k -c:a libmp3lame -b:a 64k new.avi
ffmpeg 的濾鏡鏈 (-vf) 功能更強大,支援多字幕流、複雜濾鏡圖構建,適合進階自動化腳本。