<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    H.264碼流結構解析

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    from:http://wenku.baidu.com/link?url=hYQHJcAWUIS-8C7nSBbf-8lGagYGXKb5msVwQKWyXFAcPLU5gR4BKOVLrFOw4bX5nWwGxQ9d1-kj0JYvAZA5-wz7KmW4tYeF_qmS1FNyV2e

     

    H.264碼流結構解析 
    1. H.264簡介 
    MPEG(Moving Picture Experts Group)和VCEG(Video Coding Experts Group)已經聯合開發了一個比早期研發的MPEG 和H.263性能更好的視頻壓縮編碼標準,這就是被命名為AVC(Advanced Video Coding),也被稱為ITU-T H.264建議和MPEG-4的第10 部分的標準,簡稱為H.264/AVC或H.264。這個國際標準已經與2003年3月正式被ITU-T所通過并在國際上正式頒布。為適應高清視頻壓縮的需求,2004年又增加了FRExt部分;為適應不同碼率及質量的需求,2006年又增加了可伸縮編碼 SVC。 
     
    2. H.264編碼格式 
    H.263定義的碼流結構是分級結構,共四層。自上而下分別為:圖像層(picturelayer)、塊組層(GOB layer)、宏塊層(macroblock layer)和塊層(block layer)。而與H.263相比,H.264的碼流結構和H.263的有很大的區別,它采用的不再是嚴格的分級結構。 
    H.264支持4:2:0的連續或隔行視頻的編碼和解碼。H.264壓縮與H.263、MPEG-4相比,視頻壓縮比提高了一倍。 
    H.264的功能分為兩層:視頻編碼層(VCL, Video Coding Layer)和網絡提取層(NAL, Network Abstraction Layer)。VCL數據即編碼處理的輸出,它表示被壓縮編碼后的視頻數據序列。在VCL數據傳輸或存儲之前,這些編碼的VCL數據,先被映射或封裝進NAL單元中。每個NAL單元包括一個原始字節序列負荷(RBSP, Raw Byte Sequence Payload)、一組對應于視頻編碼的NAL頭信息。RBSP的基本結構是:在原始編碼數據的后面填加了結尾比特。一個bit“1”若干比特“0”,以便字節對齊。 
    NAL頭
    „„
    RBSP
    NAL頭
    RBSP
    NAL頭
    RBSP
    „„
     
    圖1 NAL單元序列 
     
    3. H.264傳輸 
    H.264的編碼視頻序列包括一系列的NAL單元,每個NAL單元包含一個RBSP,見表1。編碼片(包括數據分割片IDR片)和序列RBSP結束符被定義為VCL NAL單元,其余為NAL單元。典型的RBSP單元序列如圖2所示。每個單元都按獨立的NAL單元傳送。單元的信息頭(一個字節)定義了RBSP單元的類型,NAL單元的其余部分為RBSP數據。 
    SPS
    P片
    SEI
    PPS
    I片
    圖像定界符
    P片
     
    圖2 RBSP序列舉例 
     
    RBSP類型 描述 
    參數集PS 序列的全局,如圖像尺寸、視頻格式等 
    增強信息SEI 視頻序列解碼的增強信息 
    圖像定界符PD 
    視頻圖像的邊界 編碼片 片的頭信息和數據 
    數據分割 
    DP片層的數據,用于錯誤恢復解碼 

     

     

     

     

     

     


    序列結束符 表明下一圖像為IDR圖像 流結束符 表明該流中已沒有圖像 填充數據 
    啞元數據,用于填充字節 表1 RBSP描述 
    4. H.264碼流結構圖 
    起始碼Nal Unit„„RTP Packet„„
    層二:NAL Unit
    層一:
    A. Annexb格式
    B. RTP格式
    NALU Header
    NALU 主體
    層三:Slice
    Slice Header
    Slice Data
    層四:Slice Data
    flags
    Macroblock Layer Macroblock Layer „„
    層五:PCM類
    mb_type
    PCM Data
    mb_type
    Sub_mb_pred或mb_pred
    Residual Data
    其他宏塊類型
    層六:Residual 
    Residual Block
     
    圖3 H.264碼流分層結構 
     
    起始碼:如果NALU對應的Slice為一幀的開始,則用4字節表示,即0x00000001;否則用3字節表示,0x000001。 
    NAL Header:forbidden_bit,nal_reference_bit(優先級),nal_unit_type(類型)。 
    脫殼操作:為了使NALU主體不包括起始碼,在編碼時每遇到兩個字節(連續)的0,就插入一字節0x03,以和起始碼相區別。解碼時,則將相應的0x03刪除掉。 
    NALU類型: 
    Nal_unit_type 
    NAL類型 C 0 未使用 
     1 不分區、非IDR圖像的片 
    2,3,4 2 片分區A 2 3 片分區B 3 4 片分區C 4 5 IDR圖像中的片 2,3 6 
    補充增強信息單元(SEI) 

     

     

     

     

    7 序列參數集 0 8 圖像參數集 1 9 分界符 6 10 序列結束 7 11 碼流結束 8 12 填充 9 13~23 保留  24~31 
    未使用 
     
    表2 nal_unit_type語義 
     
    sub_mb_pred和mb_pred:運動補償或者是幀內預測。  
    5. H.264解碼 
    NAL頭信息的nal_referrence_idc(NRI)用于在重建過程中標記一個NAL單元的重要性,值為0表示這個NAL單元沒有用預測,因此可以被解碼器拋棄而不會有錯誤擴散;值高于0表示NAL單元要用于無漂移重構,且值越高,對此NAL單元丟失的影響越大。 
    NAL頭信息的隱藏比特位,在H.264編碼器中默認為0,當網絡識別到單元中存在比特錯誤時,可將其置為1。隱藏比特位主要用于適應不同種類的網絡環境(比如有線無線相結合的環境)。 
    從碼流中獲取NALU
    將NALU中的數據轉換成RBSP
    NALU類型
    進入片解碼過程
    SLICE=1
    IDR=5
    進入SEI解碼過程進入SPS解碼過程進入PPS解碼過程
    出錯處理
    進入A片分割解碼過程進入B片分割解碼過程進入C片分割解碼過程SEI=6SPS=7PPS=7Else
    DPA=2
    DPA=3DPA=4圖4 NAL單元解碼 
     
    NAL單元解碼的流程為:首先從NAL單元中提取出RBSP語法結構,然后按照如圖4所示的流程處理RBSP語法結構。輸入的是NAL單元,輸出結果是經過解碼的當前圖像的樣值點。 
    NAL單元中分別包含了序列參數集和圖像參數集。圖像參數集和序列參數集在其他NAL單元傳輸過程中作為參考使用,在這些數據NAL單元的片頭中,通過語法元素pic_parameter_set_id設置它們所使用的圖像參數集編號;而相應的每個圖像參數集中,通過語法元素seq_paramter_set_id設置他們使用的序列參數集編號。 
     
    6. 各分層結構的語法元素參考G50標準。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全