文章目录

  • 前言:
  • 关于视频的基础定义
  • GOP:Group of Pictures
  • 压缩(也就是编码)
    • 帧内压缩:自己本身压缩,不参考其他的帧。
    • 帧间压缩:参考其他视频帧压缩。
  • 解码(解压缩)
  • 为什么好多人说GOP是两个I帧的间隔?
  • I帧:关键帧,intra picture
  • IDR帧:Instantaneous Decoding Refresh
  • P帧:Predictive Picture(预测编码图像帧)
  • B帧:Bidirectionally predicted picture(双向预测编码图像帧)
  • 帧率:
  • 码流:或者称为码率,只针对视频数据,单位时间内视频数据量大小,一般以秒为单位(KB/S)(码率是通过什么算法控制的 ?)
  • 结尾
  • 0928更新GOP拉大和GOP拉长的问题(实际情况需要自己判断)

前言:

最近看到一句话,

“GOP在一定程度上会影响视频画面质量 - 在码率相同的情况下,GOP越大,意味着P\B帧越多,也就更容易获取较好的图像质量”

然后回顾了一下目前了解的视频知识,发现怎么都想不明白这句话。

关于视频的基础定义

这里先科普下视频编码、解码、GOP、IDR帧、I帧、P帧、B帧、帧率、码流的基本定义。

GOP:Group of Pictures

顾名思义,就是一组图片,在实际操作中,就是一组完整的视频帧,怎么叫做完整的视频帧?也就是说一个GOP拿出来,必须能够完整的播放、显示。

那GOP就可以推断出来,必须是以I帧开头,这样后面的P帧和B帧才能跟据前向参考帧进行解码显示。

这样也就能理解,为什么GOP是I帧的间隔,从当前这个I帧开始,到下一个I帧结束(一?这里先放个问号)。

看图,从这个I帧开始到下个I帧之前,就是一个GOP:
图A

压缩(也就是编码)

这里我把压缩和编码当作同一回事,视频实际上就是一张张图片连续的播放,就像小人书一样,图片连续播放,里面的画面就好像动起来一样。

视频自然不能直接把一张张图片保存或者传输,会浪费很多存储、导致传输过程中,带宽压力特别大。

这里就需要把图片进行压缩,也就是编码。将一张张图片数据编码成视频帧,视频帧就是一张张的图片压缩之后得到的。

压缩分为帧内压缩和帧间压缩。

帧内压缩:自己本身压缩,不参考其他的帧。

举个压缩的例子,100 000,这个数字大家读的时候,肯定不是一零零零零零零,大家会读做10万或者100K,我们会把后面三个0压缩。

帧间压缩:参考其他视频帧压缩。

再举个 ,1 000 000,上面那个 ,我们读做1000K,我们也可以读做10个100K。当然这只是示例,实际的帧间压缩不可能这么简单。

对于帧间压缩来说,可以这样理解,找不同(大家一起来找茬,这个都玩过),

比如记录一个秒表的走动的视频,秒表的背景是固定的,走动的只有秒表的数字或者指针,那么我们在I帧某保存一刻秒表的完整图像,然后在下一刻只需要保存跟I帧中不同的部分,相同的部分只需要告诉播放器(解码器),除了这一部分,其他部分跟参考帧的视频数据相同。

这样压缩之后,这个视频帧解码就需要参考前面那一个参考帧的数据,这就是帧间压缩。

解码(解压缩)


图B

如图,纯粹是为了理解参考帧和解码顺序(与实际有差别)。

  • 2号P帧参考帧是1号I帧,也就是说,解码器需要根据1号I帧的内容,才能还原2号P帧的图像。
  • 4号B帧参考帧是3号和5号,那么视频帧头里面参考帧标志会告诉解码器,需要先解码3号帧和5号帧。接下来解码器会将参考帧3号和5号放入参考帧序列,然后再去解码4号帧。(5号帧是参考的谁的?)
  • 可以看下8号帧,理解下它和6、7、9、10、11的解码数据。
  • 回到问题一,GOP是两个I帧的间隔。从这里说,一个GOP就是1-10号帧,但是10号帧还参考了11号帧,那就违反了GOP是一组完整的图片的定义。所以严格意义上讲GOP必须是以IDR帧开始,到下一个IDR帧结束,一个GOP的所有视频帧的参考帧必须在GOP之中。
    视频帧头信息里面还会有pts和dts,pts代表显示时间,dts代表解码时间,这里的时间类似顺序,越大,顺序越靠后。

为什么好多人说GOP是两个I帧的间隔?

对于直播来说,不会有B帧存在,就类似图A,只有I帧和P帧的区别。

