ffmpeg軟編碼之H 264

2021-10-09 05:48:30 字數 2790 閱讀 5466

寫在前面,下文是基於《ffmpeg從入門到精通》一書,4.1章節的精簡

ffmpeg -h encoder=libx264
若顯示 「encoder libx264 [libx264 h.264…"則成功

preset – 編碼器預設引數,字串型別

編碼方式的轉碼速度從大到小排序:ultrafast, supe***st, veryfast, faster, fast, medium, slow, slower, veryslow, placebo

編碼方式的選擇影響清晰度、編碼效率

/*以ultrafast為例,位元速率設定為2000k

預設引數在preset後進行修改即可

轉碼速度越大,畫質越差*/

ffmpeg -i input.mp4 -vcodec libx264 -preset ultrafast -b:v 2000k output.mp4

使用tune引數調優h.264編碼時,可以包含:film, animation, grain, stillimage等多個場景,每個場景引數設定除預設引數設定『-tune 《場景名》』外,略有差別,這裡不一一枚舉。

profile – 檔次(baseline, extented, main, high, high10, high422, high444)

level – 等級 (1, 1b, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1, 4.2, 5, 5.1, 5.2)

/*以baseline和high為例

level 均為3.1

均擷取10s*/

ffmpeg -i input.mp4 -vcodec libx264 -profile:v baseline -level 3.1 -an -y -t 10 output_baseline.ts

ffmpeg -i input.mp4 -vcodec libx264 -profile:v high -level 3.1 -an -y -t 10 output_high.ts

比較兩種profile的區別,以b幀數量為例

tips:i幀、p幀、b幀:i – 幀內編碼影象幀(關鍵幀),p幀 --**編碼影象幀(與之前的i/p幀比較),b幀 – 雙向**編碼影象幀(與之前的i/p幀,之後的p幀雙向比較,壓縮比最高)

/*grep,wc都是linux裡的命令,如果用win10建議裝乙個linux 的bush。否則可用findstr等替換*/

ffprobe -v quiet -show_frames -select_streams v output_baseline.ts |

grep

"pict_type=b"

|wc -l

ffprobe -v quiet -show_frames -select_streams v output_high.ts |

grep

"pict_type=b"

|wc -l

profile為baseline的輸出0,high的輸出不為0

-g 《幀數》 可以用來設定gop長度

/*每50幀設定為乙個gop間隔*/

ffmpeg -i input.mp4 -c:v libx264 -g 50 output.mp4

-sc_threshold 0 控制場景切換不插入關鍵幀

我們可以通過設定x264opts,對x264內部引數(如i/p/b幀的順序、頻率等各種規律)進行設定。

/*不出現b幀*/

ffmpeg -i input.mp4 -c:v libx264 -x264opts "bframes=0" output.mp4

/*每兩個p幀之間存放3個b幀*/

ffmpeg -i input.mp4 -c:v libx264 -x264opts "bframes=3:b-adapt=0" output.mp4

/*每兩個p幀之間存放10個b幀

最大位元速率和最小位元速率均為1000k bit/s

buffer(控制編碼時的波動)為50kb

設定訊號形勢為cbr

每50幀乙個gop

場景切換不強行插入關鍵幀*/

H264編碼原理

條件 1.yuv格式為yuv420 2.解析度為640 480 3.幀率為15 建議碼流500kbps,通過計算可以得到h264壓縮比約為1 100。gop中幀與幀之間的差別小 有失真壓縮包括幀內壓縮和幀間壓縮,幀內壓縮解決的是空域資料冗餘問題,幀間壓縮解決的是時域資料冗餘的問題。無失真壓縮包括dc...

H264編碼原理

前言 h264是新一代的編碼標準,以高壓縮高質量和支援多種網路的流 傳輸著稱,在編碼方面,我理解的他的理論依據是 參照一段時間內影象的統計結果表明,在相鄰幾幅影象畫面中,一般有差別的畫素只有10 以內的點,亮度差值變化不超過2 而色度差值的變化只有1 以內。所以對於一段變化不大影象畫面,我們可以先編...

H264編碼之GOP含義

說白了就是兩個 i幀之間的間隔 比較說 gop為 120,如果是720p60的話,那就是2s一次i 幀.i幀 p幀 b幀,如下圖所示。幀即intra coded picture 幀內編碼影象幀 不參考其他影象幀,只利用本幀的資訊進行編碼 p幀即 predictive codedpicture 編碼影...