音視頻學(xué)習(xí)從零到整--(7)H264基本概念

音視頻學(xué)習(xí)從零到整--(1)
音視頻學(xué)習(xí)從零到整--(2)
音視頻學(xué)習(xí)從零到整--(3)
音視頻學(xué)習(xí)從零到整--(4)
音視頻學(xué)習(xí)從零到整--(5)
音視頻學(xué)習(xí)從零到整--(6)
音視頻學(xué)習(xí)從零到整--(8)
音視頻學(xué)習(xí)從零到整--(9)
音視頻學(xué)習(xí)從零到整--(10)

一. H264基本概念.

I幀: 關(guān)鍵幀,采用幀內(nèi)壓縮技術(shù).

  • 舉個(gè)例子,如果攝像頭對著你拍攝,1秒之內(nèi),實(shí)際你發(fā)生的變化是非常少的.1秒鐘之內(nèi)實(shí)際少很少有大幅度的變化.攝像機(jī)一般一秒鐘會抓取幾十幀的數(shù)據(jù).比如像動畫,就是25幀/s,一般視頻文件都是在30幀/s左右.對于一些要求比較高的,對動作的精細(xì)度有要求,想要捕捉到完整的動作的,高級的攝像機(jī)一般是60幀/s.那些對于一組幀的它的變化很小.為了便于壓縮數(shù)據(jù),那怎么辦了?將第一幀完整的保存下來.如果沒有這個(gè)關(guān)鍵幀后面解碼數(shù)據(jù),是完成不了的.所以I幀特別關(guān)鍵.

P幀: 向前參考幀.壓縮時(shí)只參考前一個(gè)幀.屬于幀間壓縮技術(shù).

  • 視頻的第一幀會被作為關(guān)鍵幀完整保存下來.而后面的幀會向前依賴.也就是第二幀依賴于第一個(gè)幀.后面所有的幀只存儲于前一幀的差異.這樣就能將數(shù)據(jù)大大的減少.從而達(dá)到一個(gè)高壓縮率的效果.

B幀: 雙向參考幀,壓縮時(shí)即參考前一幀也參考后一幀.幀間壓縮技術(shù).

  • B幀,即參考前一幀,也參考后一幀.這樣就使得它的壓縮率更高.存儲的數(shù)據(jù)量更小.如果B幀的數(shù)量越多,你的壓縮率就越高.這是B幀的優(yōu)點(diǎn),但是B幀最大的缺點(diǎn)是,如果是實(shí)時(shí)互動的直播,那時(shí)與B幀就要參考后面的幀才能解碼,那在網(wǎng)絡(luò)中就要等待后面的幀傳輸過來.這就與網(wǎng)絡(luò)有關(guān)了.如果網(wǎng)絡(luò)狀態(tài)很好的話,解碼會比較快,如果網(wǎng)絡(luò)不好時(shí)解碼會稍微慢一些.丟包時(shí)還需要重傳.對實(shí)時(shí)互動的直播,一般不會使用B幀.
  • 如果在泛娛樂的直播中,可以接受一定度的延時(shí),需要比較高的壓縮比就可以使用B幀.
  • 如果我們在實(shí)時(shí)互動的直播,我們需要提高時(shí)效性,這時(shí)就不能使用B幀了.

二. GOF(Group of Frame)一組幀

如果在一秒鐘內(nèi),有30幀.這30幀可以畫成一組.如果攝像機(jī)或者鏡頭它一分鐘之內(nèi)它都沒有發(fā)生大的變化.那也可以把這一分鐘內(nèi)所有的幀畫做一組.

什么叫一組幀?
就是一個(gè)I幀到下一個(gè)I幀.這一組的數(shù)據(jù).包括B幀/P幀.我們稱為GOF.
GOF有什么好處了?它能解決什么問題了?
這個(gè)與我們接下來所學(xué)習(xí)的內(nèi)容有關(guān)了.

image

三. SPS/PPS

SPS/PPS實(shí)際上就是存儲GOP的參數(shù).

SPS: (Sequence Parameter Set,序列參數(shù)集)存放幀數(shù),參考幀數(shù)目,解碼圖像尺寸,幀場編碼模式選擇標(biāo)識等.

  • 一組幀的參數(shù)集.

PPS:(Picture Parameter Set,圖像參數(shù)集).存放熵編碼模式選擇標(biāo)識,片組數(shù)目,初始量化參數(shù)和去方塊濾波系數(shù)調(diào)整標(biāo)識等.(與圖像相關(guān)的信息)

  • 熵編碼模式,片組數(shù)目等這些我們會在后面的內(nèi)容講解到.大家在這里主要了解到SPS/PPS即可.

大家只要記住,在一組幀之前我們首先收到的是SPS/PPS數(shù)據(jù).如果沒有這組參數(shù)的話,我們是無法解碼.

如果我們在解碼時(shí)發(fā)生錯(cuò)誤,首先要檢查是否有SPS/PPS.如果沒有,是因?yàn)閷Χ藳]有發(fā)送過來還是因?yàn)閷Χ嗽诎l(fā)送過程中丟失了.

