AVIF图片格式有没有新东西?

大概从2010年开始,每一代视频压缩标准会有它对应的静态图像格式,比如VP8的WebP,H.265的HEIC,AV1的AVIF等。

如果从编解码角度来看这个现象,实际上也比较容易理解。一张静态图片实际上是利用对应的视频编码格式,且只用帧内编码一帧得到码流。而一张动图是使用对应的视频编码格式,使用帧内或帧间技术编码多帧得到的码流,或者再额外给码流加上metadata数据和ISOBMFF封装格式。

AVIF图片格式有没有新东西?

今天要说的AVIF图片,就是使用了AV1视频编码格式的新一代图片类型。

AVIF图片格式有没有新东西?

从2019年诞生之后,图片类应用相关从业者们已经陆续介绍过这种新型图片格式,如下所示:

AVIF图片格式有没有新东西?
AVIF图片格式有没有新东西?

但所谓”外行看热闹,内行看门道”,作为视频编解码从业者,AVIF和老一代图片格式的压缩率对比测试并不是关注重点,我们应从图片压缩技术本身和底层原理去分析和理解,AVIF图片格式为什么会有更好的图片压缩率收益。

要研究压缩收益,首先需要有一个合适的源码。正如AV1视频编码标准和源代码由AOM开源一样,AVIF图片格式标准也是由AOM开源。

AVIF图片格式有没有新东西?

1.编码得到avif图片

github上目前有2个avif相关的开源项目可使用,分别是libheif和libavif。前者我在之前介绍HEIF格式的时候提到过,不再赘述,而后者则属于是AOM的官方项目。

AVIF图片格式有没有新东西?

对比这两个项目不难发现其相同之处,都支持使用libaom/svt-av1/rav1e这几个开源AV1编码器项目来完成avif编码,使用开源dav1d解码器项目完成图片解码。因而也可以认为,avif图片实际上就是av1编码器库和解码器库的应(套)用(壳)。

下面以libavif这个开源项目为例,介绍如何得到一些AVIF格式图片。

源码下载以后,我使用的编译命令如下:

cmake -DCMAKE_BUILD_TYPE=Release -DAVIF_LOCAL_SVT=1 -DAVIF_CODEC_DAV1D=1 -DAVIF_CODEC_SVT=1 -DBUILD_SHARED_LIBS=0 -DAVIF_BUILD_APPS=1 -DAVIF_BUILD_EXAMPLES=1 ../

make -j 10

其中AVIF_LOCAL_SVT=1表示使用本地checkout的SVT-AV1代码作为avif的编码器,而AVIF_CODEC_DAV1D=1表示avif图片解码使用dav1d。

这里AVIF_BUILD_APPS=1表示编译并生成avif图片的编码和解码可执行程序。而AVIF_BUILD_EXAMPLES=1是要求编译libavif提供的example。最终编译得到如下程序:

AVIF图片格式有没有新东西?

接着运行avifenc -help可看到生成avif编码器和解码器版本以及它的使用说明。

AVIF图片格式有没有新东西?

尝试用avifenc编码一张avif图片,目前它支持直接输入JPEG/PNG图片,如下:

AVIF图片格式有没有新东西?

这里提示原图是YUV444颜色格式,而目前编译得到的avifenc只支持YUV420。那就强制输出YUV420格式的avif,如下:

AVIF图片格式有没有新东西?

上面得到的avif图片如下所示。在macOS Ventura上可直接预览播放。

AVIF图片格式有没有新东西?

目前能支持AVIF图片显示的操作系统如下图所示,(iOS16和macOS Ventura都是2022年发布的):

AVIF图片格式有没有新东西?

如果你的系统还不支持AVIF图片,可以用avifdec解码avif图片以后再查看内容。

2.分析avif图片码流

对于我来说,更关心是否能够用码流分析软件来获取AVIF图片更多信息,比如图片里每个块的编码模式,块划分,qindex的大小信息等等。

如何将一张avif图片转成av1的码流呢?

其实使用ffmpeg就可以,不过前提是你的ffmpeg在编译时开启了dva1d,使用ffmpeg命令如下:

ffmpeg -i rally.avif -c:v copy rally.ivf

AVIF图片格式有没有新东西?

在得到avif图片对应的ivf格式码流以后,就可以使用码流分析软件来查看了。

这里给大家对比一下avif图片和它对应的ivf码流的差异,可以看到,主要是AV1的裸码流封装上的差异。

AVIF图片格式有没有新东西?

 

然后可以用Elecard软件打开这个avif图片对应的ivf码流,如下图所示:

AVIF图片格式有没有新东西?

这样我们便可以对avif图片的编码器去做进一步分析和优化了。

3.小结

不管是HEIC还是AVIF图片格式,当我们把它们对应的HEVC和AV1编码器和解码器性能优化好以后,这些图片格式也就手到擒来了。AVIF图片格式并没有新的东西,对于图片使用者来说,从体验感上这和JPEG没什么区别;从它所用到的编解码技术来说,比AV1视频就更简单了,而且它还完全是和HEIF封装格式兼容。

至于说AVIF图片的工程和业务落地,那是另外一个话题了,如果有兴趣,可以去看看今年B站发的AVIF落地文章。不过我看他们文章的作者里面好像没有看到编解码相关人员,那这个AVIF的落地效果和收益是不是要打个问号了呢?

最后,关于AVIF图片格式推荐大家阅读这篇博客:

https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4

如果对新的图片类型感兴趣,欢迎大家加群讨论。

AVIF图片格式有没有新东西?

​​

​​

​​

​​

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论