用Elevator优化AV1视频播放

用Elevator优化AV1视频播放

AOM会员Vimeo通过Elevator改善AV1解码过程中的丢帧和质量下降问题。感谢Google软件工程师姜健对本文做的技术审校。
文/RaphalZumer
译/刘俊
技术审校/姜健
原文
https://medium.com/vimeo-engineering-blog/enhancing-av1-playback-with-elevator-6a2991c1aac0
作为AV1编码标准的早期使用者,为了给Vimeo网站的用户带来更好的视频观看体验,我们需要开发诸多处理方案。其中有一种方案,取名为Elevator,是一个能在AV1格式视频码流中设置尽可能最低的编码等级的工具。在解码器端无法判断视频编码等级的时候,这种处理能优化播放过程中丢帧和视频质量下降的问题,在当前以及将来保证尽可能多的设备能够解码播放我们的视频内容。
Elevator工具在2019年9月公开发布,并且于当月在日本东京举办的视频技术开发日大会上首次展示。在这篇文章中,我们将介绍一些AV1格式的背景知识;结合一些例子来介绍Elevator是如何工作的;并分享我们在开发过程中的所思所得。
AV1格式的编码等级是一组视频码流参数约束,一般每帧或每秒计算所得,包括码率、帧率等。从MPEG-2发布以来,编码等级的概念就存在于每一个当今常用的视频编解码器中。据编码等级规范约定,给定等级的解码器必须能够解码符合该编码等级的码流。视频编码等级使那些低功耗、解码能力有限的设备能够能够提供性能保证,在不牺牲用户体验的前提下,提前确定是否能正常播放给定码流。
在AV1和其他编码标准中,视频的编码等级参数在编码的早期阶段就已经确定了。对编码器而言,为准确设定等级有如下三种方式可用:
编码器也可以尝试预估得到准确的编码等级并且有一定的成功率。但由于不可预测的码率突增,这种方法不可能每次都输出有效码流。如下图中示例,Elevator工具为ChimeraAV1格式的示例视频计算得到的编码等级就比由libaom参考编码器在编码时设置的可能的等级要高。
我们在Vimeo网站上编码AV1视频使用的编码器,rav1e,采用上述方法中的第一种。虽然这是最简单的,但是其前向兼容性并不够理想。我们希望高编码级别的码流不会被错误地送到只能解码低编码等级的低功耗设备上,于是我们开发了与rav1e不一样的Elevator,用于分析已编码的视频,设置准确的编码等级。
Elevator是一个用于计算AV1格式视频编码等级相关参数的开源命令行工具。这个工具计算码流所符合的最低编码等级,将该值输出在命令行窗口,也可以直接将其设置到视频流或新文件中。
尽管我们使用Elevator去降低Vimeo网站上被高估的编码等级,在编码器无法有效地约束视频的编码等级的时候,Elevator的表现也很出色。比如,我们根据Elevator计算结果反馈,逐步调整参数去重新编码视频内容,最终可得到足够低的编码级别。
为了充分利用Av1parser(开放多媒体联盟的AV1视频解析器),Elevator采用Rust语言编写。据我们所知,Av1parser在开发的时候是唯一独立的AV1码流解析器。由于计算编码等级参数所需信息的有些内容被封装在码流中间的包头中,编写我们自己的解析逻辑困难又耗时。我们对Av1parser做了很少一些改造,将这些问题的处理交给Av1parser,这样我们就少编写了很多用于分析复杂的AV1码流的代码。Elevator中唯一需要的位计数和位操作是在处理结束时将视频的编码等级设置为正确值。
由于某些码流特性以我们尚未支持的方式影响着参数的计算,Elevator尚不支持所有的AV1格式视频。到目前为止,Elevator只支持处理IVF容器封装的视频。在此,我们特别欢迎任何对该项目感兴趣的人在本项目GitHub上贡献缺陷报告、功能建议,或者上传补丁。
Elevator的使用可以高度概括为两个步骤:分析和修补(后者是可选的)。修补步骤相对简单,因为编码等级参数被设定在AV1码流序列头的开始部分。在分析过程中,我们把序列头的位置记录下,以方便后续再次查找;然后,统计等级信息在码流序列头部中的偏移字节数,确保在准确的位置对编码等级进行编辑。
下图为分析的处理流程图:
图1分析步骤流程图
在处理完容器的数据后,Elevator进入分析的主循环:对视频中的每个OBU进行解析,每当遇到时间分隔符则保存下每帧内容的帧大小、头部数目等相关信息(OBU,即OpenBitstreamUnit,开放比特单元,是AV1格式数据的最小划分单元)。
在分析阶段的最后,根据主循环更新迭代每帧内容得到的参数最大值,计算编码等级。然而,等级参数的定义并未统一,或是以每帧,或是以每秒计算。正因为如此,在AV1规范中没有明确定义该如何计算等级参数。在开发过程中我们得到的一些或许可行的计算方法如下:
我们发现,计算每帧的参数再将结果进行缩放处理会由于参数的尖峰异常值而得到与实际不符的编码等级。因此我们换了个方法,同样使用每帧的数据来更新参数,但使用每秒视频的多帧数据为组进行计算。如果帧率非整值,则对数据作向上取整处理,例如,对于帧率为23.976fps的视频,取24帧为一组。为抵消由于向上取整导致的计算偏差,我们会将结果适度缩小,比如,在23.976fps的情况下,将结果乘以23.976/24。
在实验过程中,我们发现相当多不太规范的AV1格式视频(如上面提到的Chimera的示例视频),其编码等级低于Elevator的计算值。如果Elevator计算的结果是正确的,这意味着在其他平台可能发布了大量不符合AV1编码规范的视频。不幸的是,目前并没有验证AV1编码等级正确性的公共测试序列。我们希望随着越来越多的硬件解码器在市场上发布,人们会更加关注正确标注视频编码等级的问题,产生更多能相互验证的解决方案或工具。
参考链接

