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] & (BYTE)0xc0)
{
case 0x00:
//I Frame
break;
case 0x40:
//P Frame
case 0x80:
//B Frame
default:
}