AV1:为互联网提供开放、免费的视频编解码工具

Stella981
• 阅读 1100

AV1:为互联网提供开放、免费的视频编解码工具

从学术研究到进入工业界,Zoe Liu一直在算法和音视频领域,目前在谷歌编解码团队为编解码器AV1做开发支持。Zoe畅谈了评定编解码器的标准,以及AV1的最新进度。本文是『下一代编码器』系列采访之一,欢迎自荐或推荐技术人加入『下一代编码器』系列采访,请邮件editors@livevideostack.com

文 / Ant

LiveVideoStack:请简要介绍下自己,以及目前主要的工作方向,对哪些技术或领域感兴趣?10多年来一直做多媒体相关的研发,是巧合吗,还是兴趣使然?

Zoe Liu:我目前在谷歌(Google)做软件工程师,主要从事视频编码与视频通信算法设计与实现。曾在美国贝尔实验室(Bell Labs), 诺基亚研究中心(Nokia Research Center), 以及惠普实验室(HP Labs)等处从事理论算法研究,后转入工业届,参与了如下视频通话产品的设计与推出:苹果(Apple)的FaceTime,谈客 (TangoMe)Video Calls,以及 谷歌眼镜(Google Glass)专属Hangouts Video Calls。目前在谷歌从事下一代开源免版权费(Open Source, Royalty Free)的AV1视频编码的标准制作。从学校到现在一直从事视屏编码跟视频通信方面的工作,有机缘巧合,也有兴趣使然。

LiveVideoStack:什么样的编解码器是一个好的编解码器?视频质量、码率、算法复杂度、对数据丢失或错误的鲁棒性等。

Zoe Liu:视频编解码发展的根本还是在于视频压缩效率的不断提高,也就是在一定视频质量下追求最低可能的码率,亦或在一定视频码率下追求最佳视频质量。视频质量的评测,传统上还是使用峰值信噪比,尽管这一指标在很多情形下与人眼主观的评测结果不能够一致的吻合。视频质量评测本身就是一个非常活跃的研究领域。

视频产品不同的应用场景,决定了视频编解码器的评估策略也不尽相同。在视频广播,视频直播等领域,解码器的解码效率和性能是关键环节之一。在视频通话,视频会议等应用场景,编码器的效率跟性能同样关键。目前视频码流都有关键帧的周期性嵌入。关键帧均采用帧内预测,其编解码是与其他帧独立,因此可以用于同步帧,有效的恢复纠错,但通常也会消耗大量的码率。除关键帧的采用之外,另一比较有效的容错策略是利用数据链路层的ACK/NACK结合视频编码的长距离参考帧,一旦网络出现错误(由于网络拥塞造成的包丢失),可利用确认成功传送的参考帧做帧间预测产生同步帧,编码效率会显著提升。但ACK/NACK的发送与接收取决于网络的往返延迟时间等状态参数。其他容错传输,比如向前纠错编码(FEC),在网络丢包概率小于一定限度的情形下十分有效,丢包严重时纠错性能则大大下降。编解码器的编码效率与其容错能力通常是相互矛盾的。编码效率的算法大多得益于多种预测与基于上下文(context-based)的编码工具的采用,而这些工具对于网络错误非常敏感。所以任何一款编解码器的研制,都会以牺牲一定的编码效率来增强其容错能力。

LiveVideoStack:你在LiveVideoStackCon上的分享AOM联盟以及AV1编解码器,能否在这里review一下?

Zoe Liu:首先介绍了我们在谷歌的视频编码团队。我们团队隶属于Chrome Media部门。Chrome Media的工作使命在于为互联网上的多媒体应用提供开放和免费的多媒体压缩技术。视频方面,我们的产品主要有VP8,VP9,以及AV1,其中AV1是目前和开放媒体联盟(AOM)的合作伙伴共同开发的。除视频之外,我们的产品还包括静态图像压缩标准WebP,音频编码器Opus,以及专门为3D图形数据研发的Draco编码软件。

多样化的视频应用在近几年呈现井喷的趋势,目前视频应用提供者的背景也是千差万别,在考虑压缩软件时,对成本和需求的考量也变得多样化了,这就是为什么压缩行业在单一的国际标准之外也需要产品的多元化,让用户来作出适合自己的选择。

谷歌一直以来都在坚持一个理念:所有奠基互联网应用的技术,应该是开放的、免费的,比如Chrome浏览器,Android系统就是这一理念下的实例。先进的开源、免费视频编解码技术,可以带来视频相关领域最大可能的发展,尤其为小型内容所有者以及相应企业在互联网激烈的竞争年代,提供更多平等的机会,与运营的大型公司平等抗衡,从而促进更加丰富、多样化的互联网络市场的发展。

