H264(AVC)/H265(HEVC)/H266(VVC):GOP的区别
本文将对比分析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)。
![](/assets/blank.gif)
H266/VVC
VVC中GOP与HEVC类似,都是开放式的GOP。
H264(AVC)/H265(HEVC)/H266(VVC):GOP的区别相关推荐
- H265/HEVC编码NAL的单元的介绍
一.引言 与H.264/AVC 类似,H265/HEVC也采用视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer, NAL)的双层结构 ...
- H265/HEVC视频分层码流分析语义元素解释
H265/HEVC视频分层码流分析语义元素解释 H265分层结构 H265码流结构 Ffmpge 抽取H264,H265码流的命令 视频参数集VPS 序列参数集SPS(Sequence Paramet ...
- 音视频开发之旅(56) -H264/AVC基本结构
从这篇开始,我们进入H264的学习实践,主要分三个阶段 学习H264基本结构: 了解具体编码压缩技术: 分析了解相关开源库 x264和h264bitstream. 这篇我们来一起学习H264的基本结构 ...
- h264和h265多维度区别
h264和h265多维度区别 概述 h265旨在在有限带宽下传输更高质量的网络视频,仅需原先的一半带宽即可播放相同质量的视频,很多朋友不知道h264和h265如何区别,下面让我们一起来了解一下吧. 压 ...
- RTMP协议封装H264和H265协议详解
RTMP协议封装H264和H265协议详解 文章目录 RTMP协议封装H264和H265协议详解 1 RTMP和FLV 2 RTMP协议封装H264视频流 2.1 RTMP发送AVC sequence ...
- H265/HEVC 常用缩写词及其含义
H265/HEVC 官方文档第4章缩写词的部分翻译 B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码,每个预测块采用双向预测方式进行预测,B条带编码时 ...
- H265 HEVC 协议文档第4章缩写词及其含义翻译
本文为博主原创文章,未经博主允许不得转载.(合作洽谈请联系QQ:1010316426) 缩写 含义 B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码, ...
- ffmpeg使用h264、h265编码转换
1.编译x264 git clone https://code.videolan.org/videolan/x264.git cd x264 ./configure --enable-shared - ...
- rtp发送h264和h265
rtp 实时传输协议,可以使用udp和tcp h264 和 h265 h264有sps pps,se 帧,h265多一些,有sps pps vps等,不过不是很重要,接收的时候用的多一些,发送稍简单, ...
最新文章
- Java 虚拟机总结给面试的你(中)
- PyCharm 查找文件名
- mysql8连接数据库显示cache_MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'...
- LeetCode 1705. 吃苹果的最大数目(优先队列)
- ECCV 2020 Oral 中谷歌论文盘点,点云与3D方向工作居多
- 腾讯视频发布互动视频技术标准 爱奇艺、B站等均已布局
- 浅谈面粉厂防爆的重要性及措施(转)
- intellij idea 在什么地方打开终端Terminal
- ubuntu服务器开放端口_Docker服务开放了这个端口,服务器分分钟变肉机
- 算力单位TOPS,GPU处理能力(TFLOPS/TOPS),CPU能力MIPS ,片外内存与片内内存
- OpenCasCade拓扑几何(拉伸,扫略,旋转)
- UML期末大作业——《UML系统分析与设计》
- 如何通过Python实现蒙特卡罗模拟算法
- 为织梦cms列表页文章缩略图添加alt属性的方法
- 阿里巴巴牵手福特 共同打造智联网汽车
- android 调用onclick事件,在Android上使用onClick()事件时出错
- 高中生如何才能快速提高高二数学成绩
- 太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏
- linux shell完整程序,Linux Shell程序设计
- vue项目搭建和配置