原因:直播的实时性要求决定了它不能一个帧到来的时候还要等待它后面的帧才能解码。

I帧:关键帧,intra picture

写个单词,显得专业。

I帧就是采取帧间压缩的视频帧,它可以单独被解码成一张完整的图片。那么如果某个视频都是I帧,那么一个I帧就是一个GOP。当然一般情况下都不会这样做。

IDR帧:Instantaneous Decoding Refresh

及时解码刷新。我一般称它为immediate refresh ,立刻刷新,IDR帧必须是一个I帧,但是I帧不一定是IDR帧,这个帧出现的时候,是告诉解码器,可以清除掉所有的参考帧,这是一个全新的序列,新的GOP已经开始。

P帧:Predictive Picture(预测编码图像帧)

会参考之前的I帧或者P帧,采用运动预测的方式进行帧间编码。

B帧:Bidirectionally predicted picture(双向预测编码图像帧)

双向预测,从名字就可以看出,它需要进行双向参考,也就是两个参考帧,一个在它的前面,一个在它的后面,这就是它跟P帧的区别,多了一个参考帧,当然压缩率也会比P帧高。

帧率:

刚才提到,视频其实就是一张张图片连续播放。

那么就涉及到一个问题,一秒钟播放多少张图片?也就是一秒钟多少个数据帧,这个数字就是帧率。

日常使用中,我目前见到的固定帧率的情况比较多,比如市面上一些智能摄像头之类的。

码流:或者称为码率,只针对视频数据,单位时间内视频数据量大小,一般以秒为单位(KB/S)(码率是通过什么算法控制的 ?)

码率=视频数据大小/视频时间长度。

对于直播之类的计算,码流=视频传输数据量/传输时间。

在直播中,两种方式计算的码流应该是近似相等的,否则就会出现类似延时,卡顿等情况。

结尾

“GOP在一定程度上会影响视频画面质量 -

在码率相同的情况下,GOP越大,意味着P\B帧越多,也就更容易获取较好的图像质量”

笔者看到了多次类似的话,细想总觉得有很多迷惑的地方。

首先,P/B帧的数量多少,只影响画面流畅度,不影响图像还原度和清晰度。

其次,码率固定情况下,P/B越多,那就意味着单位时间内,P/B的大小更小(码率=单位时间内所有帧数据的大小之和),

P和B越小,意味着压缩率更高,虽然视频会更加流畅,但是图像质量也就是图像还原度会更低。

在这种情况下,说容易获得较好的图像质量好像有点牵强,毕竟人眼通常情况下超过24帧的帧率之后,就不会感觉到画面卡顿。

帧率固定的情况下(这种情况下,我们可以视为码流和GOP大小成正比例关系),GOP大小会影响画面质量。

比如看直播时候,如果画面波动比较大,码流就会大起来,这个时候就能分析出来,P帧会变大,画面幅度大,导致压缩率变低。

如果这个时候强制限制码流的话,画面可能会失真,可能出现马赛克现象。(AR:所以避免马赛克的话就是不能限制码流?)

如果画面静止不动,那么P帧会很小,压缩率很高,码流也就是GOP大小自然会变小。(AR:GOP大小∝码率?(正比于))

GOP拉大,码率不变,帧率不变,那就是每个帧的数据量变大,压缩率变低,画面还原度变高

0928更新GOP拉大和GOP拉长的问题(实际情况需要自己判断)

拉长是指本来1s产生一个GOP,也就是一秒一个IDR帧,但是改成2s一个GOP,帧率不变。

拉大是指GOP容量变大,本来1sGOP大小100KB,变成120KB,帧数不变。

如果GOP中帧数增加,在压缩率稳定的情况下(正常情况下压缩率会变化,看图像变化比例)必然会造成GOP变大,如果GOP大小保证不变,可以采取减少I帧(注意不是IDR帧)来换取更多的P和B帧。

(AR:我们的场景是图像中小范围波动,我们要保证这个小范围的清晰度,需要增加更多的P帧?)

看到的许多文献中,关于GOP拉大还是拉长都没有说明,在计算码流变化之中,需要明确GOP是怎么变化的。

根据我在直播摄像头的观察,在帧率固定的前提下,比如说2s一个I帧(上面说了直播一般I帧和IDR帧等同,没有B帧),影响码流大小的是画面变化幅度,如果画面静止不动的话,码流保持在很稳定的状态;如果画面变化幅度比较大,那码流就会变大。

参考文章:关于GOP和帧率、码率的关系

