用Elevator优化AV1视频播放

AOM会员Vimeo通过Elevator改善AV1解码过程中的丢帧和质量下降问题。感谢Google软件工程师姜健对本文做的技术审校。

文 / Rapha?l Zumer

译 / 刘俊

技术审校 / 姜健

原文

https://medium.com/vimeo-engineering-blog/enhancing-av1-playback-with-elevator-6a2991c1aac0

作为AV1编码标准的早期使用者,为了给Vimeo网站的用户带来更好的视频观看体验,我们需要开发诸多处理方案。其中有一种方案,取名为Elevator,是一个能在AV1格式视频码流中设置尽可能最低的编码等级的工具。在解码器端无法判断视频编码等级的时候,这种处理能优化播放过程中丢帧和视频质量下降的问题,在当前以及将来保证尽可能多的设备能够解码播放我们的视频内容。

Elevator工具在2019年9月公开发布,并且于当月在日本东京举办的视频技术开发日大会上首次展示。在这篇文章中,我们将介绍一些AV1格式的背景知识;结合一些例子来介绍Elevator是如何工作的;并分享我们在开发过程中的所思所得。

理解AV1格式的编码等级

AV1格式的编码等级是一组视频码流参数约束,一般每帧或每秒计算所得,包括码率、帧率等。从MPEG-2发布以来,编码等级的概念就存在于每一个当今常用的视频编解码器中。据编码等级规范约定,给定等级的解码器必须能够解码符合该编码等级的码流。视频编码等级使那些低功耗、解码能力有限的设备能够能够提供性能保证,在不牺牲用户体验的前提下,提前确定是否能正常播放给定码流。

在AV1和其他编码标准中,视频的编码等级参数在编码的早期阶段就已经确定了。对编码器而言,为准确设定等级有如下三种方式可用:

  1. 将等级参数设置为可能的最大值(对码流参数无约束)

  2. 在编码时收集数据,将数据返回到包头,最终获知准确的编码等级(这种方式不适用于某些部分编码过程,比如直播)

  3. 编码之前设定编码等级,在整个编码过程中严格执行该等级约束。

编码器也可以尝试预估得到准确的编码等级并且有一定的成功率。但由于不可预测的码率突增,这种方法不可能每次都输出有效码流。如下图中示例,Elevator工具为Chimera AV1格式的示例视频计算得到的编码等级就比由libaom参考编码器在编码时设置的可能的等级要高。

用Elevator优化AV1视频播放

图 1 分析步骤流程图

在处理完容器的数据后,Elevator进入分析的主循环:对视频中的每个OBU进行解析,每当遇到时间分隔符则保存下每帧内容的帧大小、头部数目等相关信息(OBU,即Open Bitstream Unit,开放比特单元,是AV1格式数据的最小划分单元)。

在分析阶段的最后,根据主循环更新迭代每帧内容得到的参数最大值,计算编码等级。然而,等级参数的定义并未统一,或是以每帧,或是以每秒计算。正因为如此,在AV1规范中没有明确定义该如何计算等级参数。在开发过程中我们得到的一些或许可行的计算方法如下:

  1. 统计每帧的指标,将结果缩放至以秒为度量;

  2. 统计每秒的指标,向下取整到最接近的帧数;

  3. 统计每秒的指标,向上取整到最接近的帧数;

我们发现,计算每帧的参数再将结果进行缩放处理会由于参数的尖峰异常值而得到与实际不符的编码等级。因此我们换了个方法,同样使用每帧的数据来更新参数,但使用每秒视频的多帧数据为组进行计算。如果帧率非整值,则对数据作向上取整处理,例如,对于帧率为23.976fps的视频,取24帧为一组。为抵消由于向上取整导致的计算偏差,我们会将结果适度缩小,比如,在23.976fps的情况下,将结果乘以23.976/24。

在实验过程中,我们发现相当多不太规范的AV1格式视频(如上面提到的Chimera的示例视频),其编码等级低于Elevator的计算值。如果Elevator计算的结果是正确的,这意味着在其他平台可能发布了大量不符合AV1编码规范的视频。不幸的是,目前并没有验证AV1编码等级正确性的公共测试序列。我们希望随着越来越多的硬件解码器在市场上发布,人们会更加关注正确标注视频编码等级的问题,产生更多能相互验证的解决方案或工具。

 

参考链接

  1. Chimera的示例视频

  2. libaom参考编码器

    https://github.vimeows.com/gist/raphael-zumer/d9fd0419827b64da1554e70b93de46f5

  3. rav1e项目

    https://github.com/xiph/rav1e

  4. av1parser项目

    https://github.com/yohhoy/av1parser

LiveVideoStackCon 2020上海 讲师招募

2020年LiveVideoStackCon将持续迭代,4月在上海,9月在北京,11月在旧金山。欢迎将你的技术实践、踩坑与填坑经历、技术与商业创业的思考分享出来,独乐不如众乐。请将个人资料和话题信息邮件到 speaker@livevideostack.com 或点击【阅读原文】了解成为LiveVideoStackCon讲师的权益与义务,我们会在48小时内回复。

LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒体技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。同时,也欢迎你利用业余时间、远程参与内容生产。欢迎通过微信“Tony_Bao_”与主编包研交流。

来源:LiveVideoStack_

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月17日
下一篇 2019年11月17日

相关推荐