基本概念: 算法
I frame :幀內編碼幀 又稱intra picture,I 幀一般是每一個 GOP(MPEG 所使用的一種視頻壓縮技術)的第一個幀,通過適度地壓縮,作爲隨機訪問的參考點,能夠當成圖象。I幀能夠當作是一個圖像通過壓縮後的產物。 編碼
P frame: 前向預測編碼幀 又稱predictive-frame,經過充分將低於圖像序列中前面已編碼幀的時間冗餘信息來壓縮傳輸數據量的編碼圖像,也叫預測幀; code
B frame: 雙向預測內插編碼幀 又稱bi-directional interpolated prediction frame,既考慮與源圖像序列前面已編碼幀,也顧及源圖像序列後面已編碼幀之間的時間冗餘信息來壓縮傳輸數據量的編碼圖像,也叫雙向預測幀; 視頻
PTS:Presentation Time Stamp。PTS主要用於度量解碼後的視頻幀何時被顯示出來 blog
DTS:Decode Time Stamp。DTS主要是標識讀入內存中的bit流在何時開始送入解碼器中進行解碼。 圖片
在沒有B幀存在的狀況下DTS的順序和PTS的順序應該是同樣的。 內存
I、P、B 幀的不一樣: get
I frame:自身能夠經過視頻解壓算法解壓成一張單獨的完整的圖片。 同步
P frame:須要參考其前面的一個I frame 或者B frame來生成一張完整的圖片。 it
B frame:則要參考其前一個I或者P幀及其後面的一個P幀來生成一張完整的圖片。
兩個I frame之間造成一個GOP,在x264中同時能夠經過參數來設定bf的大小,即:I 和p或者兩個P之間B的數量。
經過上述基本能夠說明若是有B frame 存在的狀況下一個GOP的最後一個frame必定是P.
DTS和PTS的不一樣:
DTS主要用於視頻的解碼,在解碼階段使用.PTS主要用於視頻的同步和輸出.在display的時候使用.在沒有B frame的狀況下.DTS和PTS的輸出順序是同樣的.
例子:
下面給出一個GOP爲15的例子,其解碼的參照frame及其解碼的順序都在裏面:
如上圖:I frame 的解碼不依賴於任何的其它的幀.而p frame的解碼則依賴於其前面的I frame或者P frame.B frame的解碼則依賴於其前的最近的一個I frame或者P frame 及其後的最近的一個P frame.