0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍AV1编码器的优化以及其在流媒体和实时通讯中的应用

LiveVideoStack 来源:LiveVideoStack 2023-02-06 16:58 次阅读

01 Introduction:libaom AV1

d8919964-a445-11ed-bfe3-dac502259ad0.jpg

我们先简单看一下AV1。AV1是由AOMedia(开放多媒体联盟)开发的,就是由多家公司联合起来开发一种开源且没有版税的视频编码格式,AV1就是其第一代编码格式。

AV1于2018年完成,在那个时候,AV1的编码器复杂程度是非常高的。

但是AV1与它的前身VP9相比,如果在同样的视频质量条件下,它能够提供超过30%的bitrate的节省,所以它的压缩率还是非常高。

Libaom AV1是AV1的参考代码,我把它的link放在了上图,大家有兴趣可以测试一下。

d8a3b414-a445-11ed-bfe3-dac502259ad0.jpg

AV1增加了很多功能强大的压缩工具,复杂性非常高,所以我们的目标就是优化AV1的编码器,使得它能够真正用在产品线上。

优化工作着重于以下两个应用方面:

第一个是VOD的encoding。像YouTube这种编码器一般都是离线进行,所以它对编码器的速度要求没有那么高,但是它对压缩率的要求非常高;

第二种就是实时通讯的编码。大家都知道实时通讯中要求非常快的实时编码器,而AV1的优势就在于它能够允许在非常低的字节率的情况下进行视频通讯,比如说Google的Duo是一个手机上面的视频应用程序,它可以在20-30kbps这么低的字节率情况下实现手机上的视频通讯。

这对一些新兴市场的用户来说是非常有用的,Duo在2020年就已经开始使用了。现在,我们下一个目标是Google的Chrome。WebRTC也是开源的,有兴趣大家可以看一看。

02VOD encoding

第二部分我们介绍VOD的编码。

d8b4a65c-a445-11ed-bfe3-dac502259ad0.jpg

这是一个简单的AV1编码器概述,第一个是预处理阶段,其主要目的是rate control,就是怎么选择frame或者block的quantizer;第二个阶段是真正的编码阶段。

主要任务就是决定每一个block要选择用什么样的partition,mode,以及transform 等等;之后会对frame进行滤波,AV1支持三种In-loop的滤波器;最后一个阶段要把Bitstream打包写到一个文件中。

编码器的整个过程中,绝大多数的时间花在了编码阶段。下面,我们就主要讲一下这个阶段的技术优化。

d8c3382a-a445-11ed-bfe3-dac502259ad0.jpg

首先是Partition搜索。在AV1中,最大的块尺寸是128x128,最小块的尺寸可以到4x4。对每一个尺寸的块,可以选择10种partition的类型,例如:None,Split,Rectangular,及AB partition 类型。

所以说搜索空间是非常巨大的。我们主要用的方法是机器学习,就是建立ML模型,对每一种partition的尺寸和类型,我们可以决定是否要去评估它,还是可以略过它。

这样就大大减少了搜索空间,达到非常好的优化结果。

d8d34df0-a445-11ed-bfe3-dac502259ad0.jpg

下一步就是我们提到的mode,即prediction mode的决策。在AV1中,一个block的prediction mode选择有超过150种。

理论上,评估一个mode的好坏要基于它的RD成本,成本越低则越好。mode决策,我们采用一个多级的方法。

在初始快速评估级,因为RD成本计算非常慢,我们就不去精确计算RD成本,而是用一个近似模型来估计出RD成本。

虽然RD成本的精度不高,也能够快速排除一些非常不适合的mode。第二级评估中,我们进行RD成本的简化计算,进一步排除很大一部分不适合的mode。

所以,只有几个候选mode留下来。在最后一级,我们仔细评估每一个候选mode,最后通过它们的RD成本找出最好的mode。

d8e637da-a445-11ed-bfe3-dac502259ad0.jpg

AV1支持多种变换类型。我们在优化中间采用了机器学习的模型。基本思路是分析prediction之后的residue信号,通过分析找到有用的feature。如果这些feature跟最后变换的类型相关的话,就可以利用它们估计哪一种变换类型是比较适合的。通过这样做优化,达到一个加速的结果。

