AVIF 是什么?AV1 图片格式的技术解剖 —— HEIF 容器、AV1 帧内编码、HDR、profile、设计取舍
AVIF 图片格式 AV1 HDR HEIF

AVIF 是什么?拆解 AV1 图片格式的内部构造

2026-05-02 Zipic Team

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 是什么?一句话定义

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 就是把一帧最先进的视频关键帧当成静态图片发出去 —— 后面所有有意思的事情,都是这一个设计决策的延伸。

AVIF 简史:从 AV1 编解码器到 Web 标准

  • 2015 —— Amazon、Cisco、Google、Intel、Microsoft、Mozilla、Netflix 联合成立开放媒体联盟(AOM),目标是给 HEVC 一个免版税的替代方案。AV1 视频编解码器是该项目的旗舰产物。
  • 2018-03 —— AV1 视频比特流规范定稿。强压缩 + 明确免版税许可 —— HEIC 没能进入开放 Web 的那条专利费鸿沟在这里被填上了。
  • 2019-02-19 —— AVIF v1.0.0 正式发布。它复用 AV1 关键帧编码,把结果装进原本为 HEIC 设计的 HEIF 容器——已有的 HEIF 工具链在第一天就能在容器层解析 AVIF。
  • 2020-08 —— Chrome 85 上线原生 AVIF 解码,Netflix 同时发布 AVIF for Next-Generation Image Coding 研究报告。
  • 2021-10 —— Firefox 93 默认开启 AVIF 解码。
  • 2022-09-12 —— Safari 16 随 iOS 16 发布,加入非动画 AVIF 解码;10 月份 Safari 16.1 随 macOS Ventura 发布,补齐 macOS 端并加入动画 AVIF。
  • 2023-03-27 —— Safari 16.4 把 AVIF 解码反向移植到 macOS Monterey 与 Big Sur。
  • 2025-11-03 —— AVIF v1.2.0 发布,加入 sample transforms(通过编解码器分层支持 >12-bit 位深)、gain map 信号(兼容 SDR 显示的 HDR 内容),以及与最新 HEIF/ISOBMFF/MIAF 规范对齐的一致性更新。

跨浏览器支持能在五年(而不是十五年)内到位的现实原因,就是 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 滞后约一档——需要查阅微信开放文档当前版本兼容情况。

容器内部:HEIF 与 ISOBMFF 的盒子结构

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作用
ftypFile Type Box —— 声明 brand(静图用 avif、动画序列用 avis)和兼容 brand
meta后续所有图像元数据的容器
hdlrHandler 引用 —— AVIF 里固定是 pict
pitmPrimary Item —— 哪个 item 是真正要显示的主图
iinfItem Info —— 每个被编码的图像 item 的声明
ilocItem Location —— 在 mdat 里的字节偏移与长度
iprpItem Properties —— 图像尺寸、色彩配置、旋转、alpha 链接
irefItem References —— 例如 auxl 把 alpha 平面绑到颜色平面、dimg 把网格 tile 拼成派生图
mdatMedia 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 关键帧来处理,完全忽略帧间编码那一套机制。

AVIF 怎么压缩:AV1 帧内编码

容器内部装着的,是单帧 AV1 关键帧。AV1 是块(block)级别的混合编解码器,关键帧(intra)编码就是 AVIF 用来压缩每张静态图的方式。决定比特预算的,主要是三块机制:

56 种方向性帧内预测模式

JPEG 几乎没有帧内预测。HEVC(也就是 HEIC)有 33 个方向模式。AV1 有 56 个方向模式 —— 由 8 个标定角度(45°、67°、90°、113°、135°、157°、180°、203°)配上 [-3, +3] 范围、步长 3° 的角度增量生成。编码器沿选定角度从相邻像素预测出每一个块,然后只编码残差。角度更细,意味着对斜边、细纹理、渐变都能找到更贴合的预测 —— 残差更小、需要的比特数更少。

在 56 个方向模式之外,AV1 还加了:

  • DC、Smooth、Smooth-V、Smooth-H、Paeth —— 给平坦区域和渐变用的非方向预测器。
  • 递归帧内滤波器(Recursive intra filters) —— 给细颗粒自然纹理设计的滤波器型预测模式。
  • Chroma-from-luma(CfL) —— 把色度平面预测成亮度平面的线性函数。在多数照片里,色度和亮度高度相关,这一招能省下大量比特。
  • 帧内块拷贝(Intra block copy) —— 给文本这类屏幕内容设计,允许一个块从同一张图的另一个块复制预测。

可变尺寸分块(4×4 到 128×128)

JPEG 把每个块锁死在 8×8。AV1 动态选择 从 4×4 到 128×128 的块尺寸,每个超块最多支持 10 种分块形状 —— 正方形 4-way 切分、水平/垂直 2-way 切分、四种 T 形分块,加上 4:1 与 1:4 的长条形分块。一片平滑的天空?一个超大块。一面密集的建筑细节?一片小块的网格。编码器把比特数花在该花的地方,剩下的区域饿着。

CDEF 与环路修复滤波器

