H264帧由一个特殊标记分隔,称为起始码前缀,可以是0x00 0x00 0x01或0x00 0x00 0x00 0x01.两个起始码之间的所有数据包括H264中的NAL单元.所以你想要做的是在你的h264流中搜索起始码前缀.紧接着起始码前缀的字节是NAL标头.NAL标头的最低5位将为您提供NAL单元类型.如果nal_unit_type = 5,则该特定NAL单元是参考帧.
像这样的东西:
void h264_find_IDR_frame(char *buf)
{
while(1)
{
if (buf[0]==0x00 && buf[1]==0x00 && buf[2]==0x01)
{
// Found a NAL unit with 3-byte startcode
if(buf[3] & 0x1F == 0x5)
{
// Found a reference frame, do something with it
}
break;
}
else if (buf[0]==0x00 && buf[1]==0x00 && buf[2]==0x00 && buf[3]==0x01)
{
// Found a NAL unit with 4-byte startcode
if(buf[4] & 0x1F == 0x5)
{
// Found a reference frame, do something with it
}
break;
}
buf++;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4970 次 |
最近记录: |