视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。  
简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。

I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)

P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。

从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。
但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡。
 
一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

下面举例说明:

在如上图中,GOP (Group of Pictures)长度为13,S0~S7 表示 8个视点,T0~T12 为 GOP的 13个时刻。每个 GOP包含帧数为视点数与GOP 长度的乘积8*13=104。在该图一个 GOP 中,包含94 个 B帧。B 帧占一个 GOP 总帧数的 90.38%。GOP 越长,B 帧所占比例更高,编码的率失真性能越高。

转载于:https://www.cnblogs.com/elesos/archive/2013/01/16/2862079.html

I帧,P帧,B帧简介相关推荐

  1. 【Android 高性能音频】AAudio 音频流 样本缓冲 相关配置 ( 通道数 | 样本格式 | 帧缓冲 | 采样率 | 每帧样本数 == 通道数 )

    文章目录 I . AAudio 音频流创建流程 II . AAudio 音频流构建器 设置 通道数 AAudioStreamBuilder_setChannelCount III . AAudio 音 ...

  2. 相邻帧差法和三帧差法

    相邻帧差法和三帧差法 原文地址:https://blog.csdn.net/dcrmg/article/details/52234929 帧间差分法是通过对视频中相邻两帧图像做差分运算来标记运动物体的 ...

  3. 3.2.1 封装成帧、帧定界、帧同步、透明传输(字符计数法、字符串的首尾填充法、零比特填充的首尾标志法、违规编码法)(转载)

    原文链接:https://blog.csdn.net/weixin_43914604/article/details/104779973 本博客为个人学习.研究或者欣赏用,如有侵权,请与我联系删除,谢 ...

  4. ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)

    ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损) 其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前) -s 控制输出格式大小 本人在一个视频稳定 ...

  5. idr帧 i帧 p帧_GOP、IDR帧、I帧周期的关系

    关于 GOP 中 IDR 帧的说明: 1 . 在 H.264 中一个图像组的起始帧一定是 IDR 帧, 因此在 H.264 中在处理一个 GOP 之前 会把参考图像集清空,因此一个 GOP 中的帧一定 ...

  6. ov5640帧率配置_玩《和平精英》为什么要开高帧数?90帧的游戏射速你体验过吗?...

    玩手游特别是玩<和平精英>.<cf手游>.<使命召唤>之类的FPS射击游戏,不同配置的手机游戏体验是完全不一样的.除了画面方面的差别,最主要是最高帧率严重影响游戏射 ...

  7. 恒定帧率30帧以上录制掉帧问题分析

    一.背景 录制30帧以上游戏画面,输出恒定帧率60帧视频文件出现掉帧 二.分析 经测试,ffmpeg动态帧率转恒定帧率不会有问题,因此,可能可以把ffmpeg的插帧逻辑移植过来. 1. ffmpeg补 ...

  8. 最大帧长和最小帧长详解

    文章出处: https://blog.csdn.net/ixidof/article/details/7799891 在传统以太网中,为什么要有最小帧长度和最大帧长度的限制? 以太网(IEEE 802 ...

  9. 帧计算机术语,请解释一个计算机名词:“帧”,请分别解释“帧”的名称/用途/分类,...

    帧 zhēn [释义]量词,一幅字画叫一帧. (形声.从巾,贞声.巾,与丝织物有关.本义:画幅) 同本义 曼殊堂工塑极精妙,外壁有泥金帧,不空自西域赍来者.――唐·段成式<寺塔记上> 细观 ...

  10. 计算机网络四种帧介绍,广播帧、未知帧、同网帧、异网帧

    文章原文件下载 https://download.csdn.net/download/L_Z_jay/37943385 前言: (1)网上这一部分总结感觉比较少,或者说找起来不是很好找. (2)然后又 ...

最新文章

  1. hybriddb mysql移植_HybridDB for MySQL 实现在线与离线数据分离的实践
  2. 金谷诺亚携华人文交所 经信研究·李刚:打造元宇宙数字商城
  3. python unittest excel,Python unittest excel数据驱动
  4. 解决cdh4.5.0下 MAP任务看不到状态
  5. ListView乱谈之ListView中View复用机制的简单解析
  6. windows便签快捷键_超级实用的Windows快捷键
  7. xml解析工具 SAXReader 的使用
  8. PS完美抠取头发丝----更换证件照背景完美去白边/蓝边/红边-----超实用方法
  9. memcached入门
  10. 北大人工智能前沿讲座--第二讲 嵌入式人工智能
  11. 凌晨 3 点不回家:成年人的世界不是他们说的那样子
  12. 数据分析项目-大选献金数据分析
  13. 你可以不喜欢我,但无法否定我
  14. JAVA之socket编程服务器与客户端通信--实现简易聊天室
  15. AutoCAD打开文件提示“无法识别的版本,不能读取”
  16. 设计一个形状类(接口)Shape,方法:求周长和求面积
  17. vue 网格组件_简单的Vue组件可显示带有事件的月网格日历
  18. ubuntu18.04 ros-melodic 在安装ros依赖包时总是出现E软件包无法定位
  19. 清华大学药学院丁胜团队在《自然》发表突破性全能干细胞创新研究
  20. 逻辑学和计算机科学,数学、逻辑与计算机科学的关系

热门文章

  1. spark 字符串操作
  2. .NET单元测试(五):多线程
  3. 如果伦敦地铁图是数据科学家画的……
  4. Tomcat6.0连接器源码分析3
  5. or1200处理器的异常处理类指令介绍
  6. 不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD...
  7. 【引用】MySQL定时任务
  8. 特殊的网络环境下的故障处理
  9. Python的包(Packages)
  10. 电脑获取手机文件的一种方式(通过手机建立ftp)