什么是I帧,P帧,B帧
視頻壓縮中,每幀代表一幅精巧的圖像。而在實際壓縮時,會採取各種算法降低數據的容量,當中IPB就是最常見的。
簡單地說,I幀是關鍵幀,屬于幀內壓縮。就是和AVI的壓縮是一樣的。P是向前搜索的意思。B是雙向搜索。他們都是基于I幀來壓縮數據。
I幀表示關鍵幀,你能夠理解為這一幀畫面的完整保留;解碼時僅僅須要本幀數據就能夠完畢(由于包括完整畫面)
P幀表示的是這一幀跟之前的一個關鍵幀(或P幀)的區別,解碼時須要用之前緩存的畫面疊加上本幀定義的區別,生成終于畫面。(也就是區別幀,P幀沒有完整畫面數據,僅僅有與前一幀的畫面區別的數據)
B幀是雙向區別幀,也就是B幀記錄的是本幀與前后幀的區別(詳細比較復雜,有4種情況),換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數據的疊加取得終于的畫面。B幀壓縮率高,可是解碼時CPU會比較累~。
從上面的解釋看,我們知道I和P的解碼算法比較簡單,資源占用也比較少,I僅僅要自己完畢即可了,P呢,也僅僅須要解碼器把前一個畫面緩存一下,遇到P時就使用之前緩存的畫面就好了,假設視頻流僅僅有I和P,解碼器能夠無論后面的數據,邊讀邊解碼,線性前進,大家非常舒服。
但網絡上的電影非常多都採用了B幀,由于B幀記錄的是前后幀的區別,比P幀能節約很多其它的空間,但這樣一來,文件小了,解碼器就麻煩了,由于在解碼時,不僅要用之前緩存的畫面,還要知道下一個I或者P的畫面(也就是說要預讀預解碼),并且,B幀不能簡單地丟掉,由于B幀事實上也包括了畫面信息,假設簡單丟掉,并用之前的畫面簡單反復,就會造成畫面卡(事實上就是丟幀了),并且由于網絡上的電影為了節約空間,往往使用相當多的B幀,B幀用的多,對不支持B幀的播放器就造成更大的困擾,畫面也就越卡。
一般平均來說,I的壓縮率是7(跟JPG差點兒相同),P是20,B能夠達到50,可見使用B幀能節省大量空間,節省出來的空間能夠用來保存多一些I幀,這樣在同樣碼率下,能夠提供更好的畫質。
以下舉例說明:
在如上圖中,GOP (Groupof Pictures)長度為13,S0~S7 表示 8個視點,T0~T12 為 GOP的 13個時刻。每一個 GOP包括幀數為視點數 GOP 長度的乘積。在該圖中一個 GOP 中,包括94 個 B幀。B 幀占一個 GOP 總幀數的 90.38%。GOP 越長,B 幀所占比例更高,編碼的率失真性能越高。下圖測試序列 Race1
在不同 GOP 下的率失真性能對照。
總結
以上是生活随笔為你收集整理的什么是I帧,P帧,B帧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 根据地区和时区获取当地时间
- 下一篇: ElasticSearch插件安装