AVIF 是什么?2026 年技术深度解析 —— HEIF 容器结构、AV1 帧内编码(56 种预测模式、CDEF)、profile 像素上限、10/12-bit HDR 信号、设计取舍。
如果说 WebP 是过去十年里悄悄把网页图体积砍掉三分之一的格式,那 AVIF 就是现在悄悄再砍一半的那一个。但这条标题数字背后是一摞绝大多数文章不展开的设计决策:从 HEIC 借来的容器、从一个最新一代视频编解码器里挖出来的帧内编码器、限定单 tile 最大像素的 profile 体系,以及 WebP 根本无法承载的 HDR 信号。
这篇文章是 AVIF 在 2026 年的 技术解剖 —— 文件里到底有什么、像素是怎么被预测和过滤的、为什么编码器这么慢、profile 限制到底卡在哪里、10/12-bit HDR 信号是怎么走的。如果你想看实操的”AVIF vs WebP vs JPEG 文件大小和浏览器支持率”对比,去 AVIF vs WebP vs JPEG 终极格式对比;如果你想看 Mac 上的转换工作流,去 Mac 上最好的 AVIF 压缩工具。本文不重复任何一篇。
AVIF(AV1 Image File Format,AV1 图片文件格式)是由 开放媒体联盟(Alliance for Open Media) 维护的开放、免版税图片格式,把 AV1 视频编解码器压缩出来的静态图像装在 HEIF/ISOBMFF 容器 里。 当前规范版本是 v1.2.0,发布于 2025 年 11 月 3 日。
官方扩展名是 .avif(动画序列用 .avifs),MIME 类型是 image/avif。一句话概括:AVIF 就是把一帧最先进的视频关键帧当成静态图片发出去 —— 后面所有有意思的事情,都是这一个设计决策的延伸。
跨浏览器支持能在五年(而不是十五年)内到位的现实原因,就是 AOM 的成员名单本身 —— 发布 Chrome、Firefox、Edge 和 YouTube 的那批公司,在规范定稿之前就已经达成一致。
国产浏览器与超级 App 的 AVIF 支持时间线: 国产 Chromium 系浏览器(QQ 浏览器、UC、夸克、360 极速、搜狗)多数在 2023-2024 年随 Chromium 主线 stable 版本陆续打开 AVIF 解码。微信 / QQ / 抖音 / 小红书 / 微博的内置 WebView 跟随系统:iOS 走 Safari WebKit,从 macOS Ventura 起 Safari 16 起支持;Android 走系统 Chromium WebView,绑定手机厂商版本,新机型(2023+)默认支持,5-6 年前的老机型可能解码失败。微信小程序运行环境对 AVIF 的支持比 WebP 滞后约一档——需要查阅微信开放文档当前版本兼容情况。
AVIF 的外壳并不是新东西。它是 HEIF(ISO/IEC 23008-12),而 HEIF 本身又是 ISO Base Media File Format(ISOBMFF,ISO/IEC 14496-12)的一个 profile —— 同一个”盒子(box)“家族也是 MP4 和 QuickTime 的底层。一个 AVIF 文件就是一连串嵌套的 box,每个 box 用 4 个字符的 4CC 类型码加长度字段开头:
| Box | 作用 |
|---|---|
ftyp | File Type Box —— 声明 brand(静图用 avif、动画序列用 avis)和兼容 brand |
meta | 后续所有图像元数据的容器 |
hdlr | Handler 引用 —— AVIF 里固定是 pict |
pitm | Primary Item —— 哪个 item 是真正要显示的主图 |
iinf | Item Info —— 每个被编码的图像 item 的声明 |
iloc | Item Location —— 在 mdat 里的字节偏移与长度 |
iprp | Item Properties —— 图像尺寸、色彩配置、旋转、alpha 链接 |
iref | Item References —— 例如 auxl 把 alpha 平面绑到颜色平面、dimg 把网格 tile 拼成派生图 |
mdat | Media Data —— 真正的 AV1 比特流负载 |
关键点是:AVIF 和 HEIC 是 同一个外壳,只是里面装的编解码器不同。iPhone 拍出来的 HEIC 是 HEIF 里装 HEVC 编码的数据;AVIF 是 HEIF 里装 AV1 编码的数据。这也是为什么 AVIF 能用和 HEIC 完全相同的方式支持图像网格、平铺超大图(通过 dimg 引用),以及 ICC 配置、旋转之类的逐图属性。
至于 AV1 比特流本身,AVIF 把 AV1 OBU(Open Bitstream Unit)直接塞进 mdat。解码器把每个被编码的图像 item 当作一个独立的 AV1 关键帧来处理,完全忽略帧间编码那一套机制。
容器内部装着的,是单帧 AV1 关键帧。AV1 是块(block)级别的混合编解码器,关键帧(intra)编码就是 AVIF 用来压缩每张静态图的方式。决定比特预算的,主要是三块机制:
JPEG 几乎没有帧内预测。HEVC(也就是 HEIC)有 33 个方向模式。AV1 有 56 个方向模式 —— 由 8 个标定角度(45°、67°、90°、113°、135°、157°、180°、203°)配上 [-3, +3] 范围、步长 3° 的角度增量生成。编码器沿选定角度从相邻像素预测出每一个块,然后只编码残差。角度更细,意味着对斜边、细纹理、渐变都能找到更贴合的预测 —— 残差更小、需要的比特数更少。
在 56 个方向模式之外,AV1 还加了:
JPEG 把每个块锁死在 8×8。AV1 动态选择 从 4×4 到 128×128 的块尺寸,每个超块最多支持 10 种分块形状 —— 正方形 4-way 切分、水平/垂直 2-way 切分、四种 T 形分块,加上 4:1 与 1:4 的长条形分块。一片平滑的天空?一个超大块。一面密集的建筑细节?一片小块的网格。编码器把比特数花在该花的地方,剩下的区域饿着。
重建之后,AV1 还要跑两个 in-loop 滤波器,这是 JPEG 和 WebP 完全没有的:
这就是为什么即便在很低的码率下,AVIF 通常也比 JPEG 表现出更少的振铃和块状伪影。编码器不只是在压缩,它在落盘前还在对自己的输出做后处理。
代价就是:编码器要在每一个块上选择 56 种方向 × 多种分块形状 × 多种变换 × 多种滤波参数。即使配上很重的启发式剪枝,对一张多兆像素的照片做高质量 AVIF 编码,单核 CPU 每张要数秒到数分钟;同样这张图编 JPEG 只需要毫秒级。解码很快(现代设备压力很小),但编码本质上是个搜索问题。
AVIF 还从 AV1 那里继承了一件事:一条真正能跑 HDR 的色彩管线。WebP 锁死在 8-bit YUV 4:2:0;AVIF 支持 每分量 8、10、12 bit,加上 4:2:0、4:2:2、4:4:4 和单色(monochrome)色度采样。
HDR 信号写在 iprp 里的 colr(Colour Information)属性里,标明:
实操上的意义是:一张来自最新 iPhone 的 Display P3 照片,可以全程留在 10-bit BT.2020 PQ 管线里,一直走到 AVIF 文件落盘。WebP 装不下这条信息。JPEG 装不下。AVIF 和 JPEG XL 能装;HEIC 也能。这是 AVIF 与 WebP 之间最大的功能差异。
不是每个 AVIF 文件都能被任意 AVIF 解码器解开。规范定义了两个 profile,每个 profile 给单个被编码图像 item 设了硬性的像素上限(AVIF v1.2.0 §A.4):
| Profile | 最大像素数 | 最大宽度 | 最大高度 | 位深 |
|---|---|---|---|---|
| Baseline | 8,912,896 | 8,192 | 4,352 | 8 / 10 |
| Advanced | 35,651,584 | 16,384 | 8,704 | 8 / 10 / 12 |
只支持 Baseline 的解码器有权拒绝解码一张 10K×10K 的 Advanced 图。任何宣称支持 AVIF 的解码器至少必须支持 Baseline。
两个 profile 都可以通过 网格派生图像 item(grid derived image item) 突破名义上的宽高 —— 用 dimg 引用从主显示 item 指向 N×M 个子 tile,每个 tile 单独符合 profile 的单格上限。这就是为什么 iPhone 的 48 MP 拍摄能落进 AVIF 而不破坏一致性解码器:文件内部其实是若干小 tile 的网格,但在 API 层面呈现为一张大图。
动画 AVIF 复用 ISOBMFF 的 movie box(moov) 那套机制,并在 ftyp 里声明 avis brand。每一帧仍然是一个独立的 AV1 关键帧 —— AVIF 静态图 profile 里没有帧间引用 —— 所以动画 AVIF 本质上是”被容器赋予了时间戳的一串独立编码静图”,而不是真正的视频。
由此带来两个结果:
动画 AVIF 的浏览器支持略落后于静态 AVIF,关键场景前先做兼容性测试。
有些限制不是 bug,而是 AV1 设计的下游产物。
Mac 上最简单的路径是 Zipic:把”输出格式”设成 AVIF,把任意支持的源文件拖进去,Zipic 会在后台调 libavif。如果走构建管线,用 Homebrew 装 libavif(brew install libavif),脚本里直接调 avifenc。完整的 Mac 工作流对比见 Mac 上最好的 AVIF 压缩工具。
为什么 AVIF 编码比 WebP 慢这么多? 因为编码器要在每个块上搜索 56 种方向模式、4×4 到 128×128 的多种分块形状、多种变换、CDEF 与环路修复滤波器的多组参数。WebP 那个从 VP8 衍生出来的编码器决策空间小得多。所以构建期预编码,激进缓存。
AVIF 和 HEIC 是什么关系?
共享同一个容器(HEIF/ISOBMFF)和同一套属性模型(ICC 配置、旋转、图像网格、alpha 辅助引用)。区别在 mdat 里装的编解码器:HEIC 装的是 HEVC 编码负载,AVIF 装的是 AV1 编码负载。HEVC 有专利费;AV1 免版税 —— 这就是 AVIF 进了开放 Web、HEIC 基本进不了的原因。
HDR 内容怎么存进 AVIF?
源文件用 10-bit 或 12-bit 编码,色彩基色设为 BT.2020,传输函数选 PQ(HDR10 风格的绝对亮度内容)或 HLG(广播级 scene-referred 内容)。信号写在 iprp 里的 colr 属性。一份打了正确标的 AVIF 会被 HDR 浏览器和系统图像查看器正确做 tone mapping 或直通。
什么是”网格 AVIF”?什么时候需要?
网格 AVIF 把单张逻辑图存成 N×M 个 sub-tile,用 dimg 引用绑成一张派生图。当你的图超过目标 profile 的单格像素上限时(Baseline 8.9 MP、Advanced 35.6 MP),就必须用网格。绝大多数编码器(包括 libavif)在需要时会自动生成网格 AVIF。
AVIF 能带透明 alpha 通道吗?
能。通过一个用 auxl 引用关联的辅助图像 item。alpha 平面本身是一份独立的 AV1 编码负载,与颜色平面分开存储,由主 item 的属性引用。这就是为什么 AVIF 能支持完整的 8-bit(甚至更高位深)alpha,而不像 GIF 只有 1-bit 透明度。
AVIF 是把 AV1 的帧内编码包进 HEIF 容器、用 profile 限定单 tile 像素天花板、能装真正 10/12-bit HDR 信号、用一套 in-loop 滤波器栈消除 JPEG 处理不掉的伪影。编码器是搜索问题 —— 这是它慢的代价;文件体积和色彩保真度的优势 —— 这是它换来的回报。免费下载 Zipic 在 Mac 上批量转 AVIF,或升级到 Zipic Pro 解锁全部 12 种格式与不限张数。下载即享 7 天完整 Pro 体验。