天天看點

關于FFMPEG 中I幀、B幀、P幀、PTS、DTS1 基本概念2 PTS, DTS

1 基本概念

1.1 名詞解釋

媒體:是表示,傳輸,存儲資訊的載體,常人們見到的文字、聲音、圖像、圖形等都是表示資訊的媒體。

多媒體: 是聲音、動畫、文字、圖像和錄像等各種媒體的組合,以圖文并茂,生動活潑的動态形式表現出來,給人以很強的視覺沖擊力,留下深刻印象

多媒體技術:是将文字、聲音、圖形、靜态圖像、動态圖像與計算內建在一起的技術。它要解決的問題是計算機進一步幫助人類按最自然的和最習慣的方式接受和處理資訊。

流媒體 :流媒體是指采用流式傳輸的方式在Internet播放的連續時基媒體格式,實際指的是一種新的媒體傳送方式,而不是一種新的媒體格式(在網絡上傳輸音/視訊等多媒體資訊現在主要有下載下傳和流式傳輸兩種方式)。流式傳輸分兩種方法:實時流式傳輸方式(Realtime streaming)和順序流式傳輸方式(progressive streaming)。

多媒體檔案:是既包括視訊又包括音頻,甚至還帶有腳本的一個集合,也可以叫容器;

媒體編碼:是檔案當中的視訊和音頻所采用的壓縮算法。也就是說一個avi的檔案,當中的視訊編碼有可能是A,也可能是B,而其音頻編碼有可能是1,也有可能是2。

轉碼 :指将一段多媒體包括音頻、視訊或者其他的内容從一種編碼格式轉換成為另外一種編碼格式

視訊:連續的圖象變化每秒超過24幀(Frame)畫面以上時,根據視覺暫留原理,人眼無法辨識單幅的靜态畫面,看上去是平滑連續的視覺效果,這樣連續的畫面叫做視訊

音頻 :人類能聽到的聲音都成為音頻,但是一般我們所說到的音頻時存儲在計算機裡的聲音

碼率:碼率就是資料傳輸時機關時間傳送的資料位數,一般我們用的機關是kbps(即,千位每秒)。 通俗一點的了解就是采樣率,機關時間内采樣率越大精度就越高,處理出來的檔案就越接近原始檔案,但是檔案體積與采樣率是成正比的,是以幾乎所有的編碼格式重視的都是如何用最低的碼率達到最少的失真。但是因為編碼算法不一樣,是以也不能用碼率來統一衡量音質或者畫質。

幀:幀就是一段資料的組合,它是資料傳輸的基本機關。就是影像動畫中最小機關的單幅影像畫面,相當于電影膠片上的每一格鏡頭。 一幀就是一副靜止的畫面,連續的幀就形成動畫,如電視圖像等。

幀率:幀率即每秒顯示幀數,幀率表示圖形處理器處理場時每秒鐘能夠更新的次數。高的幀率可以得到更流暢、更逼真的動畫。一般來說30fps就是可以接受的,但是将性能提升至60fps則可以明顯提升互動感和逼真感,但是一般來說超過75fps一般就不容易察覺到有明顯的流暢度提升了。如果幀率超過螢幕重新整理率隻會浪費圖形處理的能力,因為螢幕不能以這麼快的速度更新,這樣超過新率的幀率就浪費掉了。

關鍵幀:相當于二維動畫中的原畫,指角色或者物體運動或變化中的關鍵動作所處的那一幀,它包含了圖像的所有資訊,後來幀僅包含了改變了的資訊。如果你沒有足夠的關鍵幀,你的影片品質可能比較差,因為所有的幀從别的幀處産生。對于一般的用途,一個比較好的原則是每5秒設一個關鍵鍵。但如果時那種實時傳輸的流檔案,那麼要考慮傳輸網絡的可靠度,是以要1到2秒增加一個關鍵幀。

1.2 I、P、B幀概念簡述

視訊壓縮中,每幀代表一幅靜止的圖像。而在實際壓縮時,會采取各種算法減少資料的容量,其中IPB就是最常見的。簡單地說,I幀是關鍵幀,屬于幀内壓縮,解碼時單獨的該幀便可完成解碼;P幀為向前預測編碼幀,即P幀解碼時需要參考前面相關幀的資訊才能解碼;B幀為雙向預測編碼幀,解碼時既需要參考前面已有的幀又需要參考後面待解碼的幀;他們都是基于I幀來壓縮資料。

