h.264碼流打包分析
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單元,冗餘編碼影象使得即使基本編碼影象丟失,仍可得到較「粗糙」的影象。
1. 引言
2. rtp 協議關鍵引數的設定
3. h.264 基本流結構及其傳輸機制
3.1 h.264 基本流的結構
f:forbidden_zero_bit.1 位,如果有語法衝突,則為 1。當網路識別此單元存在位元錯誤時,可將其設為 1,以便接收方丟掉該單元。
nri:nal_ref_idc.2 位,用來指示該nalu 的重要性等級。值越大,表示當前nalu越重要。具體大於0 時取何值,沒有具體規定。
type:5 位,指出nalu 的型別。具體如表1 所示:
rfc3984 給出了3 中不同的rtp 打包方案:
(1)single nalu packet:在乙個rtp 包中只封裝乙個nalu,在本文中對於小於 1400位元組的nalu 便採用這種打包方案。
(2)aggregation packet:在乙個rtp 包中封裝多個nalu,對於較小的nalu 可以採用這種打包方案,從而提高傳輸效率。
(3)fragmentation unit:乙個nalu 封裝在多個rtp包中,在本文中,對於大於1400位元組的nalu 便採用這種方案進行拆包處理。
4. h.264 流**傳輸系統的實現
5. 結論
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 它的原因是 ...