天天看點

mpeg4視訊中,I幀、p幀、B幀的判定(轉載)

2011-11-28 9:45

<a href="http://www.360doc.com/content/11/0718/17/474846_134326279.shtml">http://www.360doc.com/content/11/0718/17/474846_134326279.shtml</a>

mpeg4的每一幀開頭是固定的:00 00 01 b6,那麼我們如何判斷目前幀屬于什麼幀呢?在接下來的2bit,将會告訴我們答案。注意:是2bit,不是byte,下面是各類型幀與2bit的對應關系:

  00: I Frame

  01: P Frame

  10: B Frame 

為了更好地說明,我們舉幾個例子,以下是16進制顯示的視訊編碼:

  00 00 01 b6 10 34 78 97 09 87 06 57 87 ……                             I幀

  00 00 01 b6 50 78 34 20 cc 66 b3 89 ……                                  P幀

  00 00 01 b6 96 88 99 06 54 34 78 90 98 ……                              B幀

下面我們來分析一下為什麼他們分别是I、P、B幀

  0x10 = 0001 0000

  0x50 = 0101 0000

  0x96 = 1001 0100 

大家看紅色的2bit,再對照開頭說的幀與2bit的對應關系,是不是符合了呢?

下面給出一段c++代碼供大家參考:

switch(buf[i] &amp; (BYTE)0xc0)

{

case 0x00:

    //I Frame

    break;

case 0x40:

    //P Frame

case 0x80:

    //B Frame

default:

}

繼續閱讀