AV1的五种编码进展

Stella981
• 阅读 815

AV1的五种编码进展

AV1正在做着最后的定稿工作,可以预见的是,Netflix、Youtube都将是第一批AV1的使用者。视频PaaS服务商Bitmovin撰文对AV1的最新特性进行了解读,LiveVideoStack对文章进行了摘译。

文 / Christian Feldmann

译 / 蒋默邱泽

审校 / 包研

原文链接:https://bitmovin.com/cool-new-video-tools-five-encoding-advancements-coming-av1/

目前AV1已经进入了最后的发展阶段,并且正在接近完成其功能,现在是仔细研究视频流未来的最佳时机。随着苹果宣布他们决定在1月份加入开放媒体联盟,实际上所有主要技术领先厂商都已加入,AV1在不久的将来将成为一种普遍的标准。

是什么让AV1在技术上脱颖而出呢?在本文中我们将介绍AV1中包含的五个关键工具,这些工具已被采用以帮助减少高达30%的带宽需求同时仍保留或改进图像质量。

免费的解决方案,轻松满足不断增长的视频流质量和速度需求

或许AV1最重要的特征不仅仅是技术特征:它从一开始就设计得完全免费,努力提供真正开放的视频编解码器,能够以较低的码率提供高质量的视频流。随着高分辨率内容的不断增加以及VR和360°视频等技术的不断增加。对于大规模内容提供商能够满足他们技术先进的开放式编解码器的需求日益明显。这样愿望可能是我们看到最好的证明,实际上几乎所有主要的行业参与者和科技公司都是开放媒体联盟的成员,这是AV1背后的开发根基。

联盟已经着手希望最终能为互联网视频流提供开源标准,遵循像CSS或PNG等其他开放标准的路线,这些开放标准已经在形成我们日常的数字现实。Bitmovin一直是推动AV1成为未来几年标准的开拓实践者。

胶片颗粒合成

胶片颗粒通常发生在照相胶片中,最显着的是在过度放大的照片中,但也可以数字化地应用于艺术效果。 在数字视频压缩,胶片颗粒造成巨大的问题,因为它是很难辨认这样的机器和常量“噪音”在视频流产生大量的流量。 这导致高比特率的要求传递有效信息非常少。 由于信息对于感知质量的实际价值很小 - 毕竟人类的大脑往往会在某种程度上过滤掉视觉噪点 - 寻找一种理想办法是让不实际内容与流进行换个姿势重新传输的方式,重置它直到理想状态。

这个构想形成了AV1胶片颗粒合成的基础。目标是在编码之前对初始内容进行去噪,然后在解码过程中输出之前重新添加噪声或颗粒效果。这样,根本不必传输不必要的信息,并且可以大大减少数据的总体负载。

AV1的五种编码进展

举个例子来说,业界主要的提供商和创新推动者Netflix已经表示,除了努力为免版税开发社区做出贡献外,他们还希望成为AV1的早期采用者。Mozilla是另一个关键支持者,它为Firefox Nightly 提供了一个成功的AV1浏览器实现(由Bitmovin提供支持)。AV1几乎所有的大牌公司都已准备好让它成为一个视频世界的标准,它依赖于大分辨率的VR和AR视频应用程序。

现在,我们来仔细看看使AV1成为视频流中有趣选择的五种关键编码和解码技术。

约束方向增强滤波器

过滤在每个视频编解码器中都是一个重要的过程,因为它极大地提高了编码视频的感知质量。它主要发生在每个块的轮廓上,这些块用于在压缩过程中将每个图片分成更小的子单元。AV1包含各种滤波器组,其中大部分滤波器均来自现有的编解码器。约束方向增强滤波器(CDEF)很可能是对滤波器范围影响最大的一个。该滤波器基本上合并了两个现有滤波器:Daala视频编解码器中使用的定向去振铃滤波器和Thor视频编解码器中的约束低通滤波器(CLPF)。CLPF用于滤除由量化误差引起的并且尚未通过先前应用的去块滤波器进行校正的伪像。定向去振铃滤波器通过识别每个块内的边缘并识别其方向来工作。然后有条件地沿着这些边缘应用一个定向低通滤波器,从而产生更平滑的图像和感知质量的增加。

AV1的五种编码进展

图2: CDEF中的方向搜索:Steinar Midtskogen和Jean-Marc Valin:AV1约束方向增强滤波器(CDEF)。

CDEF合并这两个过滤器并通过分析每个块的内容,平滑沿着边缘的伪影并解除图片的封锁来工作。在实际视频已经被编码之后,在解码器的末端应用搜索滤波参数(方向和方差)。滤波处理也由编码器执行以便获得正确的参考帧。由于过滤操作可以在消费者的硬件上运行,因此可以减少所需的网络带宽并减少流量负载。

扭曲运动和全局运动补偿

预测和补偿运动是视频压缩的一个重要原则,因为它允许减少冗余信息,否则这些信息就会成为内容流的一部分,从而增加传输量。因此运动补偿通过识别和预测帧和块内的移动预判模式,并相应地减少编码过程的相关信息到所需的最小值。

扭曲运动补偿是一项特别有趣的黑科技,它可以预测三维空间中的运动模式,预测视频中的空间运动轨迹。根据计算的预测,在编码过程中会发现和忽略冗余信息,从而显著减少所需的数据负载。

