本文将对比分析H264/H265/H266中关于GOP的区别。

注:

1、本文参考了下列文章:

  • https://blog.csdn.net/cpp12341234/article/details/44422307
  • https://www.it610.com/article/1280316313373261824.htm
  • http://blog.csdn.net/zqj6893/article/details/50262189
  • https://blog.csdn.net/showerlxy/article/details/96481044
  • https://blog.csdn.net/qq_18998145/article/details/93628618
  • H264 spec
  • H265 spec
  • H266 spec

2、本文若有错的地方,请读者指正,谢谢!


GOP简介

  • 编码结构从编码的分层处理架构和编码后码流的语法架构进行描述,对有若干时间连续的图像构成的视频序列进行压缩时,先将其分割为若干个图像组GOP(Group of Picture,GOP):分为封闭GOP和开放GOP。

    • 封闭GOP:每个GOP都以IDR(Instantaneous Decoding Refresh)开始,各个GOP之间独立编码。
    • 开放GOP:第一个GOP的第一个帧内编码图像为IDR图像,后续GOP中的第一个帧内编码图像为non-IDR,就是后面GOP中的帧间编码图像可以越过non-IDR图像,使用前一个GOP中已编码的图像做参考图像。

封闭式GOP(H264):

开放式GOP(H265/H266):


H264/AVC

  • H.264编码首先将视频序列分为若干个GOP(Group of Picture),每个GOP的第一帧均为IDR(即时解码刷新)帧。

    • IDR帧一定是I帧,但反之不成立。
    • IDR帧的作用是立刻刷新,防止错误传播,从IDR帧开始,重新进行序列后续编码。换句话说,IDR帧具有随机访问的能力,IDR帧后续的编码,完全不依赖前面帧的信息。
    • IDR会使得DPB清空,而I帧不会。
  • H.264中所有GOP独立解码,不会互相参考,称为封闭GOP。
  • 在H264中:
    • GOP简单来说就是两个IDR帧之间的间隔。下图中GOPsize=4。
    • Reference(参考周期)指两个P帧之间的距离。下图中Reference=1。
    • 一个I帧所占用的字节数大于一个P帧,一个P帧所占用的字节数大于一个B帧。所以在码率不变的前提下:
      • GOP值越大,P、B帧的数量会越多,画面细节更多,也就更容易获取较好的图像质量;
      • Reference越大,B帧的数量越多,同理也更容易获得较好的图像质量。
      • 但是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。
      • 同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作(找I帧)的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。


