专栏首页媒矿工厂youtube的AV1部署情况

youtube的AV1部署情况

本文是来自Video @Scale 2019的演讲,演讲者是来自Youtube的工程师Steven Robertson,演讲主要内容是AV1在Youtube的部署情况。

AV1部署在youtube之后已经累计服务了超过五十亿小时,并且其使用预期将会猛增到1080p内容的1QPS(每秒点击量,换算下来为每天超过80k次访问),将要覆盖youtube视频观看中的很大一部分,承担一部分流量。

但是youtube对AV1的使用还没有完全调整到最优,他们目前关注的重心是部署的规模,也就是保证在未来5到8年内,AV1作为主导的codec,具有广泛的软硬件支持,可以编解码各种不同的格式。

这其中一个重要的影响因素就在于,虽然AV1的上线产生了很多积极的表现,但是在台式机上表现平平。VP9上线之后是因其出众的稳定性而获得认可,但是AV1表现一般。

另一个因素是台式机通常拥有足够的带宽来传输用户想要的高质量,但youtube的主要增长平台是移动平台。移动平台情况下,在相同质量下降低码率更能满足用户需求。

下面演讲者从客户角度谈AV1部署的历史。AV1是youtube大规模部署的第三个codec,一个经验是人们需要尝试它,因此youtube设置了TestTube作为用户的尝试入口。AV1还经历了根据未来的使用进行重运行。

在性能方面,youtube使用了混合格式,也就是部分分辨率使用VP9,部分使用AV1。具体实现使用了web中的SourceBuffer.changeType(),浏览器将会自动切换解码器。此处演讲者提到了播放器设置中的一个trick,用来提升切换codec时的表现。下面是混合格式阈值的确定,从480p开始。实验过程中演讲者发现老机器解码AV1非常差,原因部分是因为其支持的cpu指令集太少。这促使其使用dav1d这个解码器来取代libaom,因为dav1d更快,并且含有使用更老的cpu指令集编写的汇编优化代码。

然后演讲者介绍了他们确定切换分辨率的两个判据,一个是丢帧,另一个是non-networkrebuffer。后者是浏览器发生等待事件的明确标志,或者是在媒体有超过5秒的缓存时无法推进现在时间的标志。判断丢帧是比较麻烦的,各种浏览器和网络状况复杂,但是在一些情况下丢帧可以作为判据。最终他们确定了一个判据,是每5秒采样,计算丢帧率,在超过阈值连续3次后进行降低质量操作。他们还发现高丢帧不一定会伴随non-network rebuffer,比如有时可能由于一些原因收不到帧,这些没收到的帧不会被计算在丢帧中。所以不仅要考虑丢帧,还需要考虑那些性能相关的没收到的帧。

下面演讲者介绍了媒体容量。理想的媒体容量可以直接指导分辨率的使用,但是媒体容量也依赖于浏览器的丢帧。youtube致力于利用AV1的播放数据帮助浏览器厂商进行这些性能测试,从而让多方受益,最终达到浏览器能自主获得cpu能力及网络状况,从而在减少失败尝试下选择合适的分辨率。目前youtube会根据用户终端cpu的核心数选择AV1播放的分辨率,具体是小于4核用360p,4核用720p,大于4核用1080p。

接下来演讲者介绍了AV1的可变参考帧结构这一特性对解码播放的影响。他展示了VP9和AV1解码一帧的时间分布,发现两者都有起伏,av1解码一帧的时间起伏尤其大。他表示这会使浏览器受到各种线程问题的困扰,因此需要妥善优化解码顺序以及浏览器的多线程安排,以提升性能。

AV1在移动设备上具有更广泛的市场,因为在同样质量下码率更低,而移动用户通常比台式机用户更加被数据流量所限制。youtube会对用户对视频质量的要求进行建模,从而有针对性的选择给他们的视频分辨率,防止用户因用掉了过多流量而停止观看。考虑AV1在移动平台的部署,一个重大问题就是codec切换,现在没有一个自然的解决办法来处理这个问题,只能是强行切换,从而产生一个播放的停顿。即使如此,影响也不大,因为据统计,移动平台上只有2%的视频在起始时小于等于480p而结束时大于等于720p。移动平台上还有一个问题是速度与节能的选择,dav1d这个解码器注重速度,但同时消耗的cpu资源和cache资源比较多,从而会更快的消耗电量。youtube呼吁社区以及自身去设计一个比较节能的解码配置,从而适合移动市场的需要。

附上演讲视频:

http://mpvideo.qpic.cn/0b787eaaaaaamaaavrlknjpfb6odad4qaaaa.f10002.mp4?dis_k=dfc81ead147f3a0590442f29373a5e1b&dis_t=1584589511

本文分享自微信公众号 - 媒矿工厂(media_tech),作者:媒矿工厂

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 新一代互联网视频压缩AV1最新进展【2017.8】

    前几天,开放媒体联盟(AOM,Alliance for Open Media)举行了董事会议,对AV1编解码器的发布日期进行了讨论,Netflix和YouTub...

    用户1324186
  • HM、AV1、VTM编码器的主客观质量评价

    近年来视频编码标准的快速发展,推动着视频编码器的更新换代,而对于这些编码器的编码质量、编码效率等的评价仍不够充分。来自布里斯托大学的Fan Zhang在AOMe...

    用户1324186
  • 发展一年以后的dav1d

    本篇是来自FOSDEM 2020 Open Media devroom的演讲,演讲者是VideoLAN的主席Jean-Baptiste Kempf,主题是“发展...

    用户1324186
  • OpenStack启用-禁用用户,并查看详细信息

    启用用户 命令语法 openstack user set user_name --enable 样例 openstack user set woca...

    院长技术
  • mongoDB 启动与停止

    参考: Linux下快速安装MongoDB Windows平台下安装MongoDB

    Leshami
  • 三星SDS成功实施区块链试点

    近日,三星SDS在韩国成功实施了一个由政府支持的区块链试点应用,试点旨在测试记录和跟踪与进出口相关的航运物流和文件。 据了解,韩国三星(韩国最大的综合企业)的I...

    企鹅号小编
  • Q141 Linked List Cycle

    Given a linked list, determine if it has a cycle in it. Follow up: Can you solv...

    echobingo
  • Xcelsius(水晶易表)系列9——动态选择器应用(过滤器)

    今天继续跟大家分享关于水晶易表的动态选择器高级用法——过滤器。 这个部件可以将多层帅选筛选自动化,比如我们前两篇所讲解的多重筛选案例中, 需要为每一个筛选字段单...

    数据小磨坊
  • 将 svn 仓库迁移到 git 仓库

    我找到了一个很久很久以前编写的项目,然而当时是使用 svn 进行版本管理的。然而现在的版本管理全部是 git,不愿意再装一个 svn 工具来管理这...

    walterlv
  • java中的类型安全问题-Type safety: Unchecked cast from Object to ... 或者 Type safety: Unchecked cast from Type

    首先,java语言室类型安全的,通常我们遇到这个问题是出现在 Object转化为目标类型 或者 Type转化为目标类型 时,

    黑泽君

扫码关注云+社区

领取腾讯云代金券