H264碼流分析

2021-06-17 17:10:44 字數 1119 閱讀 9737

sodb 資料位元串-->最原始的編碼資料

rbsp 原始位元組序列載荷-->在sodb的後面填加了結尾位元(rbsp trailing bits 乙個bit「1」)若干位元「0」,以便位元組對齊。

ebsp 擴充套件位元組序列載荷-- >在rbsp基礎上填加了仿校驗位元組(0x03)它的原因是: 在nalu加到annexb上時,需要填加每組nalu之前的開始碼 startcodeprefix,如果該nalu對應的slice為一幀的開始則用4位位元組表示,ox00000001,否則用3位位元組表示 ox000001.為了使nalu主體中不包括與開始碼相衝突的,在編碼時,每遇到兩個位元組連續為0,就插入乙個位元組的0x03。解碼時將0x03去掉。也稱為脫殼操作。

nal頭

ebsp

nal頭

ebsp

nal頭

ebsp

nal單元

每個nal單元是乙個一定語法元素的可變長位元組字串,包括包含乙個位元組的頭資訊(用來表示資料型別),以及若干整數位元組的負荷資料。乙個nal單元可以攜帶乙個編碼片、a/b/c型資料分割或乙個序列或影象引數集。

nal單元按rtp序列號按序傳送。其中,t為負荷資料型別,佔5bit;r為重要性指示位,佔2個bit;最後的f為禁止位,佔1bit。具體如下:

(1)nalu型別位

可以表示nalu的32種不同型別特徵,型別1~12是h.264定義的,型別24~31是用於h.264以外的,rtp負荷規範使用這其中的一些值來定義包聚合和**,其他值為h.264保留。

(2)重要性指示位

用於在重構過程中標記乙個nal單元的重要性,值越大,越重要。值為0表示這個nal單元沒有用於**,因此可被解碼器拋棄而不會有錯誤擴散;值高於0表示此nal單元要用於無漂移重構,且值越高,對此nal單元丟失的影響越大。

(3)禁止位

h.264採用上述嚴格的接入單元,不僅使h.264可自適應於多種網路,而且進一步提高其抗誤碼能力。序列號的設定可發現丟的是哪乙個vcl單元,冗餘編碼影象使得即使基本編碼影象丟失,仍可得到較「粗糙」的影象。

以上來自部落格:

h 264碼流打包分析

h264碼流打包分析 sodb 資料位元串 最原始的編碼資料 rbsp 原始位元組序列載荷 在sodb的後面填加了結尾位元 rbsp trailing bits 乙個bit 1 若干位元 0 以便位元組對齊。ebsp 擴充套件位元組序列載荷 在rbsp基礎上填加了仿校驗位元組 0x03 它的原因是 ...

H264碼流打包分析

h264碼流打包分析 sodb 資料位元串 最原始的編碼資料 rbsp 原始位元組序列載荷 在sodb的後面填加了結尾位元 rbsp trailing bits 乙個bit 1 若干位元 0 以便位元組對齊。ebsp 擴充套件位元組序列載荷 在rbsp基礎上填加了仿校驗位元組 0x03 它的原因是 ...

h 264碼流打包分析

h264碼流打包分析 sodb 資料位元串 最原始的編碼資料 rbsp 原始位元組序列載荷 在sodb的後面填加了結尾位元 rbsp trailing bits 乙個bit 1 若干位元 0 以便位元組對齊。ebsp 擴充套件位元組序列載荷 在rbsp基礎上填加了仿校驗位元組 0x03 它的原因是 ...