d8f65c8c-a445-11ed-bfe3-dac502259ad0.jpg

我们简单看一下AV1跟VP9的性能比较。对产品线上的应用,我们推荐AV1用speed2 到speed6。对VP9,我们推荐用speed1到speed4。这些编码速度足够快,而且提供很好的速度与压缩率之间的平衡。上表中给出了AV1的speed2跟VP9的speed1的比较。我们用不同分辨率的一些视频来做测试,采用了四种指标,即:AVG PSNR,Overall PSNR,SSIM还有VMAF。可以看到AV1的speed2相比较于VP9的speed1,平均可以给到超过30%的BD-rate的节省,在所有四种指标上都有这样的表现。

d906fb6e-a445-11ed-bfe3-dac502259ad0.jpg

在上图中,我们把编码器的速度也考虑进来,这里给出的数据都是单线程的结果。竖轴是BD-rate节省的百分数,是由前面提到的四种指标平均得到的。而横轴是相对的编码器时间。可以看到,上面这条曲线是VP9的speed1到speed4,下面的曲线是AV1的speed2到speed6。AV1 speed2的BD-rate的节省超过30%,但它的编码时间差不多是VP9 speed1的六倍多,比较慢。再来看AV1的speed 5,它跟VP9的speed2的编码时间基本上是一样的,而且比VP9 speed2提供22%的更多的BD-rate节省。从这点上也可以看到,相比于VP9来说,AV1潜力更大,它能够带来的BD-rate的节省更多。

d9185ae4-a445-11ed-bfe3-dac502259ad0.jpg

在编码器中,为了能够更好地加速,多线程的支持也是必不可少的。现在AV1编码器中,我们有三级多线程的实现。首先,最直接的,是基于tile的多线程。在AV1中,tile都可以独立的编码和解码。每一个tile中间,我们还有基于行的多线程。行之间的编码不是独立的。比如说,下面一行中的块要开始的话,它上面一行右边的块应该先完成,所以有依赖性存在,在实现中要正确处理。上图给出了一个简单的多线程例子,这幅图里一共有两个tile,每一个tile有四行。我们会建一个job queue,把所有job放进来依次处理。“Tile+行”的多线程性能比单纯只基于tile的多线程要好很多。

d926fdb0-a445-11ed-bfe3-dac502259ad0.jpg

最近我们完成了frame并行处理 (FPMT)多线程。如果在“tile+行”的多线程之外,还有更多的线程可以用的时候,你可以再打开FPMT,这样可以达到更好的效果。要使用FPMT,用户要在编码命令设置中打开它,即:“--fp-mt=1”。这样,如果你设置的可使用线程足够多的话,它就会启动。

大家可能知道,在AV1编码中,一个编码单元是一组frame(即:GOP)。FPMT实现是基于AV1 GOP结构。

比如,AV1里比较常用的就是16个frame一组的GOP或者32个frame一组的GOP。这里我给了一个GOP=16的例子,我们来看表中最下面的一行,从frame 0开始,0是Key frame,下一幅是frame 16,叫做Alt-ref frame,然后再到frame 8、frame 4。

接下来,我们稍微改变了一下编码的顺序。本来frame 2下来是frame 1,frame 3,然后,frame 6,frame 5,frame 7。现在为了能够并行处理这些frame,我们把frame顺序改成2,6然后再做1、3、5、7。因为1、3、5、7都是leaf frame,可以被设置为non-reference frame,即:这些frame不会被用来作为别的frame的参考frame,所以对它们的编码质量要求不高。

这样的话,这四个frame可以并行处理,然后下一层的2和6也可以拿来并行处理。这样的顺序调整允许更多frame的并行处理,达到的效果会更好。

d94746ec-a445-11ed-bfe3-dac502259ad0.jpg

这里我们给出一个应用实例,来显示编码器多线程的scaling ratio。这是一个1080p和4K的视频测试结果,我们用的tile是8个(2 rows x 4 columns)。对于4K视频,可以看到,如果线程数足够多,比如说16或者24的时候,多线程的速度是单线程速度的10倍,达到了很好的加速效果。

如果没有FPMT的话,在线程到达一定数量的时候,scaling ratio就饱和了。有了FPMT,在有更多线程可以利用的时候,scaling ratio还可以提高。这就进一步提高了多线程编码器的性能。