主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/16610.html

(0)
上一篇 2023年3月10日 上午11:33
下一篇 2023年3月10日 上午11:40

相关推荐

  • 使用 Hippo 进入 WebAssembly

    使用 Hippo 进入 WebAssembly 云和安全管理服务专家新钛云服黄飞翻译WebAssembly是一项非常有前途的新技术,微软的云原生计算团队对其DeisLabs子公司和Azure都非常感兴趣。随着新的WebAssembly工具迅速出现,您需要一个可以试用它们的环境。这就是为什么DeisLabs发布其新的HippoWebAssembly平台如此重要…

  • 2022-05-21:给定一个数组arr,长度为n,表示n个服务员,每个人

    2022-05-21:给定一个数组arr,长度为n,表示n个服务员,每个人 2022-05-21:给定一个数组arr,长度为n,表示n个服务员,每个人服务一个人的时间。给定一个正数m,表示有m个人等位。如果你是刚来的人,请问你需要等多久?假设:m远远大于n,比如n<=1000,m<=10的9次方,该怎么做?来自谷歌。答案2022-05-21:方法…

    RUST资讯 2023年2月16日
    100
  • 爱可可老师24小时热门分享(2020.6.25)

    爱可可老师24小时热门分享(2020.6.25) No1.【“最萌”深度学习PPT】No2.双曲线,抛物线,椭圆,圆,都可以通过圆锥切片得到No3.2020进度:▓▓▓▓▓▓▓░░░░░░░░48%⛽️…No4.【我怎么读机器学习论文:以DETR论文为例】No5.《ASurveyonDeepLearningforLocalizationandMapping:…

    RUST资讯 2023年2月22日
    90
  • 成都,在古代为什么不被英雄看好呢?

    成都,在古代为什么不被英雄看好呢? 提出一个问题,满世界找答案,这就是我的走读地理,今天的问题是,成都为什么不被英雄看好呢?因为成都太富了,天府之国,富得流油,你看成都平原,那是水网纵横,良田千里,西边是青藏高原,整个一片雪国,不用担心外敌来犯,东边是龙泉山和四川盆地两层外围,可谓双保险,就算有梦想的人到了这里,也不想奋斗呀。因为这个地方不受外界打扰,太安全…

    RUST资讯 2023年2月24日
    90
  • Rust Linux 驱动程序能够实现与 C 驱动程序相当的性能

    Rust Linux 驱动程序能够实现与 C 驱动程序相当的性能 出品|开源中国正在进行的LinuxPlumbersConference2022大会上举行了一个Rust相关的小型会议,该会议讨论的大方向大致为:正在进行的使Rust成为一种合适的系统编程语言的工作,以及在主线Linux内核中整合对Rust的支持。领导”RustforLinux&#8…

    RUST资讯 2023年2月20日
    110
  • QuestBook融资830万美元,帮助web3开发者获得资金

    QuestBook融资830万美元,帮助web3开发者获得资金 原文来源:tech区块链和其他web3项目正在大量吸纳开发人才,举办黑客马拉松,发放补助金和提供其他福利,以吸引那些有能力建设的人。但是他们目前没有足够的时间来审查他们收到的大量申请信息,这就把一些能够为这些项目带来巨大价值的建设者推开了。试图解决这个问题的创业公司QuestBook今天表示,它…

    RUST资讯 2023年2月19日
    90
  • 隐私加密系列|Grin与BEAM之间技术公开对比

    隐私加密系列|Grin与BEAM之间技术公开对比 免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。小编:记得关注哦来源:区块链研究实验室原文标题:隐私加密系列|Grin与BEAM之间技术公开对比01简介Grin和BEAM是两个基于Mimblewimble协议的开源加密货币项目。Mimblewimble协议最…

  • 乘风破浪的姐姐之「绝美唇色」?跟着姐姐买口红准没错

    乘风破浪的姐姐之「绝美唇色」?跟着姐姐买口红准没错 《乘风破浪的姐姐》最近爆红,你们都看了吗?节目一播出就引发热烈讨论,30位大明星姐姐,本身圈粉无数,年纪30+突破极限劲歌热舞,再加上过程中的相处对话、态度小细节,可以看到大明星私下不为人知的一面,那话题热度自然蹭蹭蹭一下就上来了!美妆控自然先注意到妆容这块!虽然知道姐姐们用的唇膏是梵蜜琳,但还是忍不住扒了…

    RUST资讯 2023年2月24日
    50
  • Rust 编程视频教程(进阶)——015_1 引用循环

    Rust 编程视频教程(进阶)——015_1 引用循环 头条地址:https://www.ixigua.com/i6775861706447913485github地址:见扩展链接引用循环,让两个list指向彼此,例子代码如下:“`usestd::rc::Rc;usestd::cell::RefCell;usecrate::List::{Cons…

    RUST资讯 2023年2月20日
    70
  • 精品推荐—罕见天眷通宝

    精品推荐—罕见天眷通宝 天眷通宝,中国古代钱币之一。金代早期铸币,因存世绝少,天眷通宝至今未见谱载。天眷通宝分小平和折二,平钱有楷,篆两种书体。天眷通宝折二钱面文为楷体,直径3厘米,重约7.2克。天眷通宝平钱为楷书体,右旋读,其中“眷”字多书一横;而“通”字写法颇肖南宋“建炎通宝”之“点建”钱的写法,“宝”分作三笔,甚奇。该钱光背,棕褐色包浆,字间有入骨锈,…

    RUST资讯 2023年2月28日
    50
关注微信