全局运动补偿预测整个框架的运动(例如,摄像机运动,缩放序列等),并使用这些分析来限制在比特流中传输的信息量。基本上信息被压缩成例如“正确移动所有块”或“平移块”这样的数据来节省流量。

运动补偿算法在一段时间内被使用和理论化,只是在二维层面上。AV1标志着非平面运动补偿首次被实现为视频编解码器。由于消费者设备的处理能力不断提升,这种技术现在已经可以在大众市场应用中普遍看到了。

这些技术对于预测大面积的运动,如背景运动或相机运动效果非常好。此外他们还能非常有效地处理一致的背景和配色方案,这也是为什么动画视频往往会带来很棒的编码结果,即使是高度压缩的情况也如此。

增加编码单元大小(高达128x128)

随着视频分辨率不断提升,块大小的增加是缩放压缩过程中以及高分辨率内容的有效方式。每一帧被分成单独的编码单元(或块),然后在编码过程中独立处理。因此像1280×720(720p)这样的小分辨率可以很容易地分成单个尺寸为64×64的块,而相同的块尺寸对于7680×4320(8k UHD)这类大分辨率来说就不怎么好使了。

AV1的五种编码进展

图3:常见视频分辨率的相对大小(现在和过去)

随着4 K和8 K视频内容的普及,向更大的编码单元的转移是实现高质量压缩的必经之路。更大的单位意味着每个帧的块数更细小,这是一种对大分辨率视频编码有利的因素,因为它允许更高级的压缩,同时保持较高的感知质量。这样做是为了减少大分辨率的编码延迟,以及降低每个块的信号传输码率。增加的块大小还可以使用更大的预测和转换单元,这样再次有利于处理大分辨率内容。

非二进制计算编码

这一技术标志着与HEVC或AVC等其他当前编解码器的有趣变化。对于那些输入计算编码引擎的每个符号必须是二进制的。不过对AV1这些符号也可以是非二进制的,也就是说它们可以有最多8个可能的值,而不仅仅是两个。然后由计算编码引擎处理这些符号,它会产生一个二进制位流作为输出。两端编码器和解码器会使用概率计算来估计一个给定符号将会产生多少输出位。从理论上讲,任何给定的输入符号都可能产生多个位,甚至只是一小部分。

AV1的五种编码进展

图4:二进制和非二进制编码方案

虽然非二进制编码通过将多个值组合成单个符号来使得编码过程更复杂,但它仍然比每个符号只有一位稍微复杂一点。一个主要的好处是使用这个过程可以处理更多的时钟周期。由于时钟周期必须串行执行,非二进制编码允许通过在每个串行周期中处理多个符号来实现改进。

AV1的领先在何处?

随着开发的最后阶段逐渐临近,我们认为AV1在不久的将来对视频流的世界产生巨大影响,这并不太遥远。用户对高质量视频流的需求已经不仅仅是有形这么简单,下一代高分辨率的移动设备和支持VR的终端将会进入全球市场。看到新技术的出现并为我们的日常生活铺平道路,这是一个令人神往的过程。AV1可能会成为未来构建我们的虚拟视频的一个主要因素。

参考资料

  1. https://bitmovin.com/apple-joins-av1-codec-consortium/

  2. http://aomedia.org/about-us/

  3. https://hacks.mozilla.org/2017/11/dash-playback-of-av1-video/

  4. https://youtu.be/thvSyJN1vsA?t=5452

  5. https://tools.ietf.org/id/draft-midtskogen-netvc-cdef-00.html

  6. https://arxiv.org/abs/1602.05975

展望2018:多媒体开发新趋势

2018年初的音视频技术生态并不平静,Codec的争夺进入群雄逐鹿的时代,AV1和国产的AVS2对HEVC发起了挑战;WebRTC 1.0版定稿打通了在浏览器、移动端乃至IoT上的多媒体通信;AI、区块链技术的发展,正在与多媒体开发发生在化学反应,将成为推动生态发展的新力量。

LiveVideoStack今年将打造“多媒体开发新趋势”系列沙龙,展现新技术在音视频领域的探索与实践,以及新兴应用场景和传统行业的最新、最佳实践。系列沙龙第一站将走进北京,我们为您准备了:

  • 《人工智能增强的实时视频超分辨率》 鲍金龙 资深多媒体开发工程师

  • 《全景直播在监控领域的应用探索》 侯金亭 理光软件研究院战略与执行部副总监

  • 《音频codec的技术演进》 黄传增 今日头条互动娱乐部门多媒体音频技术负责人

  • 《实时音视频技术赋能传统行业》 崔文秀 北京三体云联科技有限公司产品副总裁

  • 《从音频重放链路看技术发展趋势》 王富裕 北京小米电子声学总监

  • 神秘嘉宾

关注LiveVideoStack公众号,回复【北京】将获得限量5折优惠码,先用先得。点击【阅读原文】获取更多沙龙信息。

AV1的五种编码进展

本文分享自微信公众号 - 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中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写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 )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
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
Stella981 Stella981
3年前
HEVC和AV1幕后视频编解码器之战
!(https://oscimg.oschina.net/oscnet/4c67bcb396c74b35a3a13b31cf58892b.jpg)在未来几天的NAB大会上,AOM联盟将展示AV1的性能,多媒体行业全部聚焦于HEVC与AV1比较上。这是AV1于3月底完成1.0版定稿(https://www.oschina.net
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这