写点什么

AV1 在 RTC 应用实践中的现状与展望

2021 年 3 月 07 日

AV1在RTC应用实践中的现状与展望

本文首发于 InfoQ,由声网 Agora 开发者社区 与 InfoQ 联合策划,并由 InfoQ 审校。


2018 年 6 月,AOM 联盟(Alliance for Open Media,开放媒体联盟)发布了新一代视频编码标准——AV1(Alliance for Open Media Video 1)。至今 AOM 联盟共有 47 家企业会员,其中包括 14 名理事会成员(Board Members)和 33 名 Promoter 会员。


AV1 的零号版本,起始由同样开源、免版税的 VP9 编解码代码库 libvpx 衍生而来,同时吸纳了 Google VP10、Mozilla Daala 以及 Cisco Thor 三款开源编码项目中的研发成果。截止 2018 年 6 月 AV1 封稿,AV1 相比其前身 VP9,共推出了 100 多个崭新的编码工具,代表了业界最新的编码技术。


本文我们将会探讨未来 AV1 在实时场景中可能会出现的技术趋势。同时,由于 AV1 在实时场景中的数据有限,为了能更直观地说明将产生的变化,我们会基于 Aurora  AV1 在实时场景中的性能数据,以及与已有编码器,包括 H264、VP9 等开源编码器的对比统计来进行分享。通过 Aurora 的实例、数据,主要是为了说明 AV1 标准在实时场景中已完全进入实用阶段。我们在此也期待与业界同行围绕这些研究数据,与我们多多交流与讨论。

AV1 在 RTC 场景中的应用实践和生态发展


RTC 技术升级与应用拓展,近年来风起云涌,尤其 2020 年疫情之下,RTC 领域呈爆发性增长,涵盖视频会议、在线教育、远程终端、游戏互动、电商互动直播、远程医疗、在线金融等各个领域,其典型视频内容主要为两类:屏幕内容以及摄像头 Talking Head 内容。对于 RTC 超低延时互动场景,视频编码器的打磨与应用,除编码效率、视频画质这些对编码器性能的基本考量外,在编码时延、编码速度、编码复杂度、自适应码控、以及与网络层适配容错等性能上,均有严格的要求。AV1 丰富的编码工具,比如其独特的屏幕内容编码工具,使得 AV1 对于 RTC 实时互动场景用户体验的提升,提供了很大的可能。


WebRTC是目前业界最具影响力的实时互动开源项目,提供 Web 端与移动端 RTC 应用程序的音视频 APIs。今年 2021 年 1 月,W3C 标准组织正式将 WebRTC 1.0 确定为标准推荐。WebRTC 开源代码库中,主要包括 libvpx 中的 VP8、VP9 以及 H264 Openh264 三款开源视频编码器。AV1 从 VP9 衍生而来,与 WebRTC 具备天然耦合协同性,包括对时域可伸缩性(Temporal Scalability)的支持等特性。与此同时,AV1 是第一款将屏幕内容编码(Screen Content Coding, SCC)工具,引入其主体的视频编码标准,即:任一 AV1 标准解码器,均需支持 SCC。这对 AV1 在实时场景中处理计算机生成内容,相比其他标准,占有巨大优势。


AV1 的有效软解,对于 RTC 场景,无论在 PC 平台、还是移动平台,都是必不可少的必备方案。AV1 软件开源解码器,目前包括 AOM/Google 维护的 libaom,AOM/Intel 维护的 SVT-AV1,Google 推出的尤其面向 Android 设备的 libgav1,以及由 VideoLAN、FFmpeg 开源社区维护、AOM 资助的 dav1d。我们的用户评测下来,dav1d 综合表现最佳,今年 2021 年 1 月 dav1d 0.8 推出,又在 AMD、arm architecture 上做了进一步的优化。


