在視頻編碼序列中,主要有三種編碼幀:I幀、P幀、B幀,如下圖所示。
● I幀即Intra-coded picture(幀內編碼圖像幀),不參考其他圖像幀,只利用本幀的信息進行編碼
● P幀即Predictive-codedPicture(預測編碼圖像幀),利用之前的I幀或P幀,採用運動預測的方式進行幀間預測編碼
● B幀即Bidirectionallypredicted picture(雙向預測編碼圖像幀),提供最高的壓縮比,它既需要之前的圖
像幀(I幀或P幀),也需要後來的圖像幀(P幀),採用運動預測的方式進行幀間雙向預測編碼
在視頻編碼序列中,GOP即Group of picture(圖像組),指兩個I幀之間的距離,Reference(參考週期)指兩個P幀之間的距離(如下圖3.1)。一個I幀所佔用的字節數大於一個P幀,一個P幀所佔用的字節數大於一個B幀(如下圖3.1所示)。
I、P、B幀示意圖
所以在碼率不變的前提下,GOP值越大,P、B幀的數量會越多,畫面細節更多,也就更容易獲取較好的圖像質量;Reference越大,B幀的數量越多,同理也更容易獲得較好的圖像質量。
需要說明的是,通過提高GOP值來提高圖像質量是有限度的,在遇到場景切換的情況時,H.264編碼器會自動強制插入一個I幀,此時實際的GOP值被縮短了。另一方面,在一個GOP中,P、B幀是由I幀預測得到的,當I幀的圖像質量比較差時,會影響到一個GOP中後續P、B幀的圖像質量,直到下一個GOP開始纔有可能得以恢復,所以GOP值也不宜設置過大。
同時,由於P、B幀的複雜度大於I幀,所以過多的P、B幀會影響編碼效率,使編碼效率降低。另外,過長的GOP還會影響Seek操作(找I幀)的響應速度,由於P、B幀是由前面的I或P幀預測得到的,所以Seek操作需要直接定位,解碼某一個P或B幀時,需要先解碼得到本GOP內的I幀及之前的N個預測幀纔可以,GOP值越長,需要解碼的預測幀就越多,seek響應的時間也越長。
轉載自:http://blog.csdn.net/zqj6893/article/details/50262189