2013年,VP9的诞生,在压缩效率上达到与H264相比节约50%的码率性能,除了基本的8比特、420格式外,同时支持更高像素精度和多种颜色空间采样格式。到现在为止,数十亿的终端设备支持VP9;Chrome,火狐,Edge,以及Opera等浏览器均支持VP9;在手机上,4.4或更高版本的安卓系统也支持VP9。在电视、游戏机、数字电视棒等家庭娱乐设备上VP9也有非常广泛的支持。

VP9最初的客户是谷歌的视频分享网站YouTube。从2013年到现在,除了大幅降低带宽成本外,VP9给YouTube的业务创造了更多的机会。在投入使用的第一年,基于VP9压缩的视频在YouTube上播放时长即达到25亿小时。目前YouTube上VP9视频用户,日均观看达到20多亿次。采用VP9压缩,使得播放起始延迟时间(首屏耗时)大大降低(平均降低15%),与此同时,缓冲效率大大提高。在成熟的在线视频消费市场,VP9使得YouTube市场占有率提高了25%,在尚未成熟的市场则提高了100%。特别是在受制于带宽限制、尚未成熟的市场中,YouTube高清视频在VP9成为主导编解码后,播放数量提升高达25%。

2015年,谷歌推进了开放媒体联盟(AOM)的创立,致力于开发开源、免费版权的新一代媒体格式,以及相应的编解码技术。目前,AOM董事会成员已经涵盖了Adobe,Amazon,AMD,Broadcom,Cisco,Facebook,Google,Hulu,IBM,Intel,Microsoft,Mozilla,nVIDIA,Netflix,nVidia等33家以上的技术巨头。

LiveVideoStack:对于应届生或从其他研发领域转行学习编解码、多媒体开发的技术人,有哪些建议?能否推荐一些系统学习编解码、多媒体开发的图书、资料?

Zoe Liu:目前流行编解码技术的基本框架是帧间运动矢量预测+二维变换+熵编码。当然人工智能的发展会不可避免的更新或者颠覆这一框架。了解编解码技术,国内在微博、微信以及知乎平台上都有很好的总结性文章,深入浅出,比阅读书籍会上手快许多。如果需要进一步了解编解码的各个模块与技术细节,最好具备图像处理、信号处理、信息理论的一些基本知识。建议可以阅读IEEE期刊上的一些关于H264/HEVC/VP9的总结性论文。目前视频编码开源代码很多,可以下载试运行,从而对编解码有更加直观的概念。

关于受访者

谷歌(Google)软件工程师,主要致力于视频编码与视频通信的算法设计与实现。曾在美国贝尔实验室(Bell Labs), 诺基亚研究中心(Nokia Research Center), 以及惠普实验室(HP Labs)等处从事理论算法研究,后转入工业届,尤其参与了如下视频通话产品的设计与推出:苹果(Apple)的FaceTime,谈客 (TangoMe)Video Calls,以及 谷歌眼镜(Google Glass)专属Hangouts Video Calls。目前在谷歌从事下一代开源无版权费(Open Source, Royalty Free)的AV1视频编码的标准制作。

AV1:为互联网提供开放、免费的视频编解码工具

Zoe Liu 谷歌(Google)软件工程师

本文是『下一代编码器』系列采访的第五篇,该系列采访将围绕视频编解码器领域的工业界与学术界的工程师,探讨编解码器的演进与应用。欢迎自荐或推荐技术人加入『下一代编码器』系列采访,请邮editors@livevideostack.com

LiveVideoStack招募社区编辑

LiveVideoStack是专注在音视频、多媒体开发的技术社区,通过传播最新技术探索与应用实践,帮助技术人员成长,解决企业应用场景中的技术难题。如果你有意为音视频、多媒体开发领域发展做出贡献,欢迎成为LiveVideoStack社区编辑的一员。你可以翻译、投稿、采访、提供内容线索等。

通过contribute@livevideostack.com联系,或在LiveVideoStack公众号回复『社区编辑』了解详情。

本文分享自微信公众号 - LiveVideoStack(livevideostack)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
HTTP面试题(二):HTTP请求报文和响应报文格式
!(https://oscimg.oschina.net/oscnet/0406894fb1274bee91fc53c84c516576.jpg)看都看了还不点个赞!(https://oscimg.oschina.net/oscnet/095d444dc9a449ee85afd19b00fdf52b.png)!(h
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这