I帧、B帧、P帧比较而言,I帧的压缩量最大,mpeg所定义的帧内图像
http://www . 360 doc . com/content/11/0718/17/474846 _ 134326279 . shtml
mpeg4每一帧的开头都是固定的:00 00 01 b6,那么我们如何判断当前帧属于哪一帧呢?接下来的两位会告诉我们答案。注意:是2bit,不是byte。下面是各种类型的帧和2bit的对应关系:
00: I帧
01: P帧
10:B帧
为了更好地说明,我们举几个例子。以下是十六进制显示的视频编码:
00 00 01 b61034 78 97 09 87 06 57 87 …… I框架
000 01b65078 34 20c66b3 89 … p框架
00 00 01 b69688 99 06 54 34 78 90 98 …… B框架
我们来分析一下为什么分别是I、P、B帧。
0x10=0001 0000
0x50=0101 0000
0x96=1001 0100
看红色的2bit,对比开头提到的frame和2bit的对应关系。符合吗?
下面是一个C代码,供大家参考:
开关(buf[i](字节)0xc0)
{
案例0x00:
//IFrame
打破;
案例0x40:
//PFrame
打破;
案例0x80:
//BFrame
打破;
默认值:
打破;
}