GOP相關(guān)

I幀

幀內(nèi)編碼幀(intra picture),I幀通常是每個(gè) GOP(MPEG 所使用的一種視頻壓縮技術(shù))的第一個(gè)幀,經(jīng)過適度地壓縮,做為隨機(jī)訪問的參考點(diǎn),可以當(dāng)成圖象。I幀可以看成是一個(gè)圖像經(jīng)過壓縮后的產(chǎn)物。

P幀

前向預(yù)測編碼幀(predictive-frame),通過充分將低于圖像序列中前面已編碼幀的時(shí)間冗余信息來壓縮傳輸數(shù)據(jù)量的編碼圖像,也叫預(yù)測幀。

B幀

雙向預(yù)測內(nèi)插編碼幀(bi-directional interpolatedprediction frame),既考慮與源圖像序列前面已編碼幀,也顧及源圖像序列后面已編碼幀之間的時(shí)間冗余信息來壓縮傳輸數(shù)據(jù)量的編碼圖像,也叫雙向預(yù)測幀

PTS

Presentation Time Stamp主要用于度量解碼后的視頻幀什么時(shí)候被顯示出來。

DTS

Decode Time Stamp主要是標(biāo)識(shí)讀入內(nèi)存中的bit流在什么時(shí)候開始送入解碼器中進(jìn)行解碼。

在沒有B幀存在的情況下DTS的順序和PTS的順序應(yīng)該是一樣的。

IPB幀的不同

  • I frame : 自身可以通過視頻解壓算法解壓成一張單獨(dú)的完整的圖片。
  • P frame :需要參考其前面的一個(gè)I frame 或者Bframe來生成一張完整的圖片。
  • B frame : 則要參考其前一個(gè)I或者P幀及其后面的一個(gè)P幀來生成一張完整的圖片。

兩個(gè)I frame之間形成一個(gè)GOP,在x264中同時(shí)可以通過參數(shù)來設(shè)定bf的大小,即:I 和p或者兩個(gè)P之間B的數(shù)量。

通過上述基本可以說明如果有B frame 存在的情況下一個(gè)GOP的最后一個(gè)frame一定是P。
看x264代碼,感覺GOP就是IDR幀到另一個(gè)IDR幀之間就是一個(gè)GOP。在視頻編碼序列中,GOP即Group of picture(圖像組),指兩個(gè)I幀之間的距離,Reference(參考周期)指兩個(gè)P幀之間的距離。一個(gè)I幀所占用的字節(jié)數(shù)大于一個(gè)P幀,一個(gè)P幀所占用的字節(jié)數(shù)大于一個(gè)B幀。


所以在碼率不變的前提下,GOP值越大,P、B幀的數(shù)量會(huì)越多,平均每個(gè)I、P、B幀所占用的字節(jié)數(shù)就越多,也就更容易獲取較好的圖像質(zhì)量;Reference越大,B幀的數(shù)量越多,同理也更容易獲得較好的圖像質(zhì)量。

需要說明的是,通過提高GOP值來提高圖像質(zhì)量是有限度的,在遇到場景切換的情況時(shí),H.264編碼器會(huì)自動(dòng)強(qiáng)制插入一個(gè)I幀,此時(shí)實(shí)際的GOP值被縮短了。另一方面,在一個(gè)GOP中,P、B幀是由I幀預(yù)測得到的,當(dāng)I幀的圖像質(zhì)量比較差時(shí),會(huì)影響到一個(gè)GOP中后續(xù)P、B幀的圖像質(zhì)量,直到下一個(gè)GOP開始才有可能得以恢復(fù),所以GOP值也不宜設(shè)置過大。

同時(shí),由于P、B幀的復(fù)雜度大于I幀,所以過多的P、B幀會(huì)影響編碼效率,使編碼效率降低。另外,過長的GOP還會(huì)影響Seek操作的響應(yīng)速度,由于P、B幀是由前面的I或P幀預(yù)測得到的,所以Seek操作需要直接定位,解碼某一個(gè)P或B幀時(shí),需要先解碼得到本GOP內(nèi)的I幀及之前的N個(gè)預(yù)測幀才可以,GOP值越長,需要解碼的預(yù)測幀就越多,seek響應(yīng)的時(shí)間也越長。

DTS和PTS的不同

