如何理解H264 編碼


H264 結構 https://blog.csdn.net/andywang201001/article/details/80274886

H264 源碼  https://www.cnblogs.com/TaigaCon/p/5215448.html

一、視頻編碼標准化組織

H.264標准是屬於MPEG-4家族的一部分,即MPEG-4系列文檔ISO-14496的第10部分,因此又稱作MPEG-4/AVC。

 

二、視頻壓縮編碼的基本技術

預測編碼

  幀間預測編碼,前后兩幀之間有數據冗余,差分之后數據量非常小,可以進行幀間預測編碼

  幀內預測編碼,幀內有數據冗余,可以進行幀內預測編碼,幀內編碼后可以進行獨立解碼,不用參考其他幀

變換編碼:(變換到另一個數據域上)

  編碼方式:DCT(離散余弦變換), DST(離散正弦變換),K-L變換  

熵編碼:

  由於一個數據塊的符號出現的概率並不一樣, 這就導致使用同樣長度的碼字表示所有的符號會造成浪費。通過熵編碼,針對不同的語法元素分配不同長度的碼元,可以有效消除視頻信息中由於符號概率導致的冗余。

三、VCL NAL

視頻編碼中采用的如預測編碼、變化量化、熵編碼等編碼工具主要工作在slice層或以下,這一層通常被稱為“視頻編碼層”(Video Coding Layer, VCL)。

相對的,在slice以上所進行的數據和算法通常稱之為“網絡抽象層”(Network Abstraction Layer, NAL)。設計定義NAL層的主要意義在於提升H.264格式的視頻對網絡傳輸和數據存儲的親和性。

 

四、檔次與級別

為了適應不同的應用場景,H.264也定義了三種不同的檔次:

  • 基准檔次(Baseline Profile):主要用於視頻會議、可視電話等低延時實時通信領域;支持I條帶和P條帶,熵編碼支持CAVLC算法, 實時通信領域不使用B幀(雙向預測幀)
  • 主要檔次(Main Profile):主要用於數字電視廣播、數字視頻數據存儲等;支持視頻場編碼、B條帶雙向預測和加權預測,熵編碼支持CAVLC和CABAC算法。
  • 擴展檔次(Extended Profile):主要用於網絡視頻直播與點播等;支持基准檔次的所有特性,並支持SI和SP條帶,支持數據分割以改進誤碼性能,支持B條帶和加權預測,但不支持CABAC和場編碼。

CAVLC支援所有的H.264 profiles,CABAC則不支援Baseline以及Extended profiles。

 

 

 

名詞解釋:

VCL :Video Coding Layer   視頻編碼層

NAL: Network Abstraction Layer  網絡抽象層

RBSP   : Raw Byte Sequence Payload,原始字節序列載荷

 MB:   宏塊

GOP: 畫面組, 

OP一般有兩個數字,如M=3,N=12.M制定I幀與P幀之間的距離,N指定兩個I幀之間的距離。那么現在的GOP結構是

I BBP BBP BBP BB I

 

NALU 分析

NALU =   NAL Header  |  RBSP   

RBSP = Slice Header | SliceData

SliceData = flags | MB MB MB...

 

 

 

幀      :有1個或多個片組,如果不采用FMO(靈活宏塊排序)機制,則一幀只有一個片組

片組  :包含1個片(slice)或多個片

片      :slice,由宏塊組成,如果不采用DP(數據分割)機制,1個片只包含1個NALU,

               否則1個片由3個NALU組成,nal_unit_type值等於2、3、4的NALU屬於同一個片

               分片的目的是限制誤碼的擴撒和傳輸,使片間保持獨立,[ [slice header] [slice data] ]

               [slice header] 說明了片類型、屬於哪個幀、參考幀等

               [slice data] 里是整數個宏塊

宏塊   :編碼處理的基本單元,由多個塊組成,通常宏塊大小為16X16像素,分為I、B、P宏塊

塊       :一個編碼圖像要划分成多個塊才能進行處理,一個塊是4X4像素

圖像解碼過程是按照slice進行解碼,然后按照片組將解碼宏塊重組成圖像


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM