視頻編碼的I幀、P幀、B幀、IDR幀介紹


視頻傳輸原理   

     視頻是利用人眼視覺暫留的原理,通過播放一系列的圖片,使人眼產生運動的感覺。單純傳輸視頻畫面,視頻量非常大,對現有的網絡和存儲來說是不可接受的。為了能夠使視頻便於傳輸和存儲,人們發現視頻有大量重復的信息,如果將重復信息在發送端去掉,在接收端恢復出來,這樣就大大減少了視頻數據的文件,因此有了H.264視頻壓縮標准。

  在H.264壓縮標准中I幀、P幀、B幀用於表示傳輸的視頻畫面

1、I幀

I幀又稱幀內編碼幀,是一種自帶全部信息的獨立幀,無需參考其他圖像便可獨立進行解碼,可以簡單理解為一張靜態畫面。視頻序列中的第一個幀始終都是I幀,因為它是關鍵幀。

2、P幀

 P幀又稱幀間預測編碼幀,需要參考前面的I幀才能進行編碼。表示的是當前幀畫面與前一幀(前一幀可能是I幀也可能是P幀)的差別。解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。與I幀相比,P幀通常占用更少的數據位,但不足是,由於P幀對前面的P和I參考幀有着復雜的依耐性,因此對傳輸錯誤非常敏感。

3、B幀

B幀又稱雙向預測編碼幀,也就是B幀記錄的是本幀與前后幀的差別。也就是說要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數據的疊加取得最終的畫面。B幀壓縮率高,但是對解碼性能要求較高。

4、IDR(Instantaneous Decoding Refresh)–即時解碼刷新。

I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便,要首個I幀和其他I幀區別開,所以才把第一個首個I幀叫IDR,這樣就方便控制編碼和解碼流程。 IDR幀的作用是立刻刷新,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列開始編碼。而I幀不具有隨機訪問的能力,這個功能是由IDR承擔。 IDR會導致DPB(DecodedPictureBuffer 參考幀列表——這是關鍵所在)清空,而I不會。IDR圖像一定是I圖像,但I圖像不一定是IDR圖像。一個序列中可以有很多的I圖像,I圖像之后的圖像可以引用I圖像之間的圖像做運動參考。一個序列中可以有很多的I圖像,I圖像之后的圖象可以引用I圖像之間的圖像做運動參考。

對於IDR幀來說,在IDR幀之后的所有幀都不能引用任何IDR幀之前的幀的內容,與此相反,對於普通的I-幀來說,位於其之后的B-和P-幀可以引用位於普通I-幀之前的I-幀。從隨機存取的視頻流中,播放器永遠可以從一個IDR幀播放,因為在它之后沒有任何幀引用之前的幀。但是,不能在一個沒有IDR幀的視頻中從任意點開始播放,因為后面的幀總是會引用前面的幀 。

 

總結:

I幀只需考慮本幀;P幀記錄的是與前一幀的差別;B幀記錄的是前一幀及后一幀的差別,能節約更多的空間,視頻文件小了,但相對來說解碼的時候就比較麻煩。因為在解碼時,不僅要用之前緩存的畫面,而且要知道下一個I或者P的畫面,對於不支持B幀解碼的播放器容易卡頓。

視頻監控系統中預覽的視頻畫面是實時的,對畫面的流暢性要求較高。采用I幀、P幀進行視頻傳輸可以提高網絡的適應能力,且能降低解碼成本所以現階段的視頻解碼都只采用I幀和P幀進行傳輸。海康攝像機編碼,I幀間隔是50,含49個P幀。


免責聲明!

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



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