音視頻數(shù)據(jù)處理(一)-H264/AVC視頻碼流分析

一秋秤、H264概述

H264是MPEG-4的第十部分屉更,是由ITU-T和ISO/IEC兩大組織聯(lián)合提出的視頻編解碼標(biāo)準(zhǔn)余指,這個(gè)標(biāo)準(zhǔn)通常被稱之為H.264/AVC洋侨。H264編碼是一種主流編碼方式毡熏,本文主要從數(shù)據(jù)處理的角度對(duì)H264視頻碼流進(jìn)行分析坦敌。

二、H264碼流結(jié)構(gòu)

H264原始碼流(裸流)是由多個(gè)NAL單元組成的,具體如下圖所示:

...... NALU NALU NALU ......

NALU單元是由什么組成的呢狱窘?NALU單元主要由三部分組成杜顺,具體如下圖所示:

Start Code NALU Header NALU Payload

1.Start Code

Start Code,即開(kāi)始碼蘸炸,一般為4字節(jié)或3字節(jié)躬络,必須是“0x00 0x00 0x00 0x01”或“0x00 0x00 0x01”,用來(lái)表示一個(gè)NALU單元的開(kāi)始搭儒。

2.NALU Header

NALU Header穷当,1個(gè)字節(jié),由forbidden_bit(1bit)淹禾,nal_reference_bit(2bits)馁菜,nal_unit_type(5bits)三部分組成,具體如下圖所示:


NALU Header.png

(1)forbidden_bit(1bit)

F禁止位铃岔,占用NALU Header的第一個(gè)位汪疮,值默認(rèn)0,值為1時(shí)表示錯(cuò)誤毁习,當(dāng)網(wǎng)絡(luò)發(fā)現(xiàn)NAL單元有比特錯(cuò)誤時(shí)可設(shè)置該比特為1智嚷,以便接收方糾錯(cuò)或丟掉該單元。

(2)nal_reference_bit(2bits)

NRI重要性指示位纺且,占用NALU Header的第二盏道、三位,用來(lái)表示NAL單元的重要性,取值00~11载碌,取值越大摇天,表示此NAL單元越重要。

(3)nal_unit_type(5bits)

Type類型恐仑,占用NALU Header的第四到八位,用來(lái)表示NAL單元的類型为鳄,具體取值如下圖所示:


nal_unit_type.png

3.NALU Payload

NALU Payload裳仆,即視頻壓縮數(shù)據(jù)RBSP,但是嚴(yán)格意義上來(lái)說(shuō)孤钦,Payload數(shù)據(jù)應(yīng)該是EBSP歧斟,接下來(lái)詳細(xì)介紹一下H264碼流數(shù)據(jù)中的相關(guān)概念。

(1)編碼分層

H264編碼主要分為兩層:視頻編碼層(VCL層)和視頻數(shù)據(jù)網(wǎng)絡(luò)抽象層(NAL層)偏形,其中静袖,VCL層對(duì)視頻的原始數(shù)據(jù)進(jìn)行壓縮,NAL層負(fù)載將視頻數(shù)據(jù)組合成NALU單元進(jìn)行網(wǎng)絡(luò)傳輸俊扭。

(2)碼流相關(guān)概念

SODB(String Of Data Bits):原始數(shù)據(jù)比特流

由VCL層產(chǎn)生的的原始數(shù)據(jù)流扭勉,由于數(shù)據(jù)長(zhǎng)度不一定是8的倍數(shù)喷屋,為方便計(jì)算機(jī)進(jìn)行處理瓜浸,就用到了RBSP啄巧。

RBSP(Raw Byte Sequence Payload):原始字節(jié)序列載荷

即在SODB的后面添加了trailing bits,即一個(gè)bit 1和若干個(gè)bit 0尚胞,以便字節(jié)對(duì)齊。

EBSP (Encapsulated Byte Sequence Payload):擴(kuò)展字節(jié)序列載荷

NALU單元是通過(guò)開(kāi)始碼“0x00 0x00 0x00 0x01”或者“0x00 0x00 0x01”來(lái)表示一個(gè)NALU單元的開(kāi)始,同時(shí)H264規(guī)定贮匕,當(dāng)檢測(cè)到0x00 0x00 0x00時(shí),也可以表示當(dāng)前NALU的結(jié)束花枫。那這樣就會(huì)產(chǎn)生一個(gè)問(wèn)題刻盐,就是如果在NALU的內(nèi)部,出現(xiàn)了"0x00 0x00 0x01"或"0x00 0x00 0x00"時(shí)該怎么辦劳翰?所以在h264碼流中規(guī)定每有兩個(gè)連續(xù)的00 00敦锌,就增加一個(gè)0x03,從而預(yù)防壓縮后的數(shù)據(jù)與開(kāi)始碼產(chǎn)生沖突,防止競(jìng)爭(zhēng)磕道。

三供屉、H264數(shù)據(jù)示例

利用UItraEdit工具打開(kāi)一個(gè)H264文件進(jìn)行數(shù)據(jù)分析,如下圖所示:


H264.png

如上圖所示溺蕉,我們可以清晰的看到在H264碼流中伶丐,是以“0x00 0x00 0x00 0x01”為開(kāi)始碼的,找到開(kāi)始碼后疯特,后面的一個(gè)字節(jié)表示NALU Header哗魂,上圖所示分別標(biāo)注了SPS、PPS漓雅、IDR類型录别。

結(jié)語(yǔ)

本文主要從數(shù)據(jù)處理的角度對(duì)H264視頻碼流數(shù)據(jù)進(jìn)行了分析,這也是音視頻數(shù)據(jù)處理的基礎(chǔ)邻吞,后續(xù)會(huì)針對(duì)音視頻開(kāi)發(fā)技術(shù)進(jìn)行詳細(xì)的介紹组题。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抱冷,隨后出現(xiàn)的幾起案子崔列,更是在濱河造成了極大的恐慌,老刑警劉巖旺遮,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赵讯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡耿眉,警方通過(guò)查閱死者的電腦和手機(jī)边翼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸣剪,“玉大人组底,你說(shuō)我怎么就攤上這事丈积。” “怎么了斤寇?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵桶癣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我娘锁,道長(zhǎng)牙寞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任莫秆,我火速辦了婚禮间雀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镊屎。我一直安慰自己惹挟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布缝驳。 她就那樣靜靜地躺著连锯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪用狱。 梳的紋絲不亂的頭發(fā)上运怖,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音夏伊,去河邊找鬼摇展。 笑死,一個(gè)胖子當(dāng)著我的面吹牛溺忧,可吹牛的內(nèi)容都是我干的咏连。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鲁森,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼祟滴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起歌溉,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤踱启,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后研底,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡透罢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年榜晦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羽圃。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乾胶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情识窿,我是刑警寧澤斩郎,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站喻频,受9級(jí)特大地震影響缩宜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甥温,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一锻煌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姻蚓,春花似錦宋梧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至加叁,卻和暖如春倦沧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背殉农。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工刀脏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人超凳。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓愈污,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親轮傍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暂雹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容