跳过正文
  1. 所有文章/

什么是 AVIF,如何使用它

·652 字·2 分钟·
Aaron
作者
Aaron
I only know that I know nothing.
目录

前言
#

最近在折腾博客图片格式的时候,接触到了 AVIF1 这个比较新的图片格式。了解之后发现它在压缩率上相比传统的 JPEG 有着非常大的优势,于是做了一些研究,在这里记录一下。

什么是 AVIF
#

AVIF 是一种基于 AV1 视频编码技术的图片格式。与 JPEG 类似,它使用有损压缩来减小文件大小,但不同之处在于,AVIF 在相同画质下可以把文件体积压缩得更小。

该格式由开放媒体联盟(AOMedia)开发,该联盟由亚马逊、Netflix、谷歌和 Mozilla 等公司组成。文件使用 AV1(AOMedia Video 1)算法压缩,并以 HEIF 容器格式存储2。由于 AV1 压缩技术是免版税的3,所以无需支付任何许可费用即可使用。

你可以在 Can I use 上查看 AVIF 的浏览器支持范围。

AVIF 对比 JPEG
#

Netflix TechBlog

与 JPEG 相比,AVIF 最明显的优势是文件尺寸大幅缩小。更小的文件意味着更少的带宽消耗和更快的加载速度,将网页中的 JPEG 替换为 AVIF 后,图像的数据消耗量可能会减少一半

颜色深度是 AVIF 优于 JPEG 的另一个方面。JPEG 仅支持 8 位颜色深度,而 AVIF 支持 HDR4,这意味着更丰富的色彩和更多的细节表现。

Netflix 有一些很好的视觉示例,比较了相同图像分别压缩为 JPEG 和 AVIF 的效果。WebP 和 PNG 格式的其他比较也值得一看。

如何使用 AVIF
#

可以使用 FFmpeg5 将其他格式的图片转换为 AVIF 格式。

简单的转换示例:

# JPEG → AVIF
ffmpeg -i input.jpg output.avif
# PNG → AVIF
ffmpeg -i input.png output.avif

调整输出质量,使用 -crf 参数(0-63,值越低质量越高):

ffmpeg -i input.jpg -c:v libaom-av1 -crf 30 -b:v 0 output.avif

调整压缩级别,使用 -cpu-used 参数(0-8,值越大速度越快,但压缩率越低):

ffmpeg -i input.jpg -c:v libaom-av1 -cpu-used 4 -crf 30 -b:v 0 output.avif

组合使用,同时指定质量和压缩级别:

ffmpeg -i example.png -c:v libaom-av1 -crf 30 -cpu-used 4 -b:v 0 example.avif

参考文献
#