直播技術(shù)--H264的基本概念

邏輯概念-圖片是如何被處理的

  • 對(duì)于輸入的每一幀圖片稿械,首先將整張圖片的數(shù)據(jù)劃分成多個(gè)塊泻红,稱之為宏塊谓着,一個(gè)宏塊由16×16亮度像素和附加的一個(gè)8×8 Cb 和一個(gè) 8×8 Cr 彩色像素塊組成
  • 若干個(gè)宏塊組合在一起渡讼,稱之為片绪商,片存在的意義是苛谷,在處理數(shù)據(jù)的時(shí)候,片的預(yù)測是不能以其他片的數(shù)據(jù)為參考的格郁,這樣預(yù)測的誤差就只會(huì)在這個(gè)片內(nèi)腹殿,而不會(huì)擴(kuò)散
  • 宏塊有三種類型
    • I宏塊:利用從當(dāng)前片中已解碼的像素作為參考進(jìn)行幀內(nèi)預(yù)測
    • P宏塊:利用前面已編碼圖像作為參考進(jìn)行幀內(nèi)預(yù)測,一個(gè)幀內(nèi)編碼的宏塊可進(jìn)一步作宏塊的分割例书,即 16×16锣尉、16×8、8×16 或 8×8 亮度像素塊(以及附帶的彩色像素)决采;如果選了 8×8 的子宏塊自沧, 則可再分成各種子宏塊的分割,其尺寸為 8×8树瞭、8×4拇厢、4×8 或 4×4 亮度像素塊(以及附帶的彩色像素)
    • B宏塊:利用雙向的參考圖像(當(dāng)前和未來的已編碼圖像幀)進(jìn)行幀內(nèi)預(yù)測

這樣整個(gè)幀流的邏輯結(jié)構(gòu)可以自上向下切分為如下的圖


概念結(jié)構(gòu)

編碼器的碼流結(jié)構(gòu)

片是最上層的獨(dú)立的數(shù)據(jù)單位,每個(gè)片必須自己攜帶關(guān)于所屬圖像的編號(hào)晒喷、大小等基本信息孝偎,這些信息在同一圖像的每個(gè)片中都必須是一致的。在編碼時(shí)凉敲,H.264 的規(guī)范要求將參數(shù)集邪媳、片這些獨(dú)立的數(shù)據(jù)單位盡可能各自完整地放入一個(gè)分組中被傳送捐顷。這樣可以增強(qiáng)穩(wěn)定性,一個(gè)片的丟失將不會(huì)影響其它片的解碼雨效,還可以通過該片前后的片來恢復(fù)該片的數(shù)據(jù)迅涮。


數(shù)據(jù)傳輸結(jié)構(gòu)(信道為邏輯通道)

下圖是一個(gè)碼流中所包含的數(shù)據(jù)單位,這里的數(shù)據(jù)單位是指可以獨(dú)立放入一個(gè)組傳輸?shù)募?/p>

碼流中的數(shù)據(jù)單位

一個(gè)序列的第一個(gè)圖像叫做 IDR 圖像(立即刷新圖像)徽龟,IDR 圖像都是 I 圖像叮姑。H.264 引入 IDR 圖像是為了解碼的重同步,當(dāng)解碼器解碼到 IDR 圖像時(shí)据悔,立即將參考幀隊(duì)列 清空传透,將已解碼的數(shù)據(jù)全部輸出或拋棄,重新查找參數(shù)集极颓,開始一個(gè)新的序列朱盐。這樣,如果在前一 個(gè)序列的傳輸中發(fā)生重大錯(cuò)誤菠隆,如嚴(yán)重的丟包兵琳,或其他原因引起數(shù)據(jù)錯(cuò)位,在這里可以獲得重新同步骇径。IDR圖像之后的圖像永遠(yuǎn)不會(huì)引用IDR圖像之前的圖像數(shù)據(jù)來解碼
IDR圖像和I圖像有區(qū)別躯肌,IDR圖像一定是一個(gè)I圖像,但是I圖像不一定是IDR圖像破衔;一個(gè)序列中可以有很多的I圖像清女,I圖像之后的圖像可以引用I圖像之間的圖像做運(yùn)動(dòng)參考

除了參數(shù)集與片片還有其他的數(shù)據(jù)單位,這些數(shù)據(jù)單位可以提供額外的數(shù)據(jù)或同步信息

數(shù)據(jù)語法結(jié)構(gòu)

  • 編碼層數(shù)據(jù)VCL:這是編碼處理的輸出晰筛,表示被壓縮編碼后的視頻數(shù)據(jù)序列
  • 網(wǎng)絡(luò)層數(shù)據(jù)NAL:VCL數(shù)據(jù)在被發(fā)送到網(wǎng)絡(luò)上傳輸或存儲(chǔ)之前嫡丙,會(huì)先被封裝進(jìn)NAL單元中;一個(gè)NALU包含一組對(duì)應(yīng)于視頻編碼的NALU頭部信息和一個(gè)原始字節(jié)序列負(fù)荷(RBSP)


    NAL單元序列
NALU結(jié)構(gòu)
  • 一個(gè)NALU定義了可用于基于包和基于比特流系統(tǒng)的基本格式读第,區(qū)別這兩種格式的方法在于每個(gè)比特流傳輸層都有一個(gè)起始代碼
  • 一個(gè)NALU單元結(jié)構(gòu)上是一個(gè)包含一定語法元素的可變長字節(jié)字符串迄沫,例如NALU可以攜帶一個(gè)編碼片,ABC型數(shù)據(jù)分割或一個(gè)序列或圖像參數(shù)集
  • 每個(gè)NAL單元由一個(gè)字節(jié)的頭和一個(gè)包含可變場編碼符號(hào)的字符串組成
