浅谈OpenGOP与ClosedGOP

Posted zhanghui_cuc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈OpenGOP与ClosedGOP相关的知识,希望对你有一定的参考价值。

错误地设置OpenGOP与ClosedGOP,将导致某些android手机上的解码错误

作为GOP的两种结构,ClosedGOP是指帧间的预测都是在GOP中进行的,而对于OpenGOP来说,一个GOP里面的某一帧在解码时要依赖于相邻GOP中的某一些帧。

下图展示的就是一个OpenGOP的例子,在这个例子中, 末尾的两个B帧需要依赖下一个GOP中的I帧进行解码。

而下图展示的是两个CloseGOP的例子。我们也可以得出一个结论,如果一段视频内的所有I帧都同时是IDR帧,那么这段视频的所有GOP都是ClosedGOP。

虽然理论上相同码率下开启OpenGOP能带来更好的质量(B帧可以更多),但外网有人对比实测下来发现并没有明显的差距。下表分别展示了使用OpenGOP和ClosedGOP时的VMAF分数:

除此之外,如果是在HLS、DASH等自适应流媒体的场景下,为了实现码流之间的无缝切换,也必须使用ClosedGOP。

再考虑到部分手机的硬件解码器无法很好地支持OpenGOP(原因也许是没有区分普通I帧和IDR帧),所以不要犹豫,直接关闭OpenGOP选项就好了。

在x264中,OpenGOP选项默认是关闭的,但是在x265中则相反。我们可以设置下面的选项来关闭OpenGOP:

open-gop=0

欢迎关注我的公众号灰度五十,分享各类音视频、移动开发知识~

文章帮到你了?可以扫描如下二维码进行打赏,打赏多少您随意~

以上是关于浅谈OpenGOP与ClosedGOP的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Mybatis

浅谈AngularJS中的$parse和$eval

从内部入手,浅谈malloc和new的区别

浅谈代码重构与优化

浅谈代码质量与开发模式

浅谈jdbcTemplate与mybatis