From:  http://blog.csdn.net/zgyulongfei/article/details/7558031

今天在网上找了一些资料,知道了如何检测h264中的帧类型,在这里记录下来。

首先,贴出nal单元类型定义(图从《新一代视频压缩编码标准H.264》摘录):

假设一段h264的码流为:00 00 00 01 41 E6 60……

其中的00 00 00 01为起始码,而起始码之后的下一个字节就可以检测出这一帧的类型。

在上面的码流中起始码之后的字节位 0x41,换算成二进制为 0100 0001。

注:我解读顺序为从左往右算。

(1)第1位禁止位,值为1表示语法出错

(2)第2~3位为参考级别

(3)第4~8为是nal单元类型,在此处为 0 0001换算成十进制为1。根据上图可知道这段码流是【不分区、非IDR图像的片】,在baseline的档次中就是P帧,因为baseline没有B帧。

如果是另一段码流:00 00 00 01 65 E8……

那么根据0x65字节(0110 0101)根据后5位换算十进制为5,也就是【IDR图像中的片】,即I帧。

用代码的方式可以这样写,int type = 0x65 & 0x1f,然后根据type在表中查找即可获得需要的结果。

h264检测是I帧还是P帧相关推荐

  1. H264编码入门(二)I 帧和 IDR 帧的区别

    I 帧和 IDR 帧的区别 I 帧和 IDR 帧的区别 IDR与GOP: 疑问: 解答: 结论 QQ交流群:697773082 I 帧和 IDR 帧的区别 IDR 帧属于 I 帧.解码器收到 IDR ...

  2. H264中I、B、P帧编码原理及pts和dts分析

    转载自:https://blog.csdn.net/bingqingsuimeng/article/details/9982107 --前言-- H264是新一代的编码标准,以高压缩高质量和支持多种网 ...

  3. H264中I帧P帧和B帧

    I/P/B帧 编码帧的分类 I帧(intraframe frame),关键帧,采用帧内压缩技术.IDR帧属于I帧. P帧(forward Predicted frame),向前参考帧.压缩时,只参考前 ...

  4. I 帧和 IDR 帧的区别

    I 帧和 IDR 帧的区别: IDR 帧属于 I 帧.解码器收到 IDR frame  时,将所有的参考帧队列丢弃 (用x264_reference_reset 函数实现--在 encoder.c 文 ...

  5. (转)I 帧和 IDR 帧的区别

    I 帧和 IDR 帧的区别:http://blog.csdn.net/skygray/article/details/6223358 IDR 帧属于 I 帧.解码器收到 IDR frame  时,将所 ...

  6. H.264中IDR帧和I帧区别

    IDR(Instantaneous Decoding Refresh)--即时解码刷新.       I和IDR帧都是使用帧内预测的.它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I ...

  7. python多进程解决多路视频流卡帧、掉帧、延时等问题

    多进程解决多路视频流卡帧.掉帧.延时等问题 利用python代码实现不同厂家摄像头同时实时录制并存储 本代码参考: link,文章作者实现读取多个(海康\大华)网络摄像头的视频流 (使用opencv- ...

  8. I帧和IDR帧的区别

    文章一: 转自:http://blog.csdn.net/SkyGray/article/details/6223358 IDR 帧属于 I 帧.解码器收到 IDR frame  时,将所有的参考帧队 ...

  9. I帧和IDR帧区别(转载)

    I 帧和 IDR 帧的区别: IDR 帧属于 I 帧.解码器收到 IDR frame  时,将所有的参考帧队列丢弃 (用 x264_reference_reset 函数实现--在 encoder.c  ...

  10. CAN 数据帧,远程帧,错误帧,以及出错重连

    1.CAN协议的定义: CAN总线使用串行数据传输方式,当can总线上的一个节点站发送数据,它以报文形式广播给网络中所有的节点.对于每隔节点来说,无论数据是不是发给自己的,都对其进行接受. 2.CAN ...

最新文章

  1. [刷题]算法竞赛入门经典 3-10/UVa1587 3-11/UVa1588
  2. oracle 最低要求吗,神谕Oracle配置要求高吗?最低及推荐配置一览
  3. Vue开发规范1.0
  4. 动态将表中的列名全部转换成小写
  5. 23为什么要帮助他人
  6. python神经网络调节参数_神经网络进阶-用python实现一个完整的神经网络框架并在CIFAR10数据集上调参...
  7. [转载] Python 多项式拟合(一元回归)
  8. Android4.4 Input 输入上层分析
  9. Keras(六)Autoencoder 自编码 原理及实例 Savereload 模型的保存和提取
  10. 由一维数组表示的N维数组实现(C++)
  11. 无盘服务器uefi启动,易乐游无盘网吧客户机使用UEFI启动教程
  12. cms自动更新php文件,PHPCMS站群管理系统-PHPCMS自动采集-PHPCMS自动更新
  13. AMiner推荐论文:Strongly coupled N-doped graphene quantum dots/Ni(Fe)OxHy electrocatalysts with accelerat
  14. Object.assign()用法小结
  15. 关于机器学习与人类学习不同点的思考
  16. Scratch简单实现大鱼吃小鱼
  17. 鸿蒙3部曲先看哪部,“斗罗”有四作,那当年齐名的“鸿蒙”系列到底有“几部曲”?...
  18. linux动态库注册函数,linux下加载动态库函数
  19. 笔试练习题001...to be continued...
  20. Android开发最好笔记本,5最好的笔记本应用程序Android | MOS86

热门文章

  1. Ext JS 4.1 RC1发布
  2. Hello Views之Spinner(yaozq翻译,仅供参考)
  3. leetcode 897. 递增顺序搜索树(中序遍历)
  4. 深入理解InnoDB(2)—页的存储结构
  5. 1到100的二进制编码_每天经过100天的编码后,我学到了什么
  6. 探索性数据分析(EDA):Python
  7. 移动平均线ma分析_使用动态移动平均线构建交互式库存量和价格分析图
  8. Bootstrap——可拖动模态框(Model)
  9. PHP学习系列(1)——字符串处理函数(2)
  10. JSP中直接在输入框中校验