H265/HEVC

  • HEVC同样首先将视频序列分为若干个GOP,但是可以参考其他GOP的图像,称为开放式GOP。在HEVC中,GOP简单来说就是两个随机接入点(帧)之间的间隔。
  • HEVC为了应对不同的应用场景,设立了三种GOP的编码结构:全帧内(All Intra,AI)、低延时(LD)和随机接入(RA)。
    • 全帧内编码:所有GOP的每一帧图像都是按帧内方式进行空间域预测编码,不使用时间参考帧(即,GOPSize = 1)。
    • 低延时编码:只有第一帧图像按照帧内方式进行编码,并成为及时解码刷新帧(IDR),随后各帧都是普通P帧和B帧(也就是说,只有一个GOP,如下图所示)。
    • 随机接入编码:每个GOP中主要是B帧,周期性(大约1s)插入一个纯随机接入帧(CRA),这些CRA帧作为码流中的随机接入点(RAP)。对随机接入点(帧)的解码可以独立进行,不需要参考前面已解码的帧。
      • 该编码模式下,GOP的大小决定了B帧的数量,B帧数量为GOP中帧数减去1,即,number of B slice = GOPSize - 1。
      • HEVC之所以是开放式GOP,就是因为CRA的存在(关于CRA的介绍,可以参考博客:https://blog.csdn.net/Dillon2015/article/details/104305180)。

低延时编码结构

H266/VVC

VVC中GOP与HEVC类似,都是开放式的GOP。

H264(AVC)/H265(HEVC)/H266(VVC):GOP的区别相关推荐

  1. H265/HEVC编码NAL的单元的介绍

    一.引言 与H.264/AVC 类似,H265/HEVC也采用视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer, NAL)的双层结构 ...

  2. H265/HEVC视频分层码流分析语义元素解释

    H265/HEVC视频分层码流分析语义元素解释 H265分层结构 H265码流结构 Ffmpge 抽取H264,H265码流的命令 视频参数集VPS 序列参数集SPS(Sequence Paramet ...

  3. 音视频开发之旅(56) -H264/AVC基本结构

    从这篇开始,我们进入H264的学习实践,主要分三个阶段 学习H264基本结构: 了解具体编码压缩技术: 分析了解相关开源库 x264和h264bitstream. 这篇我们来一起学习H264的基本结构 ...

  4. h264和h265多维度区别

    h264和h265多维度区别 概述 h265旨在在有限带宽下传输更高质量的网络视频,仅需原先的一半带宽即可播放相同质量的视频,很多朋友不知道h264和h265如何区别,下面让我们一起来了解一下吧. 压 ...

  5. RTMP协议封装H264和H265协议详解

    RTMP协议封装H264和H265协议详解 文章目录 RTMP协议封装H264和H265协议详解 1 RTMP和FLV 2 RTMP协议封装H264视频流 2.1 RTMP发送AVC sequence ...

  6. H265/HEVC 常用缩写词及其含义

    H265/HEVC 官方文档第4章缩写词的部分翻译 B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码,每个预测块采用双向预测方式进行预测,B条带编码时 ...

  7. H265 HEVC 协议文档第4章缩写词及其含义翻译

    本文为博主原创文章,未经博主允许不得转载.(合作洽谈请联系QQ:1010316426) 缩写 含义 B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码, ...

  8. ffmpeg使用h264、h265编码转换

    1.编译x264 git clone https://code.videolan.org/videolan/x264.git cd x264 ./configure --enable-shared - ...

  9. rtp发送h264和h265

    rtp 实时传输协议,可以使用udp和tcp h264 和 h265 h264有sps pps,se 帧,h265多一些,有sps pps vps等,不过不是很重要,接收的时候用的多一些,发送稍简单, ...

最新文章

  1. Java 虚拟机总结给面试的你(中)
  2. PyCharm 查找文件名
  3. mysql8连接数据库显示cache_MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'...
  4. LeetCode 1705. 吃苹果的最大数目(优先队列)
  5. ECCV 2020 Oral 中谷歌论文盘点,点云与3D方向工作居多
  6. 腾讯视频发布互动视频技术标准 爱奇艺、B站等均已布局
  7. 浅谈面粉厂防爆的重要性及措施(转)
  8. intellij idea 在什么地方打开终端Terminal
  9. ubuntu服务器开放端口_Docker服务开放了这个端口,服务器分分钟变肉机
  10. 算力单位TOPS,GPU处理能力(TFLOPS/TOPS),CPU能力MIPS ,片外内存与片内内存
  11. OpenCasCade拓扑几何(拉伸,扫略,旋转)
  12. UML期末大作业——《UML系统分析与设计》
  13. 如何通过Python实现蒙特卡罗模拟算法
  14. 为织梦cms列表页文章缩略图添加alt属性的方法
  15. 阿里巴巴牵手福特 共同打造智联网汽车
  16. android 调用onclick事件,在Android上使用onClick()事件时出错
  17. 高中生如何才能快速提高高二数学成绩
  18. 太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏
  19. linux shell完整程序,Linux Shell程序设计
  20. vue项目搭建和配置

热门文章

  1. python照片查重_Python 进行excel查重
  2. 正交设计 python算法_人人都可以掌握的正交试验设计测试用例方法
  3. tf.round(): 四舍六入五取偶
  4. 如何把一张透明的图片做成不透明的
  5. 如何对镶嵌数据集进行色彩平衡
  6. 仪表和中控车机GUI界面开发工具介绍
  7. 【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析
  8. java 数组去除重复_Java从数组中删除重复项?
  9. 少儿编程----颜值打分系统
  10. 西方经济学微观部分中的英文字母缩写