I 帧又称为视频的关键帧,你可以理解为它是一帧画面的完整图像,可以直接拿这个 I 帧来解码

特点:

1、它是一个全帧压缩编码帧,它将全帧图像信息进行 JPEG 压缩编码及传输

2、解码时仅用 I 帧的数据就可以重构完整图像

3、I 帧描述了图像背景和运动主体的详情

4、I 帧不需要参考其它画面而生成

5、I 帧是 P/B 帧的参考帧(其质量直接影响到同组中以后个帧的质量)

6、I 帧是帧组 GOP 的第一帧,在一组中只有一个 I 帧

7、I 帧不需要考虑运动矢量

8、I 帧所占数据的信息量比较大

B 帧

B 帧又称为双向差别帧,也就是本帧与前后帧的差别,大白话的意思就是要解码 B 帧,不仅要拿到之前缓存的画面,还要解码之后的画面,通过前后画面的叠加来还原最终的画面。

特点:

1、B 帧是由前面的 I 帧或 P 帧和后面的 P 帧来进行预测的

2、B 帧传送的是它前面的 I 帧或 P 帧和后面的 P 帧之前的预测误差及运动矢量

3、B 帧是双向预测编码帧

4、B 帧压缩率最高,因为它只反映参考帧间运动主体的变化情况,预测比较准确

5、B 帧不是参考帧,不会造成解码错误的扩散

P 帧

P 帧又称为前预测编码帧。P 帧表示的是这一帧跟之前的一个 I 或 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 帧的压缩率比较高

基本的帧概念了解的差不多了,下一步我们基于代码来分析码流

码流分析

H.264 又称为裸流,是由多个 NALU 组成。如果 NALU 对应的 Slice 为一帧的开始,那么就用 4 个 字节表示,即 0x00 00 00 01 , 否则用 3 字节表示,0x00 00 01。要分析 H.264 码流首先是从码流中搜索起始位,也就是刚刚说的 0x00 00 00 01 或者 0x00 00 01 起始位,然后在分离 NALU, 最后再解析各个字段。下面我们先来看下 NALU Header type 代表的

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

含义:

type 说明
0 保留
1 非 IDR 图像中不采用数据划分的片段
2 非 IDR 图像中 A 类数据划分的片段
3 非 IDR 图像中 B 类数据划分的片段
4 非 IDR 图像中 C 类数据划分的片段
5 IDR 图像的片段
6 补充增强信心 (SEI)
7 SPS (序列参数集)
8 PPS (图像参数集)
9 分割符
10 序列结束符

H,0基础学android开发相关推荐

  1. 0基础学android开发,我们究竟还要学习哪些Android知识

    前言 如果你也学习Android,那么你大概率会看过我的文章.经常有读者给我留言:"该怎么学习Android?"."日常学习Android的方法是什么". 所以 ...

  2. 零基础学Android开发系列

    目标:沉浸了这么久,准备写点文章,在写文章的同时,巩固Android开发的基础知识,每天一个Android小案例,从零带领大家开发简单的Android应用.

  3. 0基础学前端开发,CSS盒子模型居中方法

    1. 背景 作为互联网行业技术从业者,接口调试是必不可少的一项技能,通常我们都会选择使用 Postman 这类工具来进行接口调试,在接口调试方面 Postman 做的确实非常出色. 但是在整个软件开发 ...

  4. 289页初中级前端题助你拿下Offer,0基础学前端开发

    前言 校招 -1 年 这个阶段还属于成长期,更需要看重的是你的基础和热情.对于 JS 基础,计算机基础,网络通信,算法等部分的要求会相对高一些.毕竟这个阶段比较难考察你的业务项目中的沉淀,所以只能从基 ...

  5. 0基础学python难吗-0基础学武汉Python开发课程有多难?该怎么入门?

    Python语言可谓十分强大,正如它的两个外号所称,一个是"内置电池",另一个是"胶水语言".开源社区和独立开发者长期为Python贡献了丰富大量的第三方库,其 ...

  6. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  7. 0基础学怎么学习python

    ​ Python相对于其他编程语言来说是比较简单的,非常适合零基础的小白学习,想要进入到互联网行业,可以优先选择学习Python,那么下面小编就来为大家详细的介绍一下0基础学怎么学习python? ​ ...

  8. 0基础学python-0基础学python 全套教程送你参考

    我0基础学Python可以吗? 我赞成把Python作为入门语言: 为什么选择python Python可以说是编程语言中罕见的既简单又强大的一门语言,python语言简洁,语言优雅,功能强大,使用p ...

  9. 0基础学python难吗-0基础学Python有多难?该怎么入门?

    0基础学Python有多难?该怎么入门?零基础学Python并不难,因为Python是一门非常适合初学者入门的编程语言.Python语法简单明了,代码可读性很高,容易入门.但Python对代码的要求非 ...

最新文章

  1. Mybatis常见的面试题总结
  2. python编程界面怎么打开-为Python程序添加图形化界面的教程
  3. Setting Up Hadoop NameNode High Availability
  4. TypeScript 里 tsconfig.json 文件的作用
  5. flask取mysql数据很慢_[flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法...
  6. python计算机视觉2:图像边缘检测
  7. js动态添加删除节点
  8. xss-lab靶场通关writeup(1~6.......在更新)
  9. HDU 4422 The Little Girl who Picks Mushrooms(简单题)
  10. 【华为云技术分享】MongoDB经典故障系列六:CPU利用率太高怎么办?
  11. android pm命令用法
  12. dede文章页调用当前栏目链接方法
  13. 能说一说 Kotlin 中 lateinit 和 lazy 的区别吗?
  14. 如何解决个人信息泄露问题
  15. 【渝粤教育】广东开放大学 岭南文化概论 形成性考核 (45)
  16. 网络舆情监测与分析研判工作如何高效做好的解决方案
  17. 图的存储 —— 邻接矩阵
  18. 微软开放跨平台联机 索尼:我们早就这么做了
  19. 详解什么是Polygon跨链桥
  20. Java数据结构与算法——线性查找 二分查找 插值查找

热门文章

  1. 创建双跑楼梯(Revit二次开发)
  2. 看看大佬是如何空手反套白狼的?
  3. 阿里云服务器安装redis环境
  4. 前端与后端传递数据 — — JSON
  5. SQL中with recursive用法案例详解
  6. 闲鱼卖高跟鞋怎么引流?闲鱼是不是什么都可以卖?
  7. 在surface book3上安装ubuntun系统(win10已有的情况下)
  8. python中列表list和元组tuple
  9. PAM 安全框架导致ssh无法登陆的排查方法
  10. 卷积神经网络算法详解