主頁 > 知識庫 > 利用ffmpeg命令行轉(zhuǎn)壓視頻示例代碼

利用ffmpeg命令行轉(zhuǎn)壓視頻示例代碼

熱門標(biāo)簽:菏澤crm外呼系統(tǒng)價格 物超所值的400電話申請 coreldraw地圖標(biāo)注 如何在各種地圖標(biāo)注自己的地址 營銷電銷機器人招商 百應(yīng)電銷機器人靠譜嗎 申請400電話號碼多少錢 遼寧電銷平臺外呼系統(tǒng)軟件 信陽銷售外呼系統(tǒng)招商

在開始本文的正文之前,首先得安裝好ffmpeg程序(Linux下還得安裝x264編碼)。Mac下直接用brew安裝:

brew install ffmpeg --with-faac --with-fdk-aac --with-ffplay --with-fontconfig --with-freetype --with-libass --with-libbluray --with-libcaca --with-libsoxr --with-libquvi --with-frei0r --with-libvidstab --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-openssl --with-opus --with-rtmpdump --with-schroedinger --with-speex --with-theroa --with-tools --with-x265

裝好后就可以用ffmpeg這個命令壓制MP4文件了:

ffmpeg -i MVI_7274.MOV -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k a.mp4

參數(shù)解釋如下(從這里參考而來,有修改:https://vistb.net/2012/02/x264-video-compress-intro/):

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

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

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

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

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

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

如果把原視頻尺寸從1920x1080縮小到960x540,則視頻尺寸變?yōu)榱耍?/p>

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
默認(rèn) 2.5M(crf為23)

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

后記補充(來自@gghyoo)

可以用-threads n 來實施多線程的運算,充分利用多核cpu

例子如下:

ffmpeg -threads 2 -crf 20 -y -i ML-02.avi -strict experimental ML-02.mp4

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

標(biāo)簽:玉樹 江西 瀘州 內(nèi)江 廈門 江門 湖北 泰安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用ffmpeg命令行轉(zhuǎn)壓視頻示例代碼》,本文關(guān)鍵詞  利用,ffmpeg,命令行,轉(zhuǎn)壓,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用ffmpeg命令行轉(zhuǎn)壓視頻示例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于利用ffmpeg命令行轉(zhuǎn)壓視頻示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章