AOMedia
开放媒体联盟(AOMedia)是一个由多家科技公司组成的联盟,旨在开发开放、免版税的视频编码格式。
-
成立背景:AOMedia成立于2015年,由亚马逊、思科、谷歌、英特尔、微软、奈飞(Netflix)、Mozilla等公司共同成立。联盟的目标是创建一种开放、免版税的视频编码格式。
-
AV1编码格式:AOMedia推出了名为AOMedia Video 1(AV1)的免版税视频编码格式。AV1结合了多家公司的技术,包括思科的Thor和Mozilla支持的Daala视频编解码格式,旨在提供比现有标准如H.264和H.265更高的压缩效率,同时保持解码的复杂性和硬件的实际可行性。
-
成员义务:AOMedia对成员提出了两项主要义务:一是对联盟开发的每一项技术承诺免版税的专利许可;二是缴纳会员费,用于聘请负责专利评估的律师,审查加入联盟的成员的专利。
-
法律保护:AOMedia还成立了法律辩护基金,用于在发生争议时,帮助规模较小的成员或AV1的被许可人进行辩护。
-
成员增长:自成立以来,AOMedia的成员数量不断增长,包括华为、腾讯等中国公司在内的50多家企业成为联盟成员。
-
腾讯的角色:腾讯在2019年以董事会成员身份加入AOMedia,成为董事会成员中迄今为止唯一的一家中国企业。
-
技术发展:AOMedia不仅关注视频编码,还推出了针对数字图像的开源编解码格式AV1F(AV1 Image File Format),并正在研发下一代视频编解码格式AV2。
-
专利争议:AOMedia的免版税模式受到了一些专利许可公司的质疑,例如Sisvel公司推出了包含AV1、VP9格式的视频编解码专利池,并质疑AOMedia的开源、免版税模式。
-
未来发展:AOMedia的成立和发展,代表了一种对抗传统专利池收费模式的力量,旨在推动更开放、更经济的视频编码技术的发展。
- 官网地址:http://aomedia.org/
- 关于开放媒体联盟(AOMedia)的开源代码git地址:https://github.com/AOMediaCodec。
AV1
介绍
-
AOMedia Video 1(简称AV1)是一个开放、免专利的影片编码格式,为网络流传输而设计。它由开放媒体联盟(AOMedia)开发,目标是取代其前身VP9,该联盟由半导体企业、视频点播供应商和网页浏览器开发商于2015年成立。2018年,Facebook进行接近真实使用环境条件测试,测试结果显示AV1资料压缩率与x264 main profile、x264 high profile和libvpx-vp9相较之下,分别提升50.3%、46.2%和34.0%。
-
AV1在授权上与VP9类似,可以免版税使用,不会像按销售量计授权费的H.264/AVC和HEVC一样对开源软件的采用造成障碍。
-
目前主流视频编码标准专利问题:
-
AV1是一种使用传统的基于区块编码但也加入了新技术的频率变换格式,AV1所使用的编码技术主要来源于谷歌VP9的下一代视频压缩格式VP10,但同时也包含了由Xiph.Org基金会的主要赞助者Mozilla开发的Daala视频压缩格式和由Cisco开发的Thor视频压缩格式中所使用的视频编码技术。
-
开放媒体联盟根据FreeBSD 2许可证发布了一个用C语言和汇编语言编写的编解码器参考实例libaom。该参考实例的开发接受开放媒体联盟成员资助并且公开进行。Libaom是AV1的参考实现,它包含一个编码器(aomenc)和一个解码器(aomdec)。它特性与标准实现最全,但是编码速度非常缓慢。后续开发中Libaom的性能得到了显著优化。
-
除了官方的AOMedia编解码器,还有由英特尔和Netflix合作推出的SVT-AV1开源编解码器,它利用了现代多核CPU的并行处理能力,适用于各种应用场景,如视频点播到实时直播的编码和转码等。
-
此外还有另一个开源编码器rav1e,rav1e是一个用Rust和汇编语言编写的编码器;rav1e编码器以牺牲编码效率为代价,成为最简单、最快符合AV1标准的视频编码器。
-
dav1d是一个用C99和汇编语言编写的解码器,注重速度和可移植性。
-
libgav1是用C++11编写的解码器,由Google发布。
- 符合AV1编码标准的官网参考代码aom编解码器git下载:
git clone https://aomedia.googlesource.com/aom
- aom的技术文档:https://github.com/AOMediaCodec/community/wiki
- aom分析器:https://github.com/xiph/aomanalyzer
技术特点
- 关于AV1编码标准介绍的技术文档可以参考:A Progress Report: The Alliance for Open Media and the AV1 Codec。
- 分区:
- 帧的内容被划分(Partitioning)为相间、相邻且大小相同的区块,称为超区块。相似于宏区块的概念,超区块呈现方形,大小可为128×128或64×64像素。超区块可以根据不同的分区模式划分为更小的区块。四方分割模式(four-waysplit pattern)是唯一可以递归将分区细分的模式。这允许将超区块从宏块划分为小至4×4像素的分区。
- AV1引入了“T形”的编码单元划分方案,这取自VP10 T形分区模式是VP10开发的一项新功能,水平或垂直拆分超区块分割为4:1和1:4长条形分区。分区模式的使用因超区块大小而有所限制,其中128×128和8×8超区块都不能使用4:1或1:4长条型分区拆分,而只有8×8超区块则不能使用T形分割。
- 在不同区块空间的部分上使用两个独立预测,可以使用平滑的倾斜过渡线(楔形分区预测)。这使得对象得以准确地分割,而无需沿方形边界的传统阶梯线。
- 基于瓦形行列之间的可预测的相依性这使得可以实现更多的编码器平行性。
- 预测:
AV1以更高的精度(10或12位样本频率)执行内部处理,由于分辨率提高,图像中的四舍五入的误差较小,使得压缩性能改进。
预测(Prediction)可以在一个区块中以更高级的方式组合成复合预测,包括不同方向平滑与尖锐的楔形分区预测,以及基于使用两个预测器探究两者之间差异的隐式掩码,这将比取平均来得优秀。这允许在同一超区块中使用两个帧间预测或帧间和帧内预测的组合。
于帧间预测时,一个帧可以访问8个可用帧缓冲区中的6个而不是3个,且可同时为双向预测,即帧间与帧内预测组合预测[29]。
在AV1中的扭曲运动[和全局运动分析工具,用于借由识别由相机运动产生的模式,以减少运动向量中的冗余信息,如噪音即为冗于信息。这实现了以往的格式中试图却仍未被实现的做法,例如尽管采用适用于三维的新颖方法的MPEG-4ASP。比特流中提供的帧有一组扭曲参数,隐式区域参数可根据周围的区块计算得到并于区块中使用。
切换帧(S帧)是一种新的帧间类型,可以使用来自同一影像更高分辨率的已解码参考帧进行预测以允许切换至低分辨率,于自适性比特流媒体实例中,无需在开始时使用完整的关键帧影像片段。
- 帧内预测:
帧内预测(Intra Prediction)使用当前帧中可用信息来预测目标区块的像素。大多数情况下,帧内预测是从待预测目标区块上方和左侧的相邻像素构建的。DC预测器借由平均区块左侧和上方像素进行预测。
根据指定的角度,方向预测器可以推断相邻像素。在AV1中,以45度角开始,每次差距22.5度,逐步增加至203度,共计八种模式。每个方向模式中,可以为较大的区块给予每个3度,共计六组的偏移信号,主角上方与下方各三组,从而产生总共56个角。
其中,真实运动预测器被替换为Paeth预测器,这将判别左上角已知像素与新像素的左侧与上方的的像素的差异,而后选择位于较小梯度方向的像素作为预测器。
另调色板预测器可用于较少颜色最多8个颜色的区块,如部分电脑屏幕内容,可使用基于亮度平面样本的色度块预测器来利用亮度和颜色信息之间的相关性。
为了减少沿帧间预测区块边界的可视边界,可使用重叠块运动补偿(OBMC)技术,与相邻区块重叠2到32个像素,并混合重叠部分。
- 数据转换:
为了将预测后剩余的误差转换(Data transformation)到频域,AV1编码器可以使用正方形、或2:1/1:2和4:1/1:4矩形进行离散余弦变换[29],以及非对称的离散正弦变换[31][32],对来自附近像素,预测左侧或上方边缘具有较低误差的区块,或者选择不进行变换。
这可以复合两个一维变换,使得水平和垂直维度得以使用不同的变换。
- 量化:
- AV1具有优化量化(Quantization)矩阵,每帧可选择和发送信息八组量化参数,具有两个色度平面的单独参数,并且可以使用空间预测。在每个新的超区块上,量化参数可以通过发送偏移信号进行调整。
- 滤波器:
- Thor的约束低通滤波器(Filter)和Daala的定向去振铃滤波器,对于环路滤波有卓越的成效:结合二者之约束定向增强滤波器,超过了单独或一起使用一般滤波器的结果。
- 还有基于Wiener滤波器和自引导恢复滤波器的环路恢复滤波器,用于去除由于区块处理引起的模糊振铃。
- 熵编码:
- Daala的熵编码器,是一种非二进制的算术编码器,作为替代原先VP9二进制的编码器。非二进制算术编码的有利于避开现有专利,同时也让比特层级的串列过程增加了平行性,藉而降低硬件实现对于石英震荡器的速率要求。如前文参考之适应性二元算术编码之现代二进制算术编码的有效性,其正在使用比二进制更大的字母表来实现,因此速度更快,就像霍夫曼编码一样,虽然仍不及霍夫曼编码简单而快速。AV1在算术编码器中拥有按编码符号而不是按帧调整符号概率的能力。
- 可适性视频编码:或者叫可伸缩性SVC编码
对于视频最重要的是,可适性视频编码是一种泛用技术而不是由AV1独有,以便可以从更高比特率的影像流中提取质量更好的低比特率视频流。这与自适应比特率流传输差别在于,每个更高比特率适配中的一些压缩效率被放弃,以获得整体影像流的性能。编码过程也较少冗余与较低的要求。
AV1提供了时间和空间可适性,帧速率和分辨率都是定义为低比特流可用的方法。
AV1编码规范
-
profile
-
level
软件支持
- Web浏览器:
- Firefox(自2019年5月第67.0版起;在所有桌面平台上默认启动-适用于32位和64位系统的Windows、macOS和Linux)
- Google Chrome(自2018年10月第70版后的解码器起[54];自2021年4月14日第90版后的编码器起)
- Opera(自2018年11月28日第57版起)
- Microsoft Edge(自2018年10月10日Windows更新的(1809)起,带有AV1影像扩展插件)
- Vivaldi(自2018年10月起)
- 影像播放器:
- VLC媒体播放器(自3.0版起)
- mpv(自0.29.0版起)
- Xine-lib(自1.2.10起)
- PotPlayer(自2018年10月16日第1.7.14804版起)
- K-Lite 编解码器包(自2018年9月13日起14.4.5版起)
- 编码器:
- FFmpeg(自2018年4月20日4.0版起)
- HandBrake(自2019年11月9日1.3.0版起支持解码)
- Bitmovin编码(自2018年7月4日1.50.0版起)
- 影像编辑:
- DaVinci Resolve(自2021年5月17.2版起支持解码)
- 其他:
- GStreamer(自1.14版起)
- MKVToolNix(自版本28开始采用最终的av1-in-mkv规范)
- MediaInfo(自18.03版起)
- Elecard
- StreamEye Studio(影像质量分析工具)
- Google Duo(自2020年4月起)