AOM/AV1 的开源编解码器 libaom 的实时档,又称为 libaom-RT 档,已被 WebRTC 吸纳进来,并从 Chrome 89 版本起正式采用。2020 年 Google 实时通话产品 DUO、视频会议产品 Meet 均以 libaom-RT AV1 为基准,率先推出 AV1 在 RTC 场景中的应用。之后 Cisco WebEx 也宣布,在其视频会议场景、尤其是屏幕共享场景中开始在 PC 端采用 AV1 编解码。


微帧团队在 2019 年推出了全自研 Aurora AV1 编码器,并成为全球首家 RTC 场景 AV1 商务编码器提供商。Aurora AV1 在实践应用中不断打磨升级,目前已实现 PC 端屏幕内容编码、以及摄像头 Talking Head 场景下的稳定运行。Aurora AV1 在移动端、以及其他 ARM 机型上的应用,也在日趋成熟,本文的性能数据都是基于 Aurora  AV1 所得到的。


当然,无论是多么先进的编码标准,均需要一个完整的、可持续的生态体系来支撑。AOM 会员涵盖了视频从采集制作、传输分享到播放消费的完整生态系统,对于 RTC 领域,AOM 成员也囊括了多家 RTC 领域技术与应用的全球领衔企业,比如声网(Agora)、思科(Cisco/WebEx)、Poly 等。与此同时,AV1 成员包括浏览器提供商:如谷歌(Chrome)、苹果(Safari)、微软(Edge)以及 Mozilla(Firefox);硬件制造商:如 Intel、AMD、nvidia、arm、SAMSUNG、Xilinx、Broadcom,以及中国的华为等;云服务商:如北美的亚马逊(AWS)、微软(Azure)、谷歌(GCP)、IBM,以及中国的阿里(阿里云)、腾讯(腾讯云)、金山云、华为(华为云)等;同时包括思科等网络与系统提供商。AV1 具备着天然的生态优势。



AV1 RTC,目前在浏览器(Safari 除外,不过苹果是 AOM 董事会成员)支持、Android 移动端 OS 支持外,硬解支持日渐完善。Apple 是 AOM 董事会员,目前在 AV2 推进上也表现了积极的态度,预计 Apple 生态支持 AV1,为期不远。另外,高通(Qualcomm)虽不是 AOM 会员,但对于 AV1 的支持,业界普遍认为,最迟在 2021 年底、2022 年初,高通会推出支持 AV1 的硬解芯片。

AV1 RTC 屏幕内容编码


AV1 标准中,提供了 IntraBC、调色板模式(Palette mode)等特别适用于屏幕内容编码的特定工具。此外,CfL (Chroma-from-Luma)这款工具,虽然并非专为屏幕内容打造,但对于屏幕内容编码是一个比较有效的工具。



注:图中 x264 采用 ffmpeg 命令行 - ffmpeg -r 30 -s 1920×1080 -c:v libx264 -x264-params bframes=0 -tune zerolatency -preset superfast -threads 1


Aurora AV1 相对已有编码标准方案,包括 VP9、H264 等,在不同分辨率屏幕内容压缩效率上,均展示了绝对优势。如图所示,比如利用普通 PC 单核资源编码, Aurora 相比开源 x264 superfast 实时档,对于 1080p30 的屏幕内容测试序列集,BD-rate (PSNR)增益为 81.25%,即:对于评测集,Aurora AV1 只需要 x264 的(1-81.25%)=18.75%、也就是不到 1/5 的码率,即可获取相近的 PSNR 客观质量。



上图显示了 Aurora AV1 与 x264 superfast 档编码速度的对比。单线程下对于 1080p 屏幕内容视频,x264 速度高达 132+FPS(帧/秒),而 Aurora 为 46+FPS,是 x264 编码速度的 1/3 左右。Aurora 的编码速度虽远不如 x264,进一步考虑屏幕内容在多数场景下,所要求帧率一般小于普通摄像头内容的帧率,对于屏幕内容 RTC 场景,AV1 已完全达到实用需求。

AV1 RTC 时域可伸缩性编码


