4 H.264 的概念梳理
4.1 幀汤徽、分片、宏塊(frame脂新、slice挪捕、MB (Macro Block) 等)概念關(guān)系
其中,NAL ( Network Abstraction Layer) 網(wǎng)絡(luò)抽象層争便,它是一種信息分包層類型级零,給編碼的視頻比特流加上某種前綴。涉及 NAL Unit 的目的是為視頻數(shù)據(jù)的傳輸提供一種友好的網(wǎng)絡(luò)環(huán)境滞乙。NAL Unit 是某種前綴如 “0x0001” 或者“0x001”之間的數(shù)據(jù)奏纪,這之間的數(shù)據(jù)映射到一個 NAL 單元鉴嗤。
NAL Unit 含 8 bit 的首部、RBSP(有效載荷類型)序调,首部信息定了 NALU 類型躬窜,RBSP 字節(jié)用于有效載荷數(shù)據(jù)字節(jié)的對齊,這些數(shù)據(jù)包括起始碼值但不包括起始碼前綴炕置。
H.264 中 NALU 在 AVPacket 間用 “0x0001” 分割荣挨,在 AVPacket 內(nèi)部用 “0x001” 分割。
4.2 GOP
GOP(Group of Pictures)策略影響編碼質(zhì)量(壓縮比)和傳輸質(zhì)量朴摊。示意圖如下:
GOP 是序列中的一個圖片集默垄,用來輔助隨機(jī)存取。GOP 的第一個圖像必須為 I 幀甚纲,這樣就能保證GOP 不需要參考其他圖像口锭,可以獨立解碼。一個 GOP 里含有一個 IDR介杆、PPS鹃操、SPS。簡單地講春哨,I 幀是關(guān)鍵幀荆隘,可以理解為一個完整的畫面,而 P 幀和 B 幀記錄的是相對于 I 幀的變化赴背,P 幀表示跟前一幀的差別椰拒,B 幀表示前后幀差別。沒有 I 幀凰荚,P 幀和 B 幀就無法解碼燃观。(來自百度百科)
解碼與 B 幀的關(guān)系,B 幀提升了壓縮率便瑟。同時造成 PTS缆毁、DTS 差異。注意到涂,IDR幀是一種特殊的 I幀脊框,在解碼IDR幀前,清空所有前后向參考緩沖區(qū)养盗,IDR幀隨后的所有幀不需要參考 IDR 前面的任何幀缚陷。