http://blog.sina.com.cn/s/blog_5f435c1301015oxp.html
这是一段H264码流,00 00 00 01这是对应forbidden_zero_bit的f(1),接着后面的nal_ref_idc的u(2),这个怎么解呀,有点晕。刚接触不久,nal_unit_type的u(5),后面的profile_idc的u(8)指的是那几个,是多少?
问题补充:
nal_ref_idc的u(2)对应67变成前两位0 1也就是1,nal_unit_type取64接着的5位 10 01 1则组合成19 ,profile_idc的u(8)则是后面的64转化为十进制则是100,level_idc则是0D是13,seq_parameter_set_id的ue(v),则指到AC了,这是哥伦布编码,答案是0,这个是怎么算出来的?
满意回答
00 00 00 01是Start code后面的ox67为 0110 0111
forbidden_zero_bit 是禁止位,应该是第一位即f(1)=0,1为语法有错误
nal_ref_idc是参考级别,代表被其它帧参考情况,u(2)= 11 = 3最(0为无参考,详见规范)
nal_unit_type是该帧的类型,为剩下的5位,u(5)= 0 0111 = 7
目前类型有:
//H264定义的类型 values for nal_unit_type
typedef enum {
#if (MVC_EXTENSION_ENABLE)
#endif
} NaluType;
可以看出是NALU_TYPE_SPS
profile_idc的u(8)则是后面的64转化为十进制则是100,
66 Baseline
77 Main
88 Extended
100 High (FRExt)
110 High 10 (FRExt)
122 High 4:2:2 (FRExt)
144 High 4:4:4 (FRExt)
100是High (FRExt)
“level_idc则是0D是13,seq_parameter_set_id的ue(v),则指到AC了,这是哥伦布编码,答案是0,这个是怎么算出来的?“
就不太懂了。互相帮忙吧。
赞同
8
| 评论(1)
擅长领域: 暂未定制
参加的活动: 暂时没有参加的活动
提问者对于答案的评价:
还是蛮感谢的,挺详细的!
以上内容来自链接 http://zhidao.baidu.com/question/184301276.html最近在学习的h264视频流的以.flv文件格式存盘。 在收到h264码流的每个NAL数据(Buffer指针)时,对于如下代码的理解:
if((*(Buffer) == 0) && (*(Buffer+1) == 0) && (*(Buffer+2) == 0) && (*(Buffer+3) == 1))
//NAL头的0x00 00 00 01起始码{ if(*(Buffer+4) == SPS_FRAME) {
//ox67为 0110 0111(nal_unit_type为低5位,u(5)= 0 0111 = 7)frame_type = SPS_FRAME; } else if(*(Buffer+4) == PPS_FRAME) {
//ox68为 0110 1000 (nal_unit_type为低5位,u(5)= 0 1000 = 8) frame_type = PPS_FRAME; } else if(*(Buffer+4) == I_FRAME) { //ox65为 0110 0101 (nal_unit_type为低5位,u(5)= 0 0101 = 5) frame_type = I_FRAME; } else { //0x41为0100 00001 (nal_ref_idc是参考级别,代表被其它帧参考情况,u(2)= 10 = 2; nal_unit_type为低5位,u(5)= 0 0001 = 1) frame_type = P_FRAME; } if((*(Buffer+5) & 0x80) == 0x80) { start_frame = 1; } }