时域可伸缩性(Temporal scalability)以及自适应丢帧,对于 RTC 场景尤其重要。由于网络带宽、RTT 时延、Jitter 抖动、包丢失等网络条件的动态变化,编码器需配合网络控制层,作出自适应调整。视频编码器的时域可伸缩性,相比空域可伸缩性,更为重要,因为时域可伸缩性,在编码器对抗网络带宽动态变动、容错鲁棒性、以及编码效率和视频主观体验上,综合性能更优,并适于保持主观质量平稳下的动态调整。


如图下所示,Aurora AV1 编码器中目前实现了两种时域可伸缩性模式。两种模式中,基本层外的其他视频帧,可自适应丢弃,以适合动态网络带宽需求。AV1 的时域可伸缩性,继承了 WebRTC 平台中已有的 VP8、VP9 的编码器特征,与 WebRTC 间具备天然契合度。



AV1 RTC 摄像头拍摄内容编码


屏幕内容外,对于视频会议 Talking Head 场景,AV1 经由精细优化后,亦可凸显其标准优势。


如下面两图所示,在 480p、720p 视频会议场景中,Aurora AV1 对比 x264 medium 档,在 AMD Ryzen 9 3900X 12 核 (12C24T),2 线程编码,Auora superfast 可获取 BD-rate (PSNR)增益平均在 20%以上,与此同时编码速度优势在 30%以上。



注:x264 所用命令行为 --nal-hrd none --preset medium --profile main --threads 2 --tune zerolatency --no-psy --aq-mode 0 --no-scenecut


AV1 RTC 移动平台编码性能


AV1 标准工具的复杂度,使其在手机移动端的应用落地更加挑战。


与此同时,本文前面也提到,WebRTC/Chrome 已开放基于 libaom-RT 档的 AV1 RTC 支持,libaom-RT 开源编码器的性能也在不断提升中。


如下图,我们将 Aurora 与 libvpx-VP9、x264、以及 libaom-RT,针对 RTC 移动端应用场景,在编码效率及编码速度上做一比对:编码平台为 Snapdragon 845 手机,单线程 CBR 设置,选取 40 个 180p 典型实时场景视频,目标码率范围设定在 50kps ~ 200kbps。


图中每一条曲线,代表一款编码器性能,曲线上每一坐标点,则表示该编码器的某一特定速度档。纵轴表示 BD-rate (PSNR),所有编码器 preset,均以 x264 medium 档为基准(anchor),BD-rate 为负值表示相比 anchor,采用更低码率可获取同样视频质量。因此,曲线坐标点位置越靠下方,编码器的压缩性能优势越大;横轴标识编码速度,曲线坐标点越靠右方,对应编码速度越快。



图中显示,Aurora 在编码效率上,远优于 VP9、以及 x264。Aurora 仍在持续优化中,目前 superfast、ultrafast 档的设置,大概率会成为更低速度档的配置,并将提供从 medium、fast、faster、veryfast、superfast 到 ultrafast 适用于 RTC 场景的多个速度档。相比 WebRTC 中的 libaom-RT AV1,Aurora 在编码速度及编码效率综合性能上,明显超出。Aurora 提速同时,会尽力保持 AV1 充分的标准优势。(注:Aurora 及 libaom-RT,均为 2021 年 3 月 5 日的版本)


无论开源代码库 libaom-RT,还是商务编码器 Aurora,AV1 在手机移动平台上的优化迭代,必将延续其历史轨迹,在未来一段时间内,性能持续提升,满足越来越多 RTC 场景的需求,在已有编码标准方案基础上,进一步大幅提升用户体验。

AV1 与 AI 的结合