SPS/PPS數(shù)據(jù),我們也把其歸類到I幀.這2組數(shù)據(jù)是絕對不能丟的.

那么下面我們來看一下實(shí)際開發(fā)中遇到的問題.

四. 視頻花屏/卡頓原因

我們在觀看視頻時(shí),會遇到花屏或者卡頓現(xiàn)象.那這個(gè)與我們剛剛所講的GOF就息息相關(guān)了.

  • 如果GOP分組中的P幀丟失就會造成解碼端的圖像發(fā)生錯(cuò)誤.
  • 為了避免花屏問題的發(fā)生,一般如果發(fā)現(xiàn)P幀或者I幀丟失.就不顯示本GOP內(nèi)的所有幀.只到下一個(gè)I幀來后重新刷新圖像.
  • 當(dāng)這時(shí)因?yàn)闆]有刷新屏幕.丟包的這一組幀全部扔掉了.圖像就會卡在哪里不動.這就是卡頓的原因.

所以總結(jié)起來,花屏是因?yàn)槟銇G了P幀或者I幀.導(dǎo)致解碼錯(cuò)誤. 而卡頓是因?yàn)闉榱伺禄ㄆ?將整組錯(cuò)誤的GOP數(shù)據(jù)扔掉了.直達(dá)下一組正確的GOP再重新刷屏.而這中間的時(shí)間差,就是我們所感受的卡頓.

五. 視頻都有哪些視頻編解碼器?

X264/X265

  • X264: 是目前最使用最廣泛X264編解碼器.這個(gè)性能也是非常優(yōu)秀.如果是使用軟編解碼基本上都是使用的X264. 那么X265也逐漸開始成熟了.但是在直播系統(tǒng)里,因?yàn)樗膲嚎s比更高,它占用的CPU也是非常高的.在直播里,如果用X265的話,CPU就抖然就上去了.所以直播間里一般不會用H265.在點(diǎn)播系統(tǒng)里可以嘗試使用X265.

  • OpenH264. 相對于X264性能要低一些.但是它有一個(gè)特點(diǎn).支持SVC視頻技術(shù).什么是SVC視頻技術(shù),就是將視頻分層傳輸.將數(shù)據(jù)分為小中大.3個(gè)部分.如果網(wǎng)絡(luò)差,就只發(fā)最小的內(nèi)核的視頻幀.那么網(wǎng)絡(luò)稍好就將中間的幀發(fā)送出去.如果網(wǎng)絡(luò)補(bǔ)充就把全部的數(shù)據(jù)發(fā)送出去.發(fā)送到對端.將3層疊加在一起就還原原來的視頻數(shù)據(jù).如果網(wǎng)絡(luò)差,只發(fā)送了內(nèi)核層數(shù)據(jù).那么就能看到視頻圖像的大概信息,但是不夠清晰.每加一層就清晰一些.這就是SVC技術(shù).但是它不好的一點(diǎn)就是移動端.因?yàn)槲覀円苿佣薙VC技術(shù)標(biāo)準(zhǔn)很多硬件不支持.如果你要用SVC,你的移動端就不能用硬件來編解碼.只能使用軟編.使用軟編就意味著只能用CPU. 對CPU是有很大的消耗的. 這就是一個(gè)取舍.你想要定制帶寬,就不能使用手機(jī)硬件來編碼.如果你要硬件編碼就不能使用SVC技術(shù).

  • vp8/vp9: 這是Google推出的.vp8是針對于x264.vp9是針對于x265.


推薦文集

* 抖音效果實(shí)現(xiàn)

* BAT—最新iOS面試題總結(jié)

* iOS面試題合集

原文作者:集才華美貌于一身的—C姐

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旁壮,一起剝皮案震驚了整個(gè)濱河市监嗜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕊爵,死亡現(xiàn)場離奇詭異厅须,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扭屁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人音五,你說我怎么就攤上這事「嵘常” “怎么了躺涝?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扼雏。 經(jīng)常有香客問我坚嗜,道長,這世上最難降的妖魔是什么诗充? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任苍蔬,我火速辦了婚禮,結(jié)果婚禮上蝴蜓,老公的妹妹穿的比我還像新娘碟绑。我一直安慰自己,他們只是感情好茎匠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布格仲。 她就那樣靜靜地躺著,像睡著了一般汽抚。 火紅的嫁衣襯著肌膚如雪抓狭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天造烁,我揣著相機(jī)與錄音否过,去河邊找鬼。 笑死惭蟋,一個(gè)胖子當(dāng)著我的面吹牛苗桂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播告组,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煤伟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起便锨,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤围辙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后放案,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姚建,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年吱殉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掸冤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡友雳,死狀恐怖稿湿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情押赊,我是刑警寧澤饺藤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站考杉,受9級特大地震影響策精,放射性物質(zhì)發(fā)生泄漏舰始。R本人自食惡果不足惜崇棠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丸卷。 院中可真熱鬧枕稀,春花似錦、人聲如沸谜嫉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沐兰。三九已至哆档,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間住闯,已是汗流浹背瓜浸。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留比原,地道東北人插佛。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像量窘,于是被迫代替她去往敵國和親雇寇。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354