- .mp4 是什麼? MPEG-4 Part 14,影像的部份常用 H.264,聲音的部份常用 Advanced Audio Coding (AAC)或也可以用 MP3。
- H.264 是? Advanced Video Coding,其中一個廣為流傳的編碼器是 x264。
- AAC 有什麼編碼器啊? Nero 在 2009 年底有出一個神器「NeroAACEnc」,但問題是他只給編譯好的版本,再加上版權的問題所以 FFmpeg 根本不可能使用他。目前可以使用的是 Fraunhofer FDK AAC、和後來 FFmpeg 自己開發的 aac。
- 這些...可以吃嗎? 上述編碼器可實作 AAC 有分二種層次(Profile),一個是低複雜度(Low-Complexity、LC-AAC),目前大部份都是用這種;另外一種是高複雜度(High-Complexity、HC-AAC),後者在 FFmpeg 中只有 libfdk_aac 可以編碼。
- MP3 的部份呢? 就 libmp3lame 吧!所有網站全部只推薦這個,主要是因為他可以說是 MPEG-1 Audio Layer III 趨近完美的實作,而且授權又可內建於 FFmpeg 裡面。
- .mp4 裡面可以怎麼放東西? 一個視訊軌和一個音訊軌是最基本的,放二個音訊軌也沒有問題(FFmpeg 請使用 -map)。字幕筆者有丟過 .srt ,但畢竟那不是標準。
- 常見是怎麼壓的啊? 恆定質量(Constant Rate Factor、CRF)和兩階段式(Two-Pass)。
- 要用哪一個比較好? 如果不追求輸出檔案大小,用恆定質量(CRF)。如果苛求輸出檔案的大小,用兩階段式(Two-Pass)。
- 在開始之前要注意什麼? 要先選好 preset ,就是決定要壓多快。如果選比較慢的畫質可以有明顯的提升,但是轉檔速度很慢。有下面幾種可以調(預設是 medium):
- 恆定質量要怎麼做? 先從 0 到 51 挑一個數字,再丟到下面的指令就可以了(範例是 22):
- 這是什麼鳥說明,在混啊? 呃...值是 0 的話是趨近無損, 51 是最差。大致上要到 18 以上才可發現差異, 28 以上就真的很糟。普通是 +6 流量會倍增, -6 會倍減。這裡建議是找一個中庸的影片,壓看看就知道差異了。
- 兩階段式是? 如果要指定的位元率(Bitrate)才需要這樣壓,壓第一次是檢視影片來決定要怎麼壓,會產生記錄檔;而第二次才是產生完整檔。實作是:
- 感覺兩階段式品質會比較好? 不會,不要再有這種想法了。二階段式的目的就只是要得到所需求的位元率而已。
- 還有其他要解釋的嗎? 大致上是這樣,還有無損、平均流量、相容性要加註。
- 無損是? 正確來說是趨近無損,實作是:
- 可不可以不要用兩階段式又可以指定流量? 可以,就是平均流量(Average Bit Rate、ABR)。但壓出來會很糟,時間也節省不到哪裡去:
- 相容性? 預設壓出來的 .mp4 很多裝置都不能播放,所以要改成:
- 要如何把轉出來的影片可以給其他人快速的串流?
- 上面提到的測試每次都要壓好久,好像很白痴? 有偏移(-ss)和長度(-t)可以用啊。
- FFmpeg 支授顯卡壓縮嗎? 現在還不是很建議使用,這裡有説明。
- 如果目前所有編碼器都有,那哪個好? 結論是:
對於 LC-AAC 部份:
對於 HE-AAC 部份:
因為授權的關係,有 libfdk_aac 的 FFmpeg 是不可以在網路上放給其他人下載的,所以要自行編譯。
- 要去哪裡取得 libfdk_aac? 二種方法。Zeranoe 有提供一個在 Linux 上編譯 Windows 的 .exe 程式的方法,如果有聽得懂的人可以去試看看。如果聽不懂的,可以去 Netfarm下載他們家的 FFmpeg,他們有提供 libfdk_aac.dll 可以使用。
- VBR 怎麼下? 共 1(最差,約每聲道 20-32kbps)到 5(最好,約每聲道 96-112kbps):
- CBR 怎麼下? 就一般的下法:
- HE-AAC 呢? 會使用 HE-AAC 的原因就是要檔案很小,筆者經驗是 24k 和 32k 轉出來的品質都接近,適合人聲(没有音樂)的檔案。再低下去就要用 amr 的,但是音質低到不建議使用。
- VBR 怎麼下? 可以使用,可以嘗試看看,但不建議進行高音質壓縮。
- CBR 怎麼下? 筆者測過, 128k 就可以聽出音質明顯滅損,建議使用到 192k 以上,音質才比有保障。
- VBR 怎麼下? 對照原本 Lame -V 指令可從 0(最好,約 245kbps )到 9(最差,約 65kbps ):
- CBR 怎麼下? 就一般的下法:
如果沒有要壓的部份可以用 -c:v copy 或 -c:a copy 來直複製。另外 -map 也可以要求產生出來的檔案要怎麼放。
以下是寫給酷狗看的: FFmpeg 對於 .mp4 的壓縮經驗。
謝謝
回覆刪除