I,P,B幀和PTS,DTS的關係

2021-07-13 14:35:00 字數 1658 閱讀 5200

基本概念:

p frame:前向**編碼幀 又稱predictive-frame,通過充分將低於影象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫**幀;

b frame:雙向**內插編碼幀 又稱bi-directional interpolated prediction frame,既考慮與源影象序列前面已編碼幀,也顧及源影象序列後面已編碼幀之間的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫雙向**幀;

dts:decode time stamp。dts主要是標識讀入記憶體中的bit流在什麼時候開始送入解碼器中進行解碼。

在沒有b幀存在的情況下dts的順序和pts的順序應該是一樣的。

i p b幀的不同:

兩個i frame之間形成乙個gop,在x264中同時可以通過引數來設定bf的大小,即:i 和p或者兩個p之間b的數量。

通過上述基本可以說明如果有b frame 存在的情況下乙個gop的最後乙個frame一定是p.

所以在位元速率不變的前提下,gop值越大,p、b幀的數量會越多,平均每個i、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操作的響應速度,由於p、b幀是由前面的i或p幀**得到的,所以seek操作需要直接定位,解碼某乙個p或b幀時,需要先解碼得到本gop內的i幀及之前的n個**幀才可以,gop值越長,需要解碼的**幀就越多,seek響應的時間也越長。

dts和pts的不同:

例子:

下面給出乙個gop為15的例子,其解碼的參照frame及其解碼的順序都在裡面:

如上圖:i frame 的解碼不依賴於任何的其它的幀.而p frame的解碼則依賴於其前面的i frame或者p frame.b frame的解碼則依賴於其前的最近的乙個i frame或者p frame 及其後的最近的乙個p frame.

slice-i:指的是i幀,即沒有用到幀間的冗餘資訊,但是並不表示他不能使用**方式,他可以使用同一幀中相鄰巨集塊之間的空間關聯性,因此,對i幀影象某一mb進行編碼時,我們可以根據周圍的mb來**我們當前的mb,通常我們會選擇當前mb左側和上側的mb,因為這些mb已經經過編碼了。然後再對實際的mb與**mb之間的差值進行編碼。這樣就可以減少bit。但是需要用13種幀內**模式進行**比較,複雜度較以往標準採用的直接def變換編碼大大提高了;

(注:只有h.264中i幀才用到了**方式,其餘的協議都沒有用到**方式,而是直接對一幀中的各mb進行變換得到的)

I,P,B幀和PTS,DTS的關係

基本概念 p frame 前向 編碼幀 又稱predictive frame,通過充分將低於影象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫 幀 b frame 雙向 內插編碼幀 又稱bi directional interpolated prediction frame,既考慮...

I,P,B幀和PTS,DTS的關係

基本概念 p frame 前向 編碼幀 又稱predictive frame,通過充分將低於影象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫 幀 b frame 雙向 內插編碼幀 又稱bi directional interpolated prediction frame,既考慮...

I,P,B幀和PTS,DTS的關係

基本概念 p frame 前向 編碼幀 又稱predictive frame,通過充分將低於影象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫 幀 b frame 雙向 內插編碼幀 又稱bi directional interpolated prediction frame,既考慮...