网站首页 > 开源技术 正文
翻译 | 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以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在以下情况中非常有用:
- 你不需要为了ABR而重新开始一段新的视频,但是需要关闭GOP
- 你现在想要提高视频压缩效率(因为B帧可以多一个高质量的参考帧)
- 当你需要插入I帧时(或是为了刷新视频质量,或者在非场景转换的情况下,是否跨I帧预测并不重要)
总 结
我希望这篇文章能够有助于你理解闭合GOP、开放GOP和IDR。关于视频压缩的更多入门文章,请关注我们的Easy Tech栏目。感谢阅读,我们下次再会!
致谢
本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:
https://ottverse.com/closed-gop-open-gop-idr/
延伸阅读:
视频编码完全指南
Easy Tech:什么是I帧、P帧和B帧?
为什么视频压缩如此重要
讲师招募
LiveVideoStackCon 2022 音视频技术大会 上海站,正在面向社会公开招募讲师,无论你所处的公司大小,title高低,老鸟还是菜鸟,只要你的内容对技术人有帮助,其他都是次要的。欢迎通过 speaker@livevideostack.com 提交个人资料及议题描述,我们将会在24小时内给予反馈。
猜你喜欢
- 2024-12-30 ScalersTalk成长会Java小组第7周学习笔记
- 2024-12-30 ffmpeg cv:Mat编码成H265数据流 ffmpeg解码h265码流
- 2024-12-30 拆解五六年前的国产平板,这做工!
- 2024-12-30 avi如何转成mp4?几种把avi转换成mp4格式的方法推荐
- 2024-12-30 H5标签video,如何播放流视频 h5播放flv视频
- 2024-12-30 超实用干货!这可能是史上最全的视频格式详解
- 2024-12-30 OpenCV中VideoCapture类打开视频的方式
- 2024-12-30 拆解五六年前的国产平板 国产平板怎么拆开
- 2024-12-30 如何使用PSV播放MP4 视频自动退出怎么办
- 2024-12-30 2023-03-21:音视频解混合(demuxer)为MP3和H264,用go语言编写
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)