即时通讯音视频开发(三):视频编解码之编码基础
生活随笔
收集整理的這篇文章主要介紹了
即时通讯音视频开发(三):视频编解码之编码基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
即時通訊應用中的實時音視頻技術,幾乎是IM開發中的最后一道高墻。原因在于:實時音視頻技術 = 音視頻處理技術 + 網絡傳輸技術 的橫向技術應用集合體,而公共互聯網不是為了實時通信設計的。
系列文章
- 《即時通訊音視頻開發(一):視頻編解碼之理論概述》
- 《即時通訊音視頻開發(二):視頻編解碼之數字視頻介紹》
1. 如何理解壓縮碼流?
可按2部分進行理解:
?
- 語法:碼流中各個元素的位置關系。
如:01001001…,表示圖像編碼類型(01),宏塊類型(00),編碼系數1001等。 - 語義:每個語法元素所表達的意義。
例如:圖像編碼類型。
?
2. 編碼層次的組成
編碼層次由如下部分組成:
?
- 序列(Sequence)
- 圖像組(Group of Pictures,GOP)
- 圖像(Picture)
- 條帶(Slice)
- 宏塊(Macroblock,MB)
- 塊(Block)
?
3. 具體的碼流結構
4. PB幀編碼
5. IBBP序列編碼對象
?
- 序列是指一段連續編碼的并具有相同參數的視頻圖像。
- 序列起始碼是指專有的一段比特串,標識一個序列的壓縮數據的開始。如MPEG-2的序列起始碼為十六進制數000001(B3)。
- 序列頭是指記錄序列信息,包含檔次(Profile),級別(Level),寬度,高度,是否是逐行序列,幀率等內容。
- 序列結束碼是指專有的一段比特串,標識該序列的壓縮數據的結束。如MPEG-2的序列結束碼為十六進制數000001(B7)。
6. 圖像組編碼對象
7. 圖像編碼結構
包括:
- 圖像。
- 圖像起始碼:專有的一段比特串,標識一個圖像的壓縮數據的開始。
如MPEG-2的圖像起始碼為十六進制數000001(00)。 - 圖像頭:記錄圖像信息。
包含圖像編碼類型,圖像距離,圖像編碼結構,圖像是否為逐行掃描。
8. 圖像分塊編碼
9. 條帶編碼結構
?
- 條帶:多個宏塊的組合。
- 條帶起始碼:專有的一段比特串,標識一個條帶的壓縮數據的開始。如MPEG-2的條帶起始碼為十六進制數000001(0~AF)。
- 條帶頭:記錄當前圖像的相關信息。含條帶位置,條帶量化參數,宏塊編碼技術標識等。
10. 條帶編碼對象
11. 宏塊編碼結構
?
- 宏塊:16x16的像素塊(對亮度而言)。
- 宏塊內容:宏塊編碼類型,編碼模式,參考幀索引,運動矢量信息,宏塊編碼系數等。
12. 宏塊編碼對象
13. 塊編碼結構
?
- 8x8或4x4塊的變換量化系數的熵編碼數據。
- CBP (Coded Block Patten):用來指示塊的變換量化系數是否全為零。
對于YUV(4:2:0)編碼,CBP通常6比特長,每個比特對應一個塊,當某一塊的變換量化系數全為零時,其對應比特位值為0,否則為1。 - 每個塊的變換量化系數的最后用一個EOB (End of Block)符號來標識。
14. 視頻編解碼關鍵技術
?
- 預測:通過幀內預測和幀間預測降低視頻圖像的空間冗余和時間冗余。
- 變換:通過從時域到頻域的變換,去除相鄰數據之間的相關性,即去除空間冗余。
- 量化:通過用更粗糙的數據表示精細的數據來降低編碼的數據量,或者通過去除人眼不敏感的信息來降低編碼數據量。
- 掃描:將二維變換量化數據重新組織成一維的數據序列。
- 熵編碼:根據待編碼數據的概率特性減少編碼冗余。
15. 預測
空間預測:利用圖像空間相鄰像素的相關性來預測的方法
- 幀內預測技術:利用當前編碼塊周圍已經重構出來的像素預測當前塊
- Intra圖像編碼(I幀)
時間預測:利用時間上相鄰圖像的相關性來預測的方法
- 幀間預測:運動估計(Motion Estimation,ME),運動補償(Motion Compensation,MC)
- Inter圖像編碼:前向預測編碼圖像(P幀),雙向預測編碼圖像(B幀)
16. 幀內預測
?
- I幀圖像的每個宏塊都采用幀內(Intra)預測編碼模式。
- 宏塊分成8x8或者4x4塊,對每個塊采用幀內預測編碼,稱作Intra8x8或者Intra4x4。
- 幀內預測有多個預測方向:水平,垂直,左下,右上。
- 幀內預測還有直流(DC)預測。
- 色度塊預測還有平面預測。
17. 量化
?
1量化原理
將含有大量的數據集合映射到含有少量的數據集合中。
一般情況下量化后高頻部分包含大量的零系數
量化對主觀質量的影響
18. 碼率控制
受到緩沖區,帶寬的限制,編碼碼率不能無限制的增長,因此需要通過碼率控制來將編碼碼流控制在目標碼率范圍內。
一般通過調整量化參數的手段控制碼率:
?
- 幀級控制
- 條帶級控制
- 宏塊級控制
碼率控制考慮的問題:
- 防止碼流有較大的波動,導致緩沖區發生溢出,
- 同時保持緩沖區盡可能的充滿,讓圖像質量盡可能的好而且穩定
CBR(Constant Bit Rate):比特率穩定,但圖像質量變化大。VBR(Variable Bit Rate):比特率波動大,但圖像質量穩定。
碼率控制算法:
- 碼率分配
- 碼率控制
碼率控制屬于非標準技術,編碼端有,解碼端沒有。
網易云信,你身邊的即時通訊和音視頻技術專家,了解我們,請戳網易云信官網
想要行業洞察和技術干貨,請關注網易云信博客
本文轉載自52im,作者:JackJiang
總結
以上是生活随笔為你收集整理的即时通讯音视频开发(三):视频编解码之编码基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网1分钟 |1105
- 下一篇: 即时通讯音视频开发(五):认识主流视频编