天天看點

音視訊編解碼學習之編解碼架構

1. 壓縮碼流

文法:碼流中各個元素的位置關系01001001…圖像編碼類型(01),宏塊類型(00),編碼系數1001等

語義:每個文法元素所表達的意義。例如:圖像編碼類型

音視訊編解碼學習之編解碼架構

2. 編碼層次

序列(Sequence)

圖像組(Group of Pictures,GOP)

圖像(Picture)

條帶(Slice)

宏塊(Macroblock,MB)

塊(Block)

3. 碼流結構

音視訊編解碼學習之編解碼架構
  1. PB幀編碼
    音視訊編解碼學習之編解碼架構
    這裡已經給大家準備好了安裝環境和各種視訊資料帶你入門音視訊開發,資料放在自己的群裡面:832218493(需要自取)
音視訊編解碼學習之編解碼架構
音視訊編解碼學習之編解碼架構

4. 序列編碼對象

(1)IBBP序列

音視訊編解碼學習之編解碼架構

序列:一段連續編碼的并具有相同參數的視訊圖像。

序列起始碼:專有的一段比特串,辨別一個序列的壓縮資料的開始MPEG-2的序列起始碼為十六進制數000001(B3)。

序列頭:記錄序列資訊檔次(Profile),級别(Level),寬度,高度,是否是逐行序列,幀率等。

序列結束碼:專有的一段比特串,辨別該序列的壓縮資料的結束MPEG-2的序列結束碼為十六進制數000001(B7)。

5. 圖像組編碼對象

音視訊編解碼學習之編解碼架構

6. 圖像編碼結構

圖像:

圖像起始碼:專有的一段比特串,辨別一個圖像的壓縮資料的開始MPEG-2的圖像起始碼為十六進制數000001(00)。

圖像頭:記錄圖像資訊圖像編碼類型,圖像距離,圖像編碼結構,圖像是否為逐行掃描。

7. 圖像分塊編碼

音視訊編解碼學習之編解碼架構

8. 條帶編碼結構

條帶:多個宏塊的組合。

條帶起始碼:專有的一段比特串,辨別一個條帶的壓縮資料的開始MPEG-2的條帶起始碼為十六進制數000001(0~AF)。

條帶頭:記錄目前圖像的相關資訊條帶位置,條帶量化參數,宏塊編碼技術辨別等。

9. 條帶編碼對象

音視訊編解碼學習之編解碼架構

10. 宏塊編碼結構

宏塊:16x16的像素塊(對亮度而言)。

宏塊内容:宏塊編碼類型,編碼模式,參考幀索引,運動矢量資訊,宏塊編碼系數等。

11. 宏塊編碼對象

音視訊編解碼學習之編解碼架構

12. 塊編碼結構

8x8或4x4塊的變換量化系數的熵編碼資料。

CBP (Coded Block Patten):用來訓示塊的變換量化系數是否全為零。對于YUV(4:2:0)編碼,CBP通常6比特長,每個比特對應一個塊,當某一塊的變換量化系數全為零時,其對應比特位值為0,否則為1。

每個塊的變換量化系數的最後用一個EOB (End of Block)符号來辨別。

13. 視訊編解碼關鍵技術

預測:通過幀内預測和幀間預測降低視訊圖像的空間備援和時間備援。

變換:通過從時域到頻域的變換,去除相鄰資料之間的相關性,即去除空間備援。

量化:通過用更粗糙的資料表示精細的資料來降低編碼的資料量,或者通過去除人眼不敏感的資訊來降低編碼資料量。

掃描:将二維變換量化資料重新組織成一維的資料序列。

熵編碼:根據待編碼資料的機率特性減少編碼備援。

音視訊編解碼學習之編解碼架構

14. 預測

空間預測:利用圖像空間相鄰像素的相關性來預測的方法。幀内預測技術:利用目前編碼塊周圍已經重構出來的像素預測目前塊Intra圖像編碼(I幀)

時間預測:利用時間上相鄰圖像的相關性來預測的方法。幀間預測:運動估計(Motion Estimation,ME),運動補償(Motion Compensation,MC)Inter圖像編碼:前向預測編碼圖像(P幀),雙向預測編碼圖像(B幀)