I幀表示關鍵幀,又稱intra picture,I幀畫面完整保留,解碼時隻需要本幀資料就可以完成(因為包含完整畫面)。

P幀前向預測編碼幀 又稱predictive-frame,表示的是這一幀跟之前的一個關鍵幀(或P幀)的差别,解碼時需要用之前緩存的畫面疊加上本幀定義的差别,生成最終畫面。(也就是差别幀,P幀沒有完整畫面資料,隻有與前一幀的畫面差别的資料)

B幀雙向預測内插編碼幀 又稱bi-directional interpolated prediction frame,是雙向差别幀,也就是B幀記錄的是本幀與前後幀的差别,換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之後的畫面,通過前後畫面的與本幀資料的疊加取得最終的畫面。B幀壓縮率高,但是解碼時CPU會比較累。

是以,I幀和P幀的解碼算法比較簡單,資源占用也比較少,I幀隻要自己完成就行了,至于P幀,也隻需要解碼器把前一個畫面緩存一下,遇到P幀時就使用之前緩存的畫面就行。如果視訊流隻有I和P,解碼器可以不管後面的資料,邊讀邊解碼,線性前進。如果視訊流還有B幀,則需要緩存前面和目前的視訊幀,待後面視訊幀獲得後,再解碼。

1.3 I、P、B幀特點分析

I幀特點:

1).它是一個全幀壓縮編碼幀。它将全幀圖像資訊進行JPEG壓縮編碼及傳輸;

2).解碼時僅用I幀的資料就可重構完整圖像;

3).I幀描述了圖像背景和運動主體的詳情;

4).I幀不需要參考其他畫面而生成;

5).I幀是P幀和B幀的參考幀(其品質直接影響到同組中以後各幀的品質);

6).I幀是幀組GOP的基礎幀(第一幀),在一組中隻有一個I幀;

7).I幀不需要考慮運動矢量;

8).I幀所占資料的資訊量比較大。

P幀特點:

1).P幀是I幀後面相隔1~2幀的編碼幀;

2).P幀采用運動補償的方法傳送它與前面的I或P幀的內插補點及運動矢量(預測誤差);

3).解碼時必須将I幀中的預測值與預測誤差求和後才能重構完整的P幀圖像;

4).P幀屬于前向預測的幀間編碼。它隻參考前面最靠近它的I幀或P幀;

5).P幀可以是其後面P幀的參考幀,也可以是其前後的B幀的參考幀;

6).由于P幀是參考幀,它可能造成解碼錯誤的擴散;

7).由于是內插補點傳送,P幀的壓縮比較高。

B幀特點

1).B幀是由前面的I或P幀和後面的P幀來進行預測的;

2).B幀傳送的是它與前面的I或P幀和後面的P幀之間的預測誤差及運動矢量;

3).B幀是雙向預測編碼幀;

4).B幀壓縮比最高,因為它隻反映丙參考幀間運動主體的變化情況,預測比較準确;

5).B幀不是參考幀,不會造成解碼錯誤的擴散。

2 PTS, DTS

2.1 概念

PTS:Presentation Time Stamp。PTS主要用于度量解碼後的視訊幀什麼時候被顯示出來,DTS主要用于視訊的解碼,在解碼階段使用。

DTS:Decode Time Stamp。DTS主要是辨別讀入記憶體中的bit流在什麼時候開始送入解碼器中進行解碼,PTS主要用于視訊的同步和輸出,在display的時候使用。在沒有B frame的情況下,DTS和PTS的輸出順序是一樣的.

GOP:兩個I frame之間形成一個GOP,在x264中同時可以通過參數來設定bf的大小,即:I 和p或者兩個P之間B的數量。

如果有B frame 存在的情況下一個GOP的最後一個frame一定是P.

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

關于FFMPEG 中I幀、B幀、P幀、PTS、DTS1 基本概念2 PTS, DTS

如上圖:I frame 的解碼不依賴于任何的其它的幀.而P frame的解碼則依賴于其前面的I frame或者P frame.B frame的解碼則依賴于其前的最近的一個I frame或者P frame 及其後的最近的一個P frame.