僅僅使用前一個顯示的基準幀來編碼的幀被稱為“P幀”,同時使用前一個顯示幀和未來幀作為基準幀進行編碼的幀稱為“B幀”。在通常的場景中,編解碼器編碼一個I幀,然后向前跳過幾個幀,用編碼I幀作為基準幀對一個未來P幀進行編碼,然后跳回到I幀之后的下一個幀。編碼的I幀和P幀之間的幀被編碼為B幀。之后,編碼器會再次跳過幾個幀,使用第一個P幀作為基準幀編碼另外一個P幀,然后再次跳回,用B幀填充顯示序列中的空隙。這個過程不斷繼續,每12到15個P幀和B幀內插入一個新的I幀。例如,圖1種給出了一個典型的視頻幀序列。
通常,更換場景后的第一幀就是I幀,I幀應當全幀傳送。從壓縮的程度來看,I畫面的壓縮量最少;P畫面次之,它是以I畫面為基礎;B畫面壓縮最多。為了加大壓縮比,通常在I幀后面相隔2幀(最多3幀)設置1個P幀,在I、P幀之間都是B幀,在兩個P幀之間也是設置2~3幀B幀。B幀傳送它與I幀或P幀之間的差值信息,或者P幀與后面P幀或I幀之間的差值信息,或者它與前后I、P幀或P、P幀平均值之間的差值信息。當主體內容變化愈大時,兩個I畫面之間的幀數值越小;當主體內容變化小時,I面畫的間隔可以適當大一些。或者說,B幀、P幀所占比例越大,圖像壓縮比越高。一般兩個I畫面相隔13~15幀,相隔幀數不宜再多。
下面以15幀為例,說明VCD圖像幀的排列順序。I、P、B三種畫面的典型設置方式,對NTSC制共約需半秒時間。節目輸入順序是按實際出現順序排列的,即I、B、B、P、B、B、P、B、B……I、B、B、P……;但為了解碼時便于從I、P畫面插補得到B畫面,在編碼錄制節目時,將順序改變了,即按照I、P、B、B……順序,即改為按原來0、3、1、2、6、4、5、9、7、8…的畫面順序。解碼時先解出0幀、3幀,再由其插補預測計算得出1幀、2幀等等。為此,須在解碼器內設置動態存儲器,將I、P幀先解碼并存儲,再計算出各個B幀。不過最后輸出時,還是應當按照實際播放順序重組讀出,按正確順序輸出。
音視頻編碼卡的視頻編碼算法從JPEG 發展到MPEG-1、MPEG-2、MPEG-4和H.264。JPEG是一種著名的圖像壓縮方法,最初由Joint Photographic Experts Group在1986年提出并于1992年正式成為ISO標準(ISO/IEC 10918),主要應用于靜態圖像壓縮,如果把它用在運動圖像壓縮的時候,就是我們通常所說的Motion-JPEG,由于JPEG相當于MPEG的幀內壓縮,因而沒有去除時域上的冗余,所以在保證一定圖像質量的時候,壓縮比不高,通常只有10-30倍,但是它有一個固定的優點,就是延遲在40ms,實時性很好,所以在某些特殊應用的場合仍然可以看到它的蹤影。MPEG運動圖像編碼技術標準是由Motion Picture Experts Group在1988年提出,并于1992年11月通過,1993年8月作為ISO/IEC 11172標準公布,這就是通常所說的MPEG-1。MPEG-1為了追求更高的壓縮效率,更注重去除圖像系列的時間冗余度。因此引入了I幀(幀內編碼)、P幀(前向預測編碼)、B幀(雙向預測編碼)。P幀由前一個I幀或P幀圖像來預測,而B幀由前后的兩個P幀或一個I幀和一個P幀來預測,因而編解碼和幀的顯示順序有所不同,如圖1所示
I B B P B B P…B B I I P B B P B B … I B B
1 2 3 4 5 6 7 … 1 4 2 3 7 5 6 …
(a) 顯示順序 (b) 編解碼順序
圖 1
在此有兩個問題需要說明:首先是插多少B 幀最合適?理論上說I、P之間插入的B幀越多,壓縮比越高,但是編解碼器所需的幀存儲器也越大,因此實際應用中一般最多兩個。其次,B幀的引入會增加編解碼端的延遲,如果追求網絡監視的時延,最好是不使用B幀。
MPEG-1標準的一個成功應用范例是小型激光視盤(VCD)。由于它的壓縮比相對于M- JPEG大為提高,因而在數字監控系統中得到廣泛的應用。但是并不是最適合數字監控系統的應用,主要表現在碼率固定,代價是引起圖像質量的抖動,而數字監控系統最需要的不是恒定碼率,而是恒定質量。同時MPEG-1本身的技術限制,其壓縮比也沒有達到用戶滿意的程度。而2000年提出的MPEG-4不僅是一個非常開放的標準,而且增加了許多新的工具,以達到降低某些應用或圖像場景中要求的圖像質量所需的比特率。值得注意的是雖然大部分用來降低比特率的工具是為非實時應用開發的,無法使用到數字監控系統中,但是相對MPEG-1,由于使用半像素和1/4像素圖像匹配、幀內預測、高級運動矢量預測等新的技術,因而采用MPEG-4的壓縮標準之后,在PAL CIF 25fps情況下,大部分情況下碼率在300k-500k的MPEG-4壓縮圖像質量超過1.25Mbit的MPEG-1圖像,因而在數字監控系統中得到最廣泛和成功的應用。