在2010年,每一代视频压缩标准都伴随着特定的静态图像格式,例如VP8的WebP、H.265的HEIC和AV1的AVIF。从编解码角度看,这些格式实际上利用了对应的视频编码技术,单帧编码为静态图像。而动图则利用了视频编码技术,通过帧内或帧间编码多帧并额外添加元数据和封装格式。AVIF图片是使用AV1视频编码格式的新一代图片类型。自2019年诞生以来,AVIF图片格式已经引起了图片应用领域的关注。与老一代图片格式相比,AVIF图片格式提供了更高的压缩率收益。研究压缩收益的关键在于选择合适的源码,而AVIF图片格式标准同样采用了AOM的开源策略。GitHub上提供了两个AVIF相关的开源项目,分别是libheif和libavif。两者都支持使用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`。编译得到的程序包括avifenc(编码器)和avifdec(解码器)。尝试使用avifenc编码AVIF图片时,需要注意支持的颜色格式,以便匹配编译得到的功能。AVIF图片显示支持的操作系统包括macOS Ventura和iOS16。如果当前系统不支持AVIF图片显示,可以使用avifdec解码图片后查看内容。对于深入分析AVIF图片码流,可以使用ffmpeg将其转换为ivf格式码流,进而使用码流分析软件获取更多详细信息,如块编码模式、块划分和qindex大小等。虽然HEIC和AVIF图片格式的编解码技术有所改进,但AVIF图片在体验感上与JPEG基本相同。它在编解码技术上比AV1视频更简单,并与HEIF封装格式兼容。关于AVIF图片格式的工程和业务落地,值得进一步探讨。推荐阅读相关博客以深入了解AVIF图片格式及其应用。