DTS主要用于視頻的解碼。在解碼階段使用,PTS主要用于視頻的同步和輸出。在display的時(shí)候使用,在沒有B frame的情況下,DTS和PTS的輸出順序是一樣的。
下面給出一個(gè)GOP為15的例子,其解碼的參照frame及其解碼的順序都在里面:


如上圖:I frame 的解碼不依賴于任何的其它的幀.而p frame的解碼則依賴于其前面的Iframe或者P frame.B frame的解碼則依賴于其前的最近的一個(gè)I frame或者P frame 及其后的最近的一個(gè)P frame.

Slice-I:指的是I幀,即沒有用到幀間的冗余信息,但是并不表示他不能使用預(yù)測方式,他可以使用同一幀中相鄰宏塊之間的空間關(guān)聯(lián)性,因此,對(duì)I幀圖像某一MB進(jìn)行編碼時(shí),我們可以根據(jù)周圍的MB來預(yù)測我們當(dāng)前的MB,通常我們會(huì)選擇當(dāng)前MB左側(cè)和上側(cè)的MB,因?yàn)檫@些MB已經(jīng)經(jīng)過編碼了。然后再對(duì)實(shí)際的MB與預(yù)測MB之間的差值進(jìn)行編碼。這樣就可以減少bit。但是需要用13種幀內(nèi)預(yù)測模式進(jìn)行預(yù)測比較,復(fù)雜度較以往標(biāo)準(zhǔn)采用的直接DEF變換編碼大大提高了;

只有H.264中I幀才用到了預(yù)測方式,其余的協(xié)議都沒有用到預(yù)測方式,而是直接對(duì)一幀中的各MB進(jìn)行變換得到的

slice-P:指的是P幀,在幀間編碼圖像內(nèi)的MB,各種模式的幀內(nèi)預(yù)測相對(duì)于參考圖像中的大范圍搜索,復(fù)雜度和存儲(chǔ)量增加的比例就比較小。

當(dāng)數(shù)字視頻信號(hào)送入H.264編碼器進(jìn)行編碼時(shí),編碼器讀出頭信息后,以宏塊為單位進(jìn)行編碼. 在對(duì)當(dāng)前宏塊進(jìn)行編碼時(shí),首先通過運(yùn)動(dòng)估計(jì),在上一幀重構(gòu)圖像中選出最佳匹配宏塊. 然后,根據(jù)匹配效果、圖像局部的性質(zhì)、編碼器當(dāng)時(shí)的工作狀況,決定對(duì)當(dāng)前宏塊是采用幀內(nèi)編碼還是幀間編碼. 若前后兩幀很相似,即相關(guān)性很強(qiáng),則進(jìn)行的是幀間預(yù)測編碼,即對(duì)幀間預(yù)測的誤差進(jìn)行4×4整數(shù)變換、量化,得到的數(shù)據(jù)一方面進(jìn)行熵編碼,另一方面通過反量化和4×4反整數(shù)變換重構(gòu),以便下一個(gè)宏塊進(jìn)行運(yùn)動(dòng)估計(jì);若前后兩幀圖像相關(guān)性較弱,則進(jìn)行的是幀內(nèi)編碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 硬件編碼相關(guān)知識(shí)(H264,H265) 閱讀人群:研究硬件編碼器應(yīng)用于iOS開發(fā)中,從0研究關(guān)于硬件編解碼,碼流中...
    小東邪啊閱讀 13,083評(píng)論 0 18
  • FFmpeg X264編碼參數(shù) 目錄 碼率控制 1 X264的preset和tune 2 編碼延時(shí)建議...
    古則閱讀 30,989評(píng)論 1 15
  • [TOC] 音視頻&流媒體 是什么促使我要寫這一篇音視頻入門文章?那是因?yàn)楹鸵幻米哟蛸€碼率的概念,結(jié)果輸了;對(duì)一個(gè)...
    AllenWu閱讀 5,158評(píng)論 1 24
  • 在保證視頻圖像質(zhì)量的前提下,HEVC通過增加一定的計(jì)算復(fù)雜度,可以實(shí)現(xiàn)碼流在H.264/AVC的基礎(chǔ)上降低50%。...
    加劉景長閱讀 8,251評(píng)論 0 6
  • 在目前,無論在各個(gè)行只要和視頻相關(guān)的,我們都可以看見H264相關(guān)的身影,H264作為目前使用最廣泛的視頻壓縮標(biāo)準(zhǔn),...
    DramaScript閱讀 22,134評(píng)論 7 56

友情鏈接更多精彩內(nèi)容