AVIFエンコード・チートシート(実務デフォルト集)
AVIFは圧縮効率と画質保全に優れますが、用途で最適解が違います。本稿はavifenc(libavif)の実務デフォルトを用途別に整理。迷いなく始められるスタート値と、 破綻が出たときの調整方針を1枚にまとめました。
関連ガイド
要点(TL;DR:用途別・最小セット)
用途 | cq-level(低ほど高品質) | サブサンプリング | bit深度 | speed | 備考 |
---|---|---|---|---|---|
写真(汎用) | 28–34 | 4:2:0 | 8bit | --speed 6 | まずはここから。厳しい絵は30未満に。 |
写真(高品質) | 24–28 | 4:2:0 | 10bit | --speed 4–6 | グラデ・夜景のバンディングに10bitが効く。 |
UI/テキスト混在 | 18–26 | 4:4:4 | 8bit | --speed 6 | 色にじみ防止。シャープ系は4:4:4が安全。 |
透過(アルファ) | color: 20–30 / alpha: 16–24 | 4:4:4 | 8bit | --speed 6 | アルファは独立量子化。段差が出たらalpha側を下げる。 |
※ cq-level
は 0(最高品質)〜63(最低)。speed
は小さいほど高品質/低速。
avifenc(libavif)のコマンド例
# 写真(汎用) avifenc input.jpg output.avif --min 0 --max 63 --cq-level 30 --speed 6 --yuv 420 # 写真(高品質・グラデ保護) avifenc input.jpg output.avif --cq-level 26 --speed 5 --yuv 420 --depth 10 # UI/テキスト混在(色にじみ防止) avifenc input.png output.avif --cq-level 22 --speed 6 --yuv 444 # 透過(アルファ量子化を別指定) avifenc input.png output.avif --cq-level 24 --aq-mode 0 --yuv 444 --alpha --alpha-cq-level 20
透明は --alpha
と --alpha-cq-level
を併用。--yuv
は 420/422/444。 破綻が出たら cq
を下げる(数値を小さく)か、10bit化を検討。
画質トラブルと対策
- バンディング:
--depth 10
+cq
を2–4下げ、必要なら微小ノイズ付加。 - 色にじみ:UI/文字は
--yuv 444
。改善しなければ PNG / WebP Lossless。 - 輪郭のギザ:軽いアンシャープ(半径0.4–0.6 / 量30–60%)→ 再エンコード。
運用Tips
- 配信はコンテンツネゴシエーションよりビルド時自動生成(AVIF+WebP+JPEG)が安全。
- OGP/メールは JPEG/PNG を併用(互換のため)。
- レスポンシブは srcset/sizes を厳密に。LCPは
priority
+fetchpriority="high"
。
公開前チェック(10項目)
- 用途分類が適切(写真/UI/透過)。
- 写真は yuv=420・UIは yuv=444 を基本に。
- グラデ/夜景に10bitが必要か検討。
- 実表示幅の1.0–1.5倍以内で出力(過大解像度なし)。
- 文字/縁のにじみがない(必要なら4:4:4/可逆)。
- CLSゼロ:
width/height
明示、広告はプレースホルダで高さ確保。 - srcset/sizesが実幅と一致、余剰ダウンロードなし。
- Before/After を /compare で確認。
- OGPは sRGB/8bit/JPEG で再圧縮耐性あり。
- 指紋(v2 等)でキャッシュ更新を担保。
まとめ:まずは“用途別デフォルト”から
迷ったら本チートシートの出発点で始め、破綻が見えたらcq・bit深度・yuvを小さく動かして詰める。仕上げは /compressor と /compare で “見え” と “重さ” を同時に最適化しましょう。