視頻基礎知識(幀,時間基)


 

I/P/B幀

I幀:關鍵幀,采用的是幀內壓縮技術

B幀:前后參考幀,它屬於幀間壓縮技術,在壓縮成B幀前,它會參考它前面的非壓縮視頻幀,和后面的非壓縮的視頻幀,紀錄下前后兩幀都不存放的殘差值,這樣可以達到更好的壓縮率。

P幀:向前參考幀,就是參考的是前一個關鍵幀的數據,P幀屬於幀間壓縮技術,相對於B幀,P幀的壓縮率要比B幀低

IDR幀:(instantaneous decoding refresh picture)

因為H264采用了多幀預測,所以I幀之后的P幀有可能會參考I幀之前的幀,這就使得隨機訪問的時候不能找到I幀作為參考條件,因為找到I幀,I幀之后的幀還是有可能解析不出來。而IDR幀就是一種特殊的I幀,即這一幀之后的所有參考幀只會參考到這個IDR幀,而不會參考前面的幀。在解碼器中,一旦收到IDR幀,就會立即清理參考幀緩沖區,並將IDR幀作為被參考的幀。

 

 

PTS/DTS

PTS:(Presentation TimeStamp)是渲染用的時間戳,也就是說,我們的視頻幀按照PTS的時間戳來展示的

DTS:(Decoding TimeStamp)解碼時間戳,是用於視頻解碼的

 

存在即合理,存在的原因:

第一行,實際應展示的順序:I    B    B    P

第二行,實際在存放的順序:I    P    B    B

第三行,按實際順序號展示:1    4    2    3

第四行,按實際順序號展示:1    2    3    4

 

解釋:實際展示的幀順序是I,B,P,P,解碼后的視頻幀,但實際上這些幀到達之后,P幀參考的是I幀,B幀是雙向參考幀,如果I幀和P幀沒有解碼的話,B幀是無法進行解碼的,基於這個問題就出現了PTS和DTS兩個時間戳。

 

時間基

有了時間戳之后,最終進行展示時還需要將PTS時間戳轉成以秒為單位的時間

通常在ffmpeg/ffplay命令時,分別是tbr,tbn,tbc

tbr:是我們通常說的幀率。 time base of rate

tbn:視頻流的時間基。time base of stream

tbc:視頻解碼的時間基。time base of codec

 

在ffmpeg中,不同的時間戳對應不同的時間基。對於視頻的渲染我們使用的是視頻流的時間基,也就是tbn

時間基即時間刻度,我們以幀率為例,每秒鍾的幀率是25幀,那么他的時間基就是1/25,也就是每隔1/25秒后,顯示一幀,假設我們當前時間為100,時間基是1/25,轉成秒就是 100 * 1/25 = 4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM