首页 > 其他分享 >什么是闭合GOP和开放GOP?

什么是闭合GOP和开放GOP?

时间:2023-06-13 13:05:43浏览次数:51  
标签:参考 视频流 IDR 闭合 ABR 开放 GOP


翻译 | Alex

技术审校 | 李忠

本文来自OTTVerse,作者为Krishna Rao Vijayanagar。

GOP

Easy Tech

#008#

在本文中,我们将了解闭合GOP和开放GOP的概念。这两种类型的GOP在视频流化中非常常见,并会影响视频压缩效率、错误恢复以及ABR的切换能力。

  什么是GOP?

GOP(A Group of Pictures)是指一组按照编解码和显示顺序排列好的图片。

注意:如果你不熟悉视频压缩和帧的类型,可以先阅读这篇文章:Easy Tech:什么是I帧、P帧和B帧?

一个GOP包含不同类型的图片(帧)。这些基本的帧类型有:

  • I帧(仅帧内预测)
  • P帧(仅参考前一帧预测)
  • B帧(可参考前、后帧预测,即双向预测)

好,现在有了这些最基本的帧类型,我们就可以构建GOP了:

  • 一个GOP通常以I帧开头,紧接着是P帧和B帧序列
  • 两个连续I帧之间的距离被称为GOP长度
  • 连续P帧之间的距离被称为mini-GOP大小

P帧和B帧参考其他帧进行时域预测。用作预测的帧既可以是I帧和P帧,也可以是被参考的B帧。H.264/AVC允许将这三种类型的帧组合起来形成多个预测帧。

问题来了——分析显示顺序(Display Order)时,预测/参考帧的位置在哪里?换言之,P帧和B帧可以参考几个GOP之前的帧吗?这样做也许会呈现最好的效果,为什么不这样做呢?

为了回答这些问题,我们需要先理解闭合GOP和开放GOP的概念。让我们继续吧!

  什么是闭合GOP?

顾名思义,闭合GOP是指不对外开放的GOP。一个属于闭合GOP的帧只能参考本GOP之内的帧。

什么是闭合GOP和开放GOP?_机器学习

在上面的图片中,第一个GOP以P帧而不是B帧结束,这就意味着编码器不会将下一个GOP中的帧用作参考帧。多补充一点,如果GOP的最后一帧是B帧,你认为会发生什么?难道B帧不就是设计用来参考前、后帧的吗?

在这种情况下,编码器应该确保后一参考帧是空帧。后面那一帧如果是空帧,B帧这时就发挥了P帧的作用。然而,编码器总会确保最后一帧是P帧,这样一来,就简化了“关闭”GOP的过程。

闭合GOP在视频流化和压缩中非常有用,它是视频中的独立片段,和其他GOP有清晰的隔断,所有在闭合GOP出现的问题都不会影响到其他GOP。

闭合GOP以一个被称为IDR(Instantaneous Decoder Refresh,即时解码刷新)的I帧开始。之所以称之为IDR,是因为当解码器遇到 IDR 帧时,由于在 IDR 之前出现的任何帧都不能用作在该 IDR 之后出现的图片的参考帧,它可以刷新其解码图片缓冲区(Decoded Picture Buffer 或 DPB)。这就形成了图片序列的彻底中断。

所以,IDR和闭合GOP到底有什么用处?

ABR视频流:在ABR视频流中,播放器可以根据带宽和解码器缓冲器的填充程度在不同配置文件(组合不同码率和分辨率的视频)之间切换。如果播放器要从1080p切换到360p,那么它就需要这种利落的切换。此时IDR发挥作用,这样播放器就能刷新缓冲,让360p的视频流进入。如果你不了解ABR,请阅读这篇文章:理解ABR及其工作原理

错误恢复:如果你在流化视频时使用HLS,并且每个视频片段都以IDR开始,这意味着片段中的所有帧都不能参考前、后片段中的帧。所以如果因为某个错误而失去其中一个片段,播放器仍然能继续接收下一个视频片段。有趣的是,Apple 的 HLS 规范提到应该每两秒使用一次 IDR。(注意:规范没有说视频片段持续时间应该是两秒,而是指 GOP 的大小是两秒)。

快进快退(Trick Mode):我们之前提到过,IDR非常有助于实现快进快退。播放器需找到距离最近的IDR,然后开始从这一点播放视频流。

现在你已经理解闭合GOP了吧,让我们继续学习开放GOP。

 什么是开放GOP?

开放GOP正好和闭合GOP相反,允许其内的帧参考其他GOP内的帧。请看下图第二个I帧。来自前一个GOP的B帧被用作参考帧,这意味着这是一个开放GOP(由黄色箭头表示)。

