rt
如何计算一个h264码流的总帧数,
有人说是每个nal单元就是一帧,但是,我测试了一下,发现不对,,,查了一些关于h264码流结构的资料,还是没弄明白

解决方案 »

  1.   

    这个其实是比较简单的,对于一个NAL不是一帧数据的时候,NAL的起始码为0x00000001的一帧的开始NAL,
    0x000001为非一帧的第一个NAL,一般前两个0x00000001分别为sps和pps,不能算在H.264的总帧数里面。
      

  2.   

    我测试了一个文件,用的ffmpeg解码,通过解码显示一共有frame1496个,但是通过读取裸码流的0x00000001,结果显示不正确,通过验证nal_unit_type,nal_unit_type值为5和1的nal总数为1499,这个也不对
      

  3.   

    一个nal单元不一定就是一帧,nal单元里可以存放多种数据类型,所以基本上还是要靠nal_unit_type来验证,另外,还需要考虑帧的类型,场编码、帧编码以及多个slice的情况。
    一般一个访问控制单元是完整的一帧数据,也就是nal_unit_type等于9之间的数据是一帧。如果没有遇到nal_unit_type等于9,那么就需要综合考虑以上情况来分析码流,进行统计了。
    另外一种方法可以通过数帧的POC来计算,不过这个又有三种情形,比较复杂了。
    具体的还是仔细参考H264的标准文档吧,里面对这些内容都有详细的讲解。
      

  4.   

    还真是没有nal_unit_type等于9的nal
    我还是在看看标准文档吧
    谢谢啦~