RTC 场景中,AV1 与 AI 结合,对于编码器各方面的性能优化,应该是有比较大的提升辅助作用的,包括前处理、内容分类、ROI 场景优化、以及智能码控设计与实现上,AV1 可利用 AI 技术,展示出进一步的潜力。微帧团队与国内、海外多家大学合作,撰写的题为“Advances In Video Compression System Using Deep Neural Network: A Review And Case Studies"已被 IEEE 顶级期刊《The Proceedings of the IEEE》接收,文中以 AV1 为基准,对于视频编码与 AI 在前处理、后处理上的结合,以及对将 AI 用于未来编码标准,比如 AV2,有一定初步的探寻。这篇论文可以从 arXiv.org 上直接下载(链接:https://arxiv.org/abs/2101.06341

AV1 主观编码性能


如图所示,利用 Aurora AV1 编码,在同样码率、即同等带宽条件下,AV1 编码画质明显优于 x264 的编码结果。




综合以上 AV1 的优质性能,以及其与 RTC 场景应用的天然契合度,我们预计 AV1 在 WebRTC、浏览器以及 Android 移动端等生态的推动下,随着 RTC 应用的爆发性增长,未来 2~3 年内会迎来生态的迅猛发展。

2021 年 3 月 07 日 09:321059

评论

发布
暂无评论
发现更多内容

面向页面的移动端架构设计

稻子

flutter ios android 前端架构 架构模式

回“疫”录(15):在家SOHO,是你想要的工作方式吗?

小天同学

疫情 回忆录 现实纪录 纪实 远程办公

21天养不成习惯,28天也不行。不要痴心妄想。

赵新龙

TGO鲲鹏会 习惯养成

全球经济动荡下,超流币逆袭而来!

极客编

编写制度的几点实用建议

石君

制度 编写制度 安全管理

终于有一款组件可以全面超越Apache POI

Geek_Willie

前后端分离 服务端 GrapeCity Documents

谈谈控制感(3):让孩子更好地成长

史方远

心理学 控制感 教育

高仿瑞幸小程序 08 创建第一个云函数

曾伟@喵先森

小程序 微信小程序 前端 移动

需求是被挖掘还是被创造出来的?

Neco.W

产品 互联网 需求

初探Electron,从入门到实践

Geek_Willie

前端 Electron SpreadJS

油管博主路透 3080Ti 参数、黄教主烤箱中拿出 DGX A100 预热发布会

神经星星

人工智能 互联网巨头 gpu 互联网 英伟达

Android10版本引发的生产故障及安全知识归纳

大刘

android https TLS 加解密

编程的门槛 - 抄作业的得与失

顿晓

编程门槛 编程思维 动手能力 抄作业

前浪的经验:区块链软件,一定也要去中心化

Michael Yuan

比特币 区块链 智能合约 以太坊 加密货币

Flink Weekly | 每周社区动态更新

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

如何快速更改qcow2镜像文件

奔跑的菜鸟

云计算

一杯茶的时间,上手 React 框架开发

图雀社区

Reac

什么是工作

史方远

随想 工作

由纪念日想到杨德昌

Elizen

随笔 电影

高效阅读,成就自我-《麦肯锡精英高效阅读法》读后感

顾强

读书笔记 读书 读书方式

《硅谷革命:成就苹果公司的疯狂往事》读后感

顾强

有了容器为什么kubernetes还需要Pod?

架构师修行之路

Kubernetes 分布式 云原生 pod

猿灯塔-Phaser 使用介绍

猿灯塔

故障的传播方式与隔离办法

Wales Kuo

全面解读信创行业 关注国产操作系统

统小信uos

操作系统

选择适合自己的 OLAP 引擎

程序员小陶

大数据 开源 OLAP

从波音747学项目管理

顾强

项目管理 读书感悟 沟通

游戏夜读 | 关卡设计为什么难?

game1night

线程通信知识点扫盲!

Simon郎

Java 后端 多线程

回顾经典,Netflix的推荐系统架构

王喆

人工智能 学习 推荐系统 netflix

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (六)测试哪些内容:Right-BICEP

编程道与术

Java 编程 软件测试 TDD 单元测试

Hummer 轻量级跨端技术框架详解及实战

Hummer 轻量级跨端技术框架详解及实战

AV1在RTC应用实践中的现状与展望-InfoQ