什么是闭合GOP和开放GOP?_大数据_02

开放GOP在以下情况中非常有用:

  • 你不需要为了ABR而重新开始一段新的视频,但是需要关闭GOP
  • 你现在想要提高视频压缩效率(因为B帧可以多一个高质量的参考帧)
  • 当你需要插入I帧时(或是为了刷新视频质量,或者在非场景转换的情况下,是否跨I帧预测并不重要)

  总   结

我希望这篇文章能够有助于你理解闭合GOP、开放GOP和IDR。关于视频压缩的更多入门文章,请关注我们的Easy Tech栏目。感谢阅读,我们下次再会!


致谢

本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。

原文链接:

https://ottverse.com/closed-gop-open-gop-idr/



标签:参考,视频流,IDR,闭合,ABR,开放,GOP
From: https://blog.51cto.com/u_13530535/6468962

相关文章

  • Lucene--开放源代码的全文检索引擎工具包
    Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的......
  • OPEN AI 全新版本来了2.0.0永久免费在线体验构建AI开放生态
    V2.0.0更新内容后台整体功能重构完善后台增加订阅接口服务后台会陆续扩展订阅更多接口后台增加分销推广功能注册增加邮箱验证绑定开发者插件生态构建后台分销推广额度累计支持提现现金后台支持查询官方账号key使用量和余量开放接口提供账号绑定和订阅接口服务两种消费模......
  • Windows服务器如何查看服务器端口是否开放?
    在工作中处理服务器故障问题的时候,经常需要检测一下Windows的服务器业务端口是否开放,是否能正常与外面通讯。今天我与大家分享一下如何在windows环境下检测服务器端口是否开放,方法很简单。1、以Windows2008系统为例,先检查是否有安装telnet功能,有的服务器默认没有telnet功能,运行-cm......
  • CentOS7防火墙开启与关闭以及开放某个端口
    CentOS7用firewall防火墙替代了原来的iptables,所以我们应该使用firewall的一些命令。1.关闭防火墙systemctlstopfirewalld.service#停止firewallsystemctldisablefirewalld.service#禁止firewall开机启动2.开启某个端口firewall-cmd--zone=public......
  • Ubuntu系统开放指定端口
    今天在一台Ubuntu服务器里面配置了一个Nginx服务,监听的8080端口。本机可以访问,但是局域网就是访问不到。首先怀疑防火墙没有开放8080端口,设置ufw防火墙开放8080端口$sudoufwallow80然后局域网依然不能访问,接下来应该还要配置一下iptables,开放8080端口$sudoiptables-IINPUT......
  • c++实现射线法 点和闭合区域位置关系判断
    c++实现射线法  点和闭合区域位置关系判断#include<iostream>#include<vector>structPoint{doublex;doubley;};structPolygon{std::vector<Point>vertices;};//定义三个点的方向//0-->点p,q,r是共线的//1-->顺时针//2-->......
  • java 图形学 点和闭合区域位置关系判断
    判断一个点是否在一个特定的区域内或外,通常需要你具备区域的数学表达(例如,方程、不等式等)以及要判断的点的坐标。例如,如果你有一个圆的方程(x-h)²+(y-k)²=r²,其中(h,k)是圆心,r是半径,你要判断点(a,b)是否在此圆内或外。你可以将点(a,b)的坐标带入这个方程:如果(a......
  • Web 开放字体格式 woff
    Web开放字体格式(WOFF)-Web开发者指南|MDNhttps://developer.mozilla.org/zh-CN/docs/Web/Guide/WOFFWeb字体简介:TTF,OTF,WOFF,EOT&SVG-知乎https://zhuanlan.zhihu.com/p/28179203 翻译搜索复制......
  • 金蝶云·苍穹技术开放日第六期·广州站,我们来了!
    金蝶云·苍穹技术开放日 回顾金蝶云·苍穹技术开放日前面五期,由于疫情因素,我们线下只举办了深圳、长沙两场,其余三场均为线上。今年,金蝶云·苍穹将以全新的面貌重磅回归,开启城市巡回之旅,创建城市开发者社区组织-UserClub,社区成员可在城市自发组织线下Meetup,更开放式交流!金蝶云·苍......
  • 有赞 调用 api 接口(有赞开放平台)
    ps:先注册有赞账号有赞https://www.youzan.com/有赞开放平台http://open.youzan.com/有赞开发者后台http://open.youzan.com/developer/app/index接入说明:http://open.youzan.com/docAPI文档:http://open.youzan.com/api***********************************************......