03RTC encoding

d958955a-a445-11ed-bfe3-dac502259ad0.jpg

下面我们看一下实时通讯中的AV1编码。就像我们开头讲的,在实时通讯的应用中,为了保证正常的视频通话,编码器的速度一定要非常快而且不能有延迟。所以,实时编码不可能像VOD情况下可以用两个甚至三个pass的编码来达到好的压缩效率,在这种时候,只能用一个pass的编码,不能用任何lookahead frame,所以,基本上来一个frame就得立刻去处理它。

现在AV1的实时编码器的速度范围是speed5 到10。Speed 5和6共用了一些VOD代码,压缩率高,但也复杂一点。Speed 7-10是专用的实时代码,所以会更快一些。

在多线程的支持上,主要是基于tile和基于行的多线程。因为不允许延迟,所以frame的并行在这里不实用。还有,AV1 RTC编码器中支持scalable video coding(SVC),主要是spatial layers和temporal layers。 Rate control方面的话,对于RTC来讲,因为没有太多关于视频frame的信息,所以多用constant bitrate(CBR),而且在AV1 RTC编码器中还会支持一些adaptive quantization mode,比如:Background cyclic refreshing。

因为在视频通话中,为了保证通话的平稳,单一frame编码后的bitstream size不应该比平均frame bitstream size大太多。所以,这种情况下,我们采用了一个周期性的refreshing。比如,在每一个frame中选定某一个百分比的一些块,而且这些块会是后续的frame的参考。

这样,我们就可以增加这些块的bits,提高压缩性能,但不会增大单一frame的bitstream size。这也是实时通讯编码器与VOD编码器设计上的不同。

d9704718-a445-11ed-bfe3-dac502259ad0.jpg

这里给出AV1和VP9实时通讯编码器的速度和BD-rate节省的一个比较。因为Google Meet 使用了VP9 speed7,所以我们这里用VP9 speed7作为baseline。可以看到,AV1的speed6能够提供37%的BD-rate节省,但是相应的话,它的编码器的时间会到五倍多,比较慢。

AV1 speed9和10已经跟VP9编码器的时间类似,而且还可以提供13%到16%的BD-rate节省,所以从这里也能够看出AV1的潜力还是更大一些。

d98aa5e0-a445-11ed-bfe3-dac502259ad0.jpg

下面就是一个简短的总结。经过这几年的优化,Libaom的AV1给VOD的应用提供了一个非常优秀的解决方案,希望我们的工作能够促进AV1的广泛应用,满足用户的所有需求。AV1 RTC编码器优化还在持续地进行中,如果你对libaom AV1代码熟悉的话,应该会看到最近编码器性能有很大的提高。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3365

    浏览量

    131580
  • VOD
    VOD
    +关注

    关注

    0

    文章

    15

    浏览量

    13372
  • 机器学习
    +关注

    关注

    66

    文章

    8136

    浏览量

    130583
  • WebRTC
    +关注

    关注

    0

    文章

    55

    浏览量

    11139

原文标题:AV1编码器的优化及其在流媒体和实时通讯中的应用