15. 幀内預測

I幀圖像的每個宏塊都采用幀内(Intra)預測編碼模式。

宏塊分成8x8或者4x4塊,對每個塊采用幀内預測編碼,稱作Intra8x8或者Intra4x4。

幀内預測有多個預測方向:水準,垂直,左下,右上。

幀内預測還有直流(DC)預測。

色度塊預測還有平面預測。

16. 幀間預測

塊基運動估計:為待預測塊在參考幀上找到最佳的預測塊,并記錄預測塊在參考幀上的相對位置。

運動矢量(MV):參考幀上的預測塊與目前幀上的的待預測塊的相對位置。MV有兩個分量:(x,y)

分像素運動估計最佳的預測塊不在整像素位置,而在分像素位置;1/2,1/4,1/8像素插值得到分像素值。

幀間預測流程:

運動補償:給定MV和參考幀,為待解碼塊從參考幀上擷取預測塊。

運動矢量編碼MV預測:用目前塊的周圍可得到鄰塊的運動矢量來預測目前塊的運動矢量運動矢量差(MV difference,MVD):實際運動矢量與預測運動矢量的差,即:運動矢量差采用變長編碼。

17. 預測殘差

音視訊編解碼學習之編解碼架構

18. 變換編碼

變換編碼:通過變換将空域信号轉換為頻域信号來去除空間信号的備援資訊,減少編碼資料。

二維離散餘弦變換4x4變換,8x8變換

音視訊編解碼學習之編解碼架構

二維離散餘弦變換

例:

音視訊編解碼學習之編解碼架構

變換系數:直流(DC)系數,交流(AC)系數

音視訊編解碼學習之編解碼架構

19. 量化

量化原理:将含有大量的資料集合映射到含有少量的資料集合中。

音視訊編解碼學習之編解碼架構
音視訊編解碼學習之編解碼架構
音視訊編解碼學習之編解碼架構
音視訊編解碼學習之編解碼架構
音視訊編解碼學習之編解碼架構

一般情況下量化後高頻部分包含大量的零系數

音視訊編解碼學習之編解碼架構

量化對主觀品質的影響

音視訊編解碼學習之編解碼架構

20. 掃描

掃描:将二維資料轉換為一維的資料序列。

音視訊編解碼學習之編解碼架構
音視訊編解碼學習之編解碼架構

21. 熵編碼

熵編碼:根據符号出現的機率,對經常出現的符号配置設定較短的碼字,對不常出現的符号配置設定較長的碼字。

Level-Run編碼:用資料中非零值和其前面非零值之間出現零值的個數重新描述量化系數序列為(Level,Run)二進制組序列

音視訊編解碼學習之編解碼架構

變長編碼将Level-Run編碼後的(level,run)變長編碼成最終的比特串。

音視訊編解碼學習之編解碼架構

22. 碼率控制

受到緩沖區,帶寬的限制,編碼碼率不能無限制的增長,是以需要通過碼率控制來将編碼碼流控制在目标碼率範圍内。

一般通過調整量化參數的手段控制碼率幀級控制條帶級控制宏塊級控制

碼率控制考慮的問題防止碼流有較大的波動,導緻緩沖區發生溢出,同時保持緩沖區盡可能的充滿,讓圖像品質盡可能的好而且穩定

CBR(Constant Bit Rate)比特率穩定,但圖像品質變化大

VBR(Variable Bit Rate)比特率波動大,但圖像品質穩定

碼率控制算法碼率配置設定碼率控制

碼率控制屬于非标準技術編碼端有,解碼端沒有

第5章 預測

  1. 預測技術

目的:去除空間備援和時間備援。

視訊存在大量的空間備援和時間備援空間備援:用幀内預測編碼去除基于塊的幀内預測時間備援:用幀間預測編碼去除基于塊比對(Block Matching)的幀間預測

預測後得到去除大部分空間或時間備援的殘差

2. 空間備援

圖像空間相鄰像素具有很強的相關性。

幀内預測技術去除空間備援

音視訊編解碼學習之編解碼架構