h264的p帧的头是00 00 00 01 61

不属于以上的归为I帧,i帧的开头有1、00 00 00 01 67 ;2、00 00 00 01 08等。具体的打开一个h264文件看看就知道。

//下面是转载

MPEG4格式

MPEG4的每一帧开头是固定的:00 00 01 B6,那么如何判断当前帧属于什么帧呢?在接下来的2bit,可以判定出来。注意:是2bit,不是byte,下面是各类型帧与2bit的对应关系:

00:I Frame

01:P Frame

10:B Frame

示例:

00 00 01 B6 10 34 78 97 09 87 06 57 87 ......             I 帧

00 00 01 B6 50 78 34 20 CC 66 B3 89 ......                P 帧

00 00 01 B6 96 88 99 06 54 34 78 90 98 ......             B 帧

下面分析一下为什么它们分别是 I、P、B帧

0x10 = 0001 0000

0x50 = 0101 0000

0x96 = 1001 0100

看红色的2bit,再对照开头说的帧与2bit的对应关系,是不是符合了呢?

下面给出一段C++代码以供参考:

switch(buf[i]&(BYTE)0xC0)

{

case 0x00:

// I Frame

break;

case 0x40:

// P Frame

break;

case 0x80:

// B Frame

break;

default:

break;

}

I帧:帧内编码帧
I帧特点:
1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
2.解码时仅用I帧的数据就可重构完整图像;
3.I帧描述了图像背景和运动主体的详情;
4.I帧不需要参考其他画面而生成;
5.I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
6.I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
7.I帧不需要考虑运动矢量;
8.I帧所占数据的信息量比较大。

P帧:前向预测编码帧。
P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。
P帧特点:
1.P帧是I帧后面相隔1~2帧的编码帧;
2.P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
3.解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
4.P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
5.P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
6.由于P帧是参考帧,它可能造成解码错误的扩散;
7.由于是差值传送,P帧的压缩比较高。

B帧:双向预测内插编码帧。
B帧的预测与重构
B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。
B帧特点
1.B帧是由前面的I或P帧和后面的P帧来进行预测的;
2.B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
3.B帧是双向预测编码帧;
4.B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
5.B帧不是参考帧,不会造成解码错误的扩散。

注:I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧,至于图像中的哪一帧是I帧,是随机的,一但确定了I帧,以后的各帧就严格按规定顺序排列

h264的p帧 i帧相关推荐

  1. python小工具------将H264/H265码流文件转为一帧一帧的JPEG文件

    一.功能 输入H264/H265码流路径,此脚本可以将对应的码流转为一帧一帧的JPEG文件,并保存到指定路径. 二.具体实现 import av import sysdef h265ToJpg_dem ...

  2. H264编码器参数理解 (部分)“I帧”和“帧间距”等的理解

    写作背景:最近在研究H264编码器的参数,里面的参数不太懂,其中包括: 1)  30 # i intervals  // I 帧间距 2)  30 # idr intervals// idr帧间距 3 ...

  3. 实现对rtp H264码流的组帧

    rtp打包h264,包含了三种类型的包: 一个rtp包携带了一帧数据(single) 多个rtp包携带了一帧数据(FU-A) 一个rtp包携带了多帧数据(STAP-A) 在实际应用中绝大部分采用的是前 ...

  4. 05 H264基础-03 I帧 P帧 B帧及手写H264编码器

    文章目录 音视频高手课08-H264 I帧 P帧 B帧及手写H264编码器 1 三种帧的说明 1.2 压缩算法的说明 2 手写H264编码器 1.2.3 **第三步:实现运动预测编码** 怎么用若干 ...

  5. H264(NAL简介与I帧判断) 扩展H265

    原帖地址 1.NAL全称Network Abstract Layer, 即网络抽象层.          在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络 ...

  6. H264编码 GOP组 以及 I帧 B帧 P帧 说明

    H264 GOP I帧 B帧 P帧 说明 H264 未压缩的码流: Byte 字节单位的码流 = 640x480x1.5x15 = 691200 所有在网上传输的数据都是按照比特位计算的 所以要用 b ...

  7. h264编码与视频丢帧丢包,目标拖影,区域颜色丢失

    下面是我抄的,我和一个海康的工程师聊过,大概意思和下面一样.下面写的很细,值得借鉴. 1.丢帧的出现 说起视频播放器大家都很熟悉了,覆盖各种平台,使用简单操作方面,但是视频播放器里面的原理却非常的复杂 ...

  8. H264 i帧p帧b帧详解

    一.前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10 ...

  9. H264(NAL简介与I帧判断)

    http://blog.csdn.net/jefry_xdz/article/details/8461343 1.NAL全称Network Abstract Layer, 即网络抽象层.        ...

最新文章

  1. Openstack贡献者须知 2 — 社区工作运作 代码贡献流程
  2. 又一个被JavaScript攻占的领域:物联网
  3. Java高并发编程详解系列-线程上下文设计模式及ThreadLocal详解
  4. python数组分成两个和相等的子集_前端面试2
  5. 解决python导入当前文件夹下的包时可以运行,但编辑器报错
  6. IIS7 +vs2010部署项目后验证码显示为红叉问题
  7. 计算机网络实验:路由器交换机与其基本配置操作、常见命令
  8. 安卓客户端微博登陆(文件不存在 C8998)
  9. 解决msvcr120.dll文件丢失问题(搞了半天,简直奔溃,最后完美解决)
  10. 从此告别PPT制作的烦恼:ChatGPT和MindShow帮你快速完成
  11. 如何做成gif动画图片?教你简单三步制作gif动图
  12. java+生成drl文件_java-如何在运行时使drools drl文件访问更新的jar
  13. 一种可以穿透还原卡和还原软件的代码一种可以穿透还原卡和还原软件的代码
  14. OSPF多区域配置实验
  15. 【入门Audio音频】必了解:Audio音频格式介绍
  16. autoit 下载图片验证码
  17. 线性回归案例及其分析
  18. 数据可视化之疫情可视化
  19. 一洽CEO:一洽在线客服生态链的使命
  20. KT6368A蓝牙芯片的AT指令说明包括修改蓝牙名 设置地址 透传等等细节

热门文章

  1. Java线程池实现原理及其在美团业务中的实践(转载加总结)
  2. 618 战报的谜面,与荣耀解码的谜底
  3. Nginx多台服务器负载均衡
  4. 煮茶叶蛋口味鲜美的秘技
  5. 香港旅游六大热门目的地推荐
  6. 共阴极和共阳数码管详解
  7. python海龟画图(2)五星红旗
  8. Gitlab删除历史commit清理空间
  9. 39 | MySQL的id自增主键一定都是连续的?(写的不错~)
  10. 【面霸】10月最新184道阿里、百度、腾讯、头条Java面试题合集offer拿到手软!