文章出处:【微信号:livevideostack,微信公众号:LiveVideoStack】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    流媒体高清视频编码技术应用于视频直播和网络电视台

    目前MPEG-4和MPEG-2编码方案根本无法比拟的。  H.264能够2Mbps传输速率提供720P质量的视频内容,节约宝贵的传输带宽,使用6tap过滤实现1/2像素明亮度取样、运动补偿精确到1.4
    发表于 08-10 14:32

    什么是视频编码流媒体及音频编码标准是什么?

    什么是视频编码流媒体的标准是什么?音频编码标准是什么?
    发表于 04-08 06:48

    什么是流媒体服务

    服务就是MPEG4等压缩格式,会遵循一定的技术指示然后进行压缩编码,从而可以进行数据传输和存储。  它们主要的区别在于:  流媒体它是边传边揪的一种格式,互联网
    发表于 06-30 09:28

    怎样去编译一个完整的流媒体服务系统呢

    流媒体技术安防监控、网络电视、视频会议等应用领域都起着重要的作用,为人们的工作生活带来了便利。嵌入式流媒体服务不同于传统的基于 PC 架构的流媒
    发表于 12-14 08:18

    NGcodec谈FPGA编码在HEVC和AV1上现状与未来

    大会上,资深多媒体技术咨询师Jan Ozer对Ngcodec的CEO Oliver Gunasekara进行了访谈,谈及了硬件编码在HEVC、VP9及AV1上的现状与未来。LiveVideoStack对文章进行了摘译。
    发表于 06-22 15:01 1987次阅读

    快讯:Libaom 2.0.0发布 对AV1的质量和速度进行了重大改进

    开发人员认为AOMedia AV1 2.0版本现已成为真正意义上的“第一个正式版本”。Libaom 2.0为该开源AV1参考编码器添加了实时编码
    的头像 发表于 06-15 13:58 5741次阅读

    谷歌正向智能电视制造商推广 AV1视频编码格式

    AV1 作为一种全新的高效视频编码格式,目前已经得到了许多最新显卡的支持。这种格式最大的特点是编解码器免费开源,有望接替 VP9 以及 H.264,成为下一代被广泛使用的视频编码格式。
    的头像 发表于 01-18 10:49 1836次阅读

    谷歌 YouTube 和 Netflix 未来将支持 AV1 硬件解码

    1月31日消息 外媒 9to5 Google 报道,随着流媒体的普及,AV1 编解码器作为一种节省带宽和提高质量的方式出现了。根据 Synaptics 人士方面消息,YouTube
    的头像 发表于 02-01 09:49 2101次阅读

    有关AV1编码器优化技术

    首先是GOP优化,GOP代表图片组(group of picture)。我们要编码的视频序列有很多帧,编码器会将这些帧分组为GOP。然后,编码器将顺序对每个GOP进行
    的头像 发表于 02-23 17:14 1932次阅读
    有关<b class='flag-5'>AV1</b>的<b class='flag-5'>编码器</b><b class='flag-5'>优化</b>技术

    剖析AV1硬件的采用及未来发展

    Baliga,他将从什么是AV1AV1硬件的采用、AV1的开发以及商业测试、软件解码,以及其AV1
    的头像 发表于 05-13 10:21 2337次阅读

    探究学术界AV1编码优化技术的进展

    优化技术的进展。 各位专家以及屏幕前的各位观众大家好!我是朱辰,目前是上海交通大学图像所的在读博士生。本次分享的主题是学术界AV1编码优化
    的头像 发表于 05-24 16:36 2327次阅读
    探究学术界<b class='flag-5'>AV1</b><b class='flag-5'>编码</b><b class='flag-5'>优化</b>技术的进展

    FFmpeg获得NVENC AV1编码支持

    代码提交者 Timo Rothenpieler 表示,利用最新的 NVIDIA GeForce RTX 40 系列 GPU 上的 NVENC AV1 硬件编码器,在他的测试中,新的 NVENC
    的头像 发表于 11-09 15:43 715次阅读

    硬解之后,NVIDIA Ada架构GPU新增AV1编码

    AV1 是新的黄金标准视频格式,与旧的 H.264 和 H.265 格式相比具有更高的效率和质量。它是开放媒体联盟标准化的最新免版税高效视频编码器
    的头像 发表于 05-12 10:20 906次阅读
    硬解之后,NVIDIA Ada架构GPU新增<b class='flag-5'>AV1</b><b class='flag-5'>编码</b>

    高清视频编码器流媒体平台的完美结合

    随着数字化时代的快速推进,高清视频已经成为我们日常生活中不可或缺的一部分。在这一背景下,高清视频编码器流媒体平台的结合变得尤为重要。两者之间的完美结合不仅为用户提供了高质量的视频体验,还推动了视频
    的头像 发表于 02-20 15:14 165次阅读
    高清视频<b class='flag-5'>编码器</b>与<b class='flag-5'>流媒体</b>平台的完美结合

    谷歌计划在Android系统升级中采用libdav1d替换libgav1,提高AV1视频性能

    然而,尽管众多流媒体公司提供AV1内容却仍用其他编码器形式传输至终端设备,因为许多设备尚未配置硬件解码AV1视频的芯片,仅靠软件解码器难以满足需求。软件解码器运行在CPU上,耗电高,影
    的头像 发表于 02-28 11:02 495次阅读