编译 / Coco Liang
技术审校 / 蒋默邱泽
原文https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4
Netflix在今年情人节当天公布了下一代图片压缩编码格式——AVIF,采用AVIF替换目前正在使用的JPEG编码格式已经被Netflix正式提上了日程。
Netflix在自己的科技博客中表明,能够替代JPEG的图片编码格式必须满足以下三个条件:
- 可以被广泛的支持;
- 有更高的压缩效率;
- 有更多的特性。
通过对比其他几种同样为人熟知的图片编码格式:JPEG2000、WebP与HEVC,我们发现,AVIF在满足Netflix以上三个要求的同时,相比其他图片格式也确实是个better choice。
曾经JPEG 2000在标准推出并具体实现之后,并没有得到很好的市场推广(对比Google大力推崇的WebP、苹果IOS系统支持的 HEVC)。JPEG2000在数字影院、指纹鉴别等小范围内流行,但明显缺乏更加强大、大众化、商业化的软件生态支持,故而并没有实现真正的落地普及。
WebP 源于VP8,是Google 2010年开源出来的图像编解码算法,可以说是“含着金汤匙出生”,YouTube、Gmail、Google Play均应用WebP图片格式。2018年之后,浏览器Edge、Firefox也宣布支持WebP格式。但就目前来说,WebP仍只被看作PNG更高效快捷的替代方案,而且Google的一些非开源的技术总是能神奇地阻碍图片的分享。
HEVC是AVC(H.264)的后继产品,性能优秀,你可以在Apple设备上将HEIF玩出各种花样。可惜的是,这支大佬的“独苗”存在专利费用。HEIF是存储HEVC编码的静态图像的容器,类似的存储AV1编码的静态图像的容器就是本篇的主角——AVIF。
AVIF由开源组织AOMedia开发,Netflix、Google与Apple均是该组织的成员。AVIF是基于AV1的新图像格式,使用HEIF作为容器和AV1帧。
在图像编码格式领域, MPEG已将与编解码器无关的通用图像容器格式标准化,即ISO / IEC 23000-12标准(又称HEIF)。 HEIF已用于存储最著名的HEVC编码图像(以其HEIC变体形式),但也能够存储AVC编码图像甚至JPEG编码图像。
AOMedia最近扩展了此格式,以指定其AVIF格式的AV1编码图像的存储。
而基本的HEIF格式提供了图像格式所期望的所有典型功能,例如:支持任何图像编解码器,使用有损或无损模式进行压缩的能力,支持各种采样率和色彩深度等。此外,HEIF格式还允许一系列动画帧的存储(提供了人们期待已久且十分高效的GIF的的替代方法),以及指定Alpha通道的能力(在UI中得到了广泛使用)。此外,由于HEIF格式借鉴了下一代视频压缩的经验,因此该格式允许保留元数据,例如色域和高动态范围(HDR)信息。
Netflix目前已经开源了一个基于Docker的框架,用于比较各种图像编解码器。主要功能包括:
- 使用Python 3进行代码编排(具有并行化)和采用新一代注释
- 易于重现结果
- 轻松控制目标质量范围
最为人熟知的JPEG已经有近27年的历史了,在技术快速更迭的移动互联网时代,这个数字的使用年限已经可以被称为元老级别了。虽然JPEG已经非常成熟,但仍存在硬件限制、实际使用过于复杂、只支持8bit、解码过程相对复杂等劣势,且不适用于流量费用昂贵的当下。
Netflix官方提供了几组图,对比了JPEG与AVIF图片格式的实际效果。图片都被转换成了无损的PNG格式,以便于明显的区分。
原始图像
JPEG图片,图片大小20,429 bytes
AVIF图片,图片大小19,788 bytes
在第一组图片中,可以明显看出JPEG格式在天空,池塘以及屋顶上有非常明显的块状效应。尽管屋顶上有些模糊和纹理丢失,但AVIF呈现的效果要好很多,至少不会出现块阴影,且此时的AVIF有约59倍的压缩性能。
JPEG图片,图片大小40,276 bytes
AVIF图片,图片大小39,819 bytes
这一组图的图片质量都有所提升,两种编码的图片大小仍然接近。JPEG格式在天空中仍然有肉眼可见的遮挡伪像,并且在多个位置出现色度渗漏。而AVIF图像与原始图像相当,这里的压缩系数为29倍。
同时,Netflix还提供了自家原创剧集的海报图片,对比了JPEG和AVIF图片编码格式在实际应用中有何不同。
原始图像
JPEG图片,图片大小80,562 bytes
AVIF图片,图片大小80,432 bytes
从这组图中可以发现,JPEG编码下,图片中存在可见的条带、块状效应,而AVIF格式看起来则非常接近原图。
尽管AVIF提供了出色的压缩效率,但它仍处于早期部署阶段。AOMedia正在开发一个名为libavif的开源库,该库可以对AVIF图像进行编码和解码,目的是简化图像社区中软件的集成。类似的集成已经在各种浏览器(例如Google Chrome)中开始应用。同时,dav1d团队也在不断努力,希望AVIF图像解码尽可能快地落地。
毕竟,让一种编码标准通行起来从来都不是一朝一夕的事情,技术方向要考虑压缩比、效果、速度、计算复杂度,推广方面要考虑软硬件生态支持、专利障碍、开源实现、市场营销等等。
一周前,Netflix宣布了将在在Android上采用AV1视频编解码格式,现在他们也将很快在Android上测试AVIF图像格式。
与此同时,Netflix也正在为UI处理HDR图像,并计划使用AVIF对这些HDR图像资产进行编码,尝试使用JPEG 2000作为HDR图像的压缩格式,期待AVIF可以提供更出色的压缩效果。
在全球互联的时代,图片格式越来越被希望是一个灵活开放的容器,私有技术也越来越被看作是开源的对立面。要真正推广并普遍应用AVIF,可以说是道阻且长,但一个开放的图片格式环境,却永远都值得期待。
相关链接
- Netflix在安卓移动启用AV1格式 较VP9编码效率提升20%
- AV1Ecosystem Update: November 2019
- 性能可期——Netflix与Intel优化SVT-AV1
- Netflix:通过自适应音频码率提升音频体验
————————————————
版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/104404148
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。