//帧头结构体
typedef struct
{
unsigned int u32FrameID ; //标示ID,32位,固定为: 0x 00 00 00 02
unsigned int u32FrameSize; //帧大小32位,整个帧大小,字节数
unsigned char u8FrameType; //帧类型,8位,FRAME_I=0, FRAME_P=1,FRAME_B=2
unsigned char u8flag; //当该值为0x55时,后续16个bit才有意义
unsigned char u8gtag:4; //SmartP帧与对应的I帧的同步标志
unsigned char u8splusref:1; //1表示S+的参考帧,只有开启S+时的I帧和SmartP帧会置为1
unsigned char u8rs1:3; //预留默认为0
unsigned char u8reserved; //预留默认为0
unsigned int u32FrameNO; //帧序号,32位,帧序号,循环递增
unsigned int u32TimeStamp; //时间戳,32位,暂时不知道有什么用
unsigned int u32VStreamLen; //视频数据长度,32位,视频数据大小
unsigned short u16AFrames; //音频帧数,16位,该视频帧携带音频帧数
unsigned short u16AFrameSize; //音频帧大小,16位,音频帧大小
unsigned char u8ACoder; //音频压缩方式,8位,不压缩:0;G711_A:0x01; G711_U:0x02;
unsigned char u8reserved2; //预留默认为0
unsigned short reserved; //
}S_FrameHeader,*pS_FrameHeader;
整个帧头如下:
00 00 00 02 23 7B 00 00 00 55 01 00 25 89 4A 00 E5 43 A7 0B BF 79 00 00 01 00 44 01 01 00 FF FF
如下,整个I帧从文件开头偏移0x58(十进制88字节)后,连续的0x7B23字节长度。