视频压缩编码 gop(Group of Pictures)(I帧间隔)的概念、IDR、I帧(关键帧,intra picture)、P帧、B帧、帧内压缩、帧间压缩、pts(显示时间)、dts(解码时间)相关推荐

  1. GOP(Group of pictrues) I帧 B帧 P帧 MPEG PTS DTS 码率 帧率

    资料 I.P.B帧区别 图像I.B.P帧介绍 视频编解码基本概念之 GOP I帧 帧内编码帧 又称 intra picture ,I 帧通常是每个 GOP( MPEG 所使用的一种视频压缩技术)的第一 ...

  2. 视频压缩编码参考软件代码入门

    代码学习0:参考软件的使用 视频压缩编码标准 参考软件获取 参考软件的使用 参考软件使用方法 VTM工程 cfg配置文件 工程命令设置 编码器 解码器 工程运行 编码器 解码器 结果输出 编码端 解码 ...

  3. 笔记:新一代视频压缩编码标准-h.264/AVC

    第一章绪论: 信源模型: 1.基于波形的编码.基于波形的编码采用了把预测编码和变化编码组合起来的基于块的混合编码方法. 2.基于内容的编码.mpeg4采用的编码方法即是基于块的混合编码,又有基于内容的 ...

  4. 【转】数字音视频压缩编码标准及H.265的编码优势

    在制定数字音视频压缩编码标准的过程中,联合图像专家组(Joint Photographic Experts Group, JPEG).动态图像专家组(Moving Pictures Experts G ...

  5. 视频压缩编码标准,深入浅出,图文并茂

    1 总体介绍思维导图 2 绪论 2.1 信息化与视频通信 信息就是客观世界的描述和分析,它无处不在,无时不在,具有通用性.抽象性.无限性三个特征.地球上的物质资源是有限的.石油.煤等在一定期限总会被开 ...

  6. H.264/AVC视频压缩编码标准的新进展

    H .264/AVC是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准,于2003年5月完成制订.相对于先前的标准,H.264/AVC无论在压缩效率.还是在网络适应性 ...

  7. 1.视频压缩编码综述

    1.预测编码 一幅图像由许多个像素点组成,大量的统计表明,同一副图像中像素之间具有较强的相关性.两个像素之间的距离越短,则其相关性越强.即两个像素的值越接近.于是,人们可以利用这种像素间的相关性进行压 ...

  8. 视频压缩编码基础知识(上)

    文本位于文章底部 目前最新的视频编码器应该是H265/HEVC主要应用于高质量视频压缩,为未来2K.4K视频传输打基础,缺点是编解码消耗资源大 预测编码: 利用帧内部的相关性,只传输实际像素与参考像素 ...

  9. 视频压缩编码和解码(转)

    引言     视频具有一系列的优点,如直观性.确切性.高效性.广泛性等等,但是信息量太大,要是视频得到有效的应用,必须首先解决视频压缩编码问题,其次解决压缩后视频质量的保证问题.这两者是相互矛盾的两个 ...

最新文章

  1. java字节对齐 32 64_【C语言】字节对齐问题(以32位系统为例)
  2. python汇编指令_Python基础语法
  3. linux 文件截取
  4. 在SAP Hybris commerce Storefront里购物下单
  5. C# 淘宝商品微信返利助手开发-(三)返利助手开发(1)API介绍
  6. qq浏览器网页翻译_有了这些PDF翻译软件,再也不愁看英文文献了
  7. C语言_顺序结构的程序设计
  8. sis最新ip地址2020_2020年12月版 最新IP数据库 号段归属地 省市区镇村行政区划
  9. matlab 直方图 肥尾,概率分布细谈:厚尾、长尾、幂律、指数
  10. 谈谈阿里log4j2事件:严重性是个主观判断
  11. 禁用Dropbear中DNS反向查询连接客户端地址补丁
  12. 怎么才能写好技术文档——这是我的全部经验
  13. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统升级入口
  14. 动态表情包制作?gif动态图怎么制作?
  15. 范里安《微观经济学:现代观点》(第9版)章节习题精编详解
  16. PHP+MySQL导出大量数据(Iterator yield)
  17. Retrace AV推出新型涂料添加剂,可在30分钟内灭杀新冠病毒
  18. 数据库的基本操作(一)
  19. Mac备份的手机数据位置
  20. node-sass安装终极方案

热门文章

  1. NSDictionary - 字典
  2. SQL点滴20—T-SQL中的排名函数
  3. 初始化报表的应用用户
  4. 新书上架:《Java SE 实践教程》
  5. 【FI学习笔记】客户发票收款清账
  6. 【转载】SAP物料账未分摊差异分析
  7. brtools备份与恢复
  8. 实收资本、资本公积、盈余公积的含义和区别
  9. 如何在ABAP ALV中具体的控制每个格子中的编辑属性
  10. alv tree 总结