重建之后,AV1 还要跑两个 in-loop 滤波器,这是 JPEG 和 WebP 完全没有的:

  • CDEF(Constrained Directional Enhancement Filter,受约束的方向增强滤波器) —— 先识别每个 8×8 块的主导方向,再用一个非线性低通滤波器,主轴沿方向(primary taps)、副轴 45° 偏移(secondary taps),消除锐边周围的振铃伪影和基底噪声 ——但不会糊掉边本身。仅这一项就能贡献 最多 4.5% 的码率节省
  • 环路修复滤波器(Loop Restoration Filter) —— CDEF 之后再来一道,结合 Wiener 滤波器和带投影的自引导修复滤波器(SGRPROJ),把量化过程中丢失的细节再”反推”一部分回来。

这就是为什么即便在很低的码率下,AVIF 通常也比 JPEG 表现出更少的振铃和块状伪影。编码器不只是在压缩,它在落盘前还在对自己的输出做后处理。

为什么编码这么慢

代价就是:编码器要在每一个块上选择 56 种方向 × 多种分块形状 × 多种变换 × 多种滤波参数。即使配上很重的启发式剪枝,对一张多兆像素的照片做高质量 AVIF 编码,单核 CPU 每张要数秒到数分钟;同样这张图编 JPEG 只需要毫秒级。解码很快(现代设备压力很小),但编码本质上是个搜索问题。

色深、HDR 与广色域

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)属性里,标明:

  • 色彩基色(Color primaries) —— 像素值代表哪一组 RGB 基色。HDR 内容几乎一律是 BT.2020
  • 传输函数(Transfer function) —— 存储的码值如何映射到显示亮度。两个 HDR 选项:
    • PQ(Perceptual Quantizer,感知量化器,SMPTE ST 2084 —— 一条绝对的、display-referred 曲线,覆盖 0 到 10,000 cd/m²。HDR10、HDR10+ 和 Dolby Vision 都用它。当显示器峰值低于内容峰值时需要 tone mapping,且与 SDR gamma 不向后兼容。
    • HLG(Hybrid Log-Gamma,混合对数 gamma) —— BBC 和 NHK 联合开发的 scene-referred 相对曲线。下半段是 gamma 曲线(所以 SDR 显示器也能看到一张可用的图像);上半段是对数曲线(所以 HDR 显示器能在高光部分继续延伸)。向后兼容 SDR。
  • 矩阵系数(Matrix coefficients) —— RGB 转 YUV 的转换矩阵(BT.601、BT.709、BT.2020 NCL/CL)。

实操上的意义是:一张来自最新 iPhone 的 Display P3 照片,可以全程留在 10-bit BT.2020 PQ 管线里,一直走到 AVIF 文件落盘。WebP 装不下这条信息。JPEG 装不下。AVIF 和 JPEG XL 能装;HEIC 也能。这是 AVIF 与 WebP 之间最大的功能差异。

Profile 与像素上限:Baseline vs Advanced

不是每个 AVIF 文件都能被任意 AVIF 解码器解开。规范定义了两个 profile,每个 profile 给单个被编码图像 item 设了硬性的像素上限(AVIF v1.2.0 §A.4):

Profile最大像素数最大宽度最大高度位深
Baseline8,912,8968,1924,3528 / 10
Advanced35,651,58416,3848,7048 / 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 里的动画:图像序列,而不是真正的视频

动画 AVIF 复用 ISOBMFF 的 movie box(moov 那套机制,并在 ftyp 里声明 avis brand。每一帧仍然是一个独立的 AV1 关键帧 —— AVIF 静态图 profile 里没有帧间引用 —— 所以动画 AVIF 本质上是”被容器赋予了时间戳的一串独立编码静图”,而不是真正的视频。

由此带来两个结果:

  • 同等大小下画质优于动画 GIF 或动画 WebP,因为每一帧都享受 AV1 帧内编码的红利。
  • 长序列的压缩比劣于真实视频,因为没有运动补偿。一段超过几秒的循环,用 MP4 或 WebM 装一段真正的 AV1 视频会比动画 AVIF 更小。

动画 AVIF 的浏览器支持略落后于静态 AVIF,关键场景前先做兼容性测试。

AVIF 不能做的事(以及为什么)

有些限制不是 bug,而是 AV1 设计的下游产物。

  • 没有渐进式渲染。JPEG 可以在文件下载未完成时先渲染一张粗略预览。AVIF 不行 —— AV1 的帧内编码不是围绕”质量层”设计的,没有 JPEG scan order 的对应物。Tile 可以独立解码,但那是空间维度的并行,不是质量维度的渐进。
  • 解码代价更高。所有那些预测模式、变换、in-loop 滤波器在解码端也要跑一遍。现代设备压力很小;老设备上很大的图廊可能会卡顿。
  • 图像编辑器支持参差不齐。Photoshop 25.0(2023 年 10 月)加上基础 AVIF 读取支持,2025 年 6 月版本(26.8)补齐完整的打开/编辑/保存。Affinity Photo 2 支持导入导出。更老的编辑器仍需插件或外部转换工具。
  • profile 的单 tile 像素天花板。一张 50 MP 的图不能用单 tile 编码进任何一个 profile —— 必须切网格。这对绝大多数用户透明,但对那些期望”一张图、一份编码负载”的归档工作流是个真实约束。

Mac 上怎么生成 AVIF 文件

Zipic 输出格式选择 —— 在 Mac 上把图片转成基于 AV1 的 AVIF 格式

Mac 上最简单的路径是 Zipic:把”输出格式”设成 AVIF,把任意支持的源文件拖进去,Zipic 会在后台调 libavif。如果走构建管线,用 Homebrew 装 libavifbrew 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 体验。

相关文章

相关阅读