做視頻開發(fā)闲擦,特別是視頻壓縮、直播流優(yōu)化纷妆,一個(gè)最基本的需要了解的概念就是IPB幀
IPB幀
視頻壓縮中盔几,每幀都代表著一幅靜止的圖像,而在進(jìn)行壓縮時(shí)掩幢,會采取各種算法以減少數(shù)據(jù)的容量逊拍,IPB幀就是最常見的一種
I 幀
幀內(nèi)編碼幀(intra picture)
,I幀
通常是每個(gè)GOP(MPEG所使用的一種視頻壓縮技術(shù))
的第一個(gè)幀,經(jīng)過適度地壓縮际邻,作為隨機(jī)訪問的參考點(diǎn)芯丧,可以當(dāng)成靜態(tài)圖像。I幀
可以看作一個(gè)圖像經(jīng)過壓縮后的產(chǎn)物世曾,I幀
可以得到6:1
的壓縮比二不會產(chǎn)生任何可察覺的模糊現(xiàn)象缨恒。I幀壓縮可去掉視頻的空間冗余
信息P 幀
前向預(yù)測編碼幀(predictive-frame)
,通過將圖像序列中前面已編碼幀的時(shí)間冗余
信息沖分去除來壓縮傳輸數(shù)據(jù)量的編碼圖像,也稱預(yù)測幀B 幀
雙向預(yù)測內(nèi)插編碼幀(bi-directional interpolated prediction frame)
骗露,既考慮源圖像序列前面的已編碼幀岭佳,又顧及源圖像序列后面的已編碼幀之間的時(shí)間冗余
信息,來壓縮傳輸數(shù)據(jù)量的編碼圖像萧锉,也稱雙向預(yù)測幀
從編碼角度理解
I幀
自身可以通過視頻解壓算法解壓成一張單獨(dú)的完整視頻畫面珊随,所以I幀去掉的是視頻幀在空間維度上的冗余信息P幀
需要參考其前面的一個(gè)I幀或P幀來解壓成一張完整的視頻畫面B幀
則需要參考其前一個(gè)I幀或P幀及其后面的一個(gè)P幀來生成一張完整的視頻畫面,所以P幀與B幀去掉的是視頻幀在時(shí)間維度上的冗余信息
IDR幀與I幀區(qū)別
H264
中有一個(gè)幀稱為IDR幀(instantaneous decoding refresh picture)
柿隙,因?yàn)?code>H264采用了多幀預(yù)測玫恳,所以I幀
之后的P幀
有可能會參考I幀
之前的幀,這就使得隨機(jī)訪問的時(shí)候不能以找到I幀
作為參考條件优俘,因?yàn)榧词拐业?code>I幀京办,I幀
之后的幀還是有可能解析不出來,而IDR幀
就是一種特殊的I幀
帆焕,即這一幀之后的所有參考幀只會參考到這個(gè)IDR幀
惭婿,而不會再參考前面的幀,在解碼器中叶雹,一旦收到一個(gè)IDR
幀财饥,就會立即清理參考幀緩沖區(qū),并將IDR
幀作為被參考的幀