用ffmpeg命令行轉壓視頻

原文鏈接:https://segmentfault.com/a/1190000002502526
ffmpeg -i input.mp4 -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k output.mp4

-preset:指定編碼的配置。x264編碼算法有很多可供配置的參數,不同的參數值會導致編碼的速度大相徑庭,甚至可能影響質量。爲了免去用戶瞭解算法,然後手工配置參數的麻煩。x264提供了一些預設值,而這些預設值可以通過preset指定。這些預設值有包括:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow和placebo。ultrafast編碼速度最快,但壓縮率低,生成的文件更大,placebo則正好相反。x264所取的默認值爲medium。需要說明的是,preset主要是影響編碼的速度,並不會很大的影響編碼出來的結果的質量。壓縮高清電影時,我一般用slow或者slower,當你的機器性能很好時也可以使用veryslow,不過一般並不會帶來很大的好處。

-crf:這是最重要的一個選項,用於指定輸出視頻的質量,取值範圍是0-51,默認值爲23,數字越小輸出視頻的質量越高。這個選項會直接影響到輸出視頻的碼率。一般來說,壓制480p我會用20左右,壓制720p我會用16-18,1080p我沒嘗試過。個人覺得,一般情況下沒有必要低於16。最好的辦法是大家可以多嘗試幾個值,每個都壓幾分鐘,看看最後的輸出質量和文件大小,自己再按需選擇。

其實還有-b 1024k這樣的參數,但是我發現-crf設置上後-b就不管用了。根據我自己的簡單嘗試,壓制5D2拍攝的一段18秒1920x1080的視頻(下午自然光、圖像簡單、大面積白牆、只有一扇黑門)crf和壓出來的文件大小關係如下:

crf 文件大小
16 54M
18 39M
20 25M
22 17M
24 11M
26 7.3M
28 5.0M
30 3.6M
32 2.7M
默認 14M(crf爲23)

又比較了一下crf在20、28、32時的視頻質量,發現32還是能看出質量下降的,20的確非常精細,但28跟20之間的差別並不是那麼大,crf值設置在26-28之間比較好。如果對尺寸有要求,什麼都不設,用默認的也行(可能是31)。

另外,關於preset,slow和fast只跟運行時間有關,slow跑的時間比fast長不少,slow出來的mp4文件會小一些(12M),fast出來的文件會大一些(14M),但視頻質量的差距並不明顯。

如果把原視頻尺寸從1920x1080縮小到960x540,則視頻尺寸變爲了:

crf 文件大小
16 11M
18 6.7M
20 4.4M
22 3.0M
24 2.1M
26 1.6M
28 1.3M
30 1.1M
32 893K
默認 2.5M(crf爲23)

 綜上,對質量要求較高時,選22以下;對尺寸要求非常高時,選26(但質量確實是會稍差一些),否則選24的性價比比較高(或者默認的23也行),如果對尺寸實在要求非常非常高,那就28以上吧。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章