NALU頭
NALU頭

頭部包含三個(gè)定長比特區(qū)卦方,NALU類型(T)羊瘩、NAL-REFERENCE-IDC(R)和隱藏比特位(F)

  • T用5bit來表示32中不同類型特征,1-12是H264定義的盼砍,24-31是用于H264意外的尘吗,RTP負(fù)荷規(guī)范使用這些其中的一些值來定義包聚合和氛圍,其他值為H264保留
  • R比特用于在重構(gòu)過程中標(biāo)記一個(gè)NAL單元的重要浇坐,0表示這個(gè)NAL單元沒有用于預(yù)測睬捶,高于0表示NAL單元要用于無漂移重構(gòu),且值越高近刘,對(duì)NAL單元丟失的影響越大
  • 隱藏比特位在H264中默認(rèn)是0擒贸,當(dāng)網(wǎng)絡(luò)識(shí)別到單元中存在比特錯(cuò)誤時(shí)臀晃,可以將其設(shè)置為1,如當(dāng)一個(gè)NAL單元在通過網(wǎng)關(guān)時(shí)介劫,校驗(yàn)和檢測失敗徽惋,網(wǎng)關(guān)可以選擇從NAL流中去掉這個(gè)NAL單元,也可以把已知被破壞的NAL單元傳給接收端座韵,在這種情況下险绘,智能的解碼器將常識(shí)重構(gòu)這個(gè)NAL單元,而非智能的解碼器則直接簡單地拋棄這個(gè)NAL單元
RBSP單元的類型

NAL單元的頭信息定義了RBSP單元的類型


RBSP類型描述
  • 序列參數(shù)集SPS包含的是針對(duì)一連續(xù)編碼視頻序列的參數(shù)誉碴,如標(biāo)識(shí)符seq_parameter_set_id宦棺、幀數(shù)及POC的約束、參考幀數(shù)黔帕、解碼圖像尺寸和幀場編碼模式選擇標(biāo)識(shí)等等
  • 圖像參數(shù)集PPS對(duì)應(yīng)的是一個(gè)序列中某一副圖像或幾幅圖像代咸,其參數(shù)如標(biāo)識(shí)符pic_parameter_set_id、可選的seq_parameter_set_id成黄、熵編碼模式選擇標(biāo)識(shí)呐芥、片組書目、初始量化參數(shù)和去方塊濾波洗漱調(diào)整標(biāo)識(shí)等等
  • 通常慨默,SPS和PPS在片頭信息和數(shù)據(jù)解碼前傳送至解碼器贩耐。每個(gè)片的頭信息對(duì)應(yīng)一個(gè)pic_parameter_set_id弧腥,PPS被其激活后一直有效到下一個(gè)PPS被激活厦取;類似的,每個(gè)SPS對(duì)應(yīng)一個(gè)seq_parameter_set_id管搪,SPS被激活后將一直有效到下一個(gè)SPS被激活
  • 參數(shù)集機(jī)制講一些重要的虾攻、改變少的序列參數(shù)和圖像參數(shù)與編碼片分離,并在編碼片之前傳送至解碼端更鲁,或者通過其他機(jī)制傳輸
單元解碼過程
  • 在進(jìn)行NAL單元解碼過程之前霎箍,首先通過RTP協(xié)議解析(采用RTP封裝),或者通過起始碼檢測(采用比特流方式)澡为,從傳輸碼流中獲取NAL單元數(shù)據(jù)
  • 從NAL單元中提取出RBSP語法結(jié)構(gòu)漂坏,按照下圖的流程處理RBSP語法結(jié)構(gòu)
  • 對(duì)于NAL單元的解碼過程,其輸入時(shí)NAL單元媒至,輸出結(jié)果是經(jīng)過解碼的當(dāng)前圖像的樣點(diǎn)值


    NAL單元解碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顶别,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拒啰,更是在濱河造成了極大的恐慌驯绎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谋旦,死亡現(xiàn)場離奇詭異剩失,居然都是意外死亡屈尼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門拴孤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脾歧,“玉大人,你說我怎么就攤上這事乞巧≌墙罚” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵绽媒,是天一觀的道長蚕冬。 經(jīng)常有香客問我,道長是辕,這世上最難降的妖魔是什么囤热? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮获三,結(jié)果婚禮上旁蔼,老公的妹妹穿的比我還像新娘。我一直安慰自己疙教,他們只是感情好棺聊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贞谓,像睡著了一般限佩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裸弦,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天祟同,我揣著相機(jī)與錄音,去河邊找鬼理疙。 笑死晕城,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窖贤。 我是一名探鬼主播砖顷,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼赃梧!你這毒婦竟也來了滤蝠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤槽奕,失蹤者是張志新(化名)和其女友劉穎几睛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粤攒,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡所森,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年囱持,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焕济。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纷妆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晴弃,到底是詐尸還是另有隱情掩幢,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布上鞠,位于F島的核電站际邻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芍阎。R本人自食惡果不足惜世曾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谴咸。 院中可真熱鬧轮听,春花似錦、人聲如沸岭佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽珊随。三九已至述寡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玫恳,已是汗流浹背辨赐。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工优俘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留京办,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓帆焕,卻偏偏與公主長得像惭婿,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叶雹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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