【多媒體相關】視頻中的幀

在我的工作中經常會聽見身邊的大拿會說到一個概念:幀。那麼到底什麼是幀呢?和圖片圖像是一回事兒嗎?


相信大家小時候都有見過這種翻頁動畫。如果我們把一個視頻認為就是這個動畫,那麼我們的每一頁其實就是我們所謂的。因此在一定程度上我們可以理解幀就類似一張圖片。因為人在觀察物體的時候有視覺暫留的現象,因此雖然是一張張獨立的圖片,但在連續翻閱的時候能夠形成連續的動畫。在早期的電影製作上,大家普遍使用了24幀的製作方式。據一些研究表明,對於人類觀看的電影可以做到每秒16幀的下線。2016年上映的《比利·林恩的中場戰事》使用了前所未有的120幀每秒的拍攝技術。但是高幀率是否真的能夠帶來高的視聽享受一直處於爭論當中。

B幀、P幀、I幀

那麼我們視頻是否就是一幅幅“連環畫”就OK了呢?顯然不OK,因為這樣製作出來的視頻太大了。下載觀看都需要很長時間,更別說在線觀看了,那麼我們還怎麼看B站呢?事實我們知道連續的幀與幀之間是有許多的相似的地方的,基於這樣的原理我們會做一些視頻的壓縮。

【多媒體相關】視頻中的幀

I幀(Intra-coded Picture):

I幀就是所謂的關鍵幀,是一幀畫面的完整的保留,可以理解其類似於一張JPEG的圖片。其壓縮的方式也與圖片的壓縮方式類似。

P幀(Predictive-coded Picture):

P幀又名向前預測編碼圖像幀,其記錄的是與前一幀圖像的差異。解碼的時候需要由前一幀的圖像與P幀的差異最終還原出圖像來。

B幀(Bidirectionally predicted Picture):

B幀又名雙向預測編碼圖像幀,其記錄的是本幀與前後幀的差異。還原B幀的數據不僅要之前的還原數據,還需要本幀之後的還原數據。因此B幀的數據壓縮大,但是在解碼過程中的計算資源消耗也大。因此在網絡條件有限的場景下,我們會大量的使用B幀來節省帶寬,但看在線視頻的時候,我們的電腦也在嗚嗚嗚的咆哮。

DTS與PTS

因為視頻的壓縮,我們知道了B幀、P幀、I幀的作用。當我們接受到了一個B幀的時候並不能立即還原出圖像來,我們還需要接受到後續的P幀或I幀才行。那麼這個數據接受的順序與播放的順序也就不一樣了,我們是如何讓視頻按幀的順序進行播放的呢?

這裡補充兩個概念

DTS(Decoding Time Stamp):解碼時間戳,指導播放器什麼時候解碼這一幀數據。

PTS(Presentation Time Stamp):顯示時間戳,指導播放器什麼時候顯示這一幀數據。

假設我們採集到的一個視頻編碼如下,但是在解碼的時候I幀就直接解碼了,中間的B幀需要後續的依賴,一直到達一個P幀或I幀才能夠構建成後續的圖像。因此其DTS為:1,4,2,3,7,5,6

<code>幀:I,B,B,P,B,B,P
PTS:1,2,3,4,5,6,7
DTS:1,4,2,3,7,5,6/<code>


分享到:


相關文章: