AVIF をデプロイしてウェブサイトの応答性を高める

AVIF がエコシステムでどのように採用されているかに関する最新情報。

Jani Huoponen
Jani Huoponen
Vignesh Venkatasubramanian
Vignesh Venkatasubramanian

AVIF は、高い圧縮率、効率的なパフォーマンス、幅広く採用されていることから、ウェブで急速に人気が高まっている新しい画像形式です。AVIF は、Alliance for Open Media によって標準化された AV1 動画コーデックに基づく、オープンでロイヤリティ フリーの画像形式です。このブログ投稿では、AVIF がエコシステムにどのように採用されているか、静止画像とアニメーションで AVIF を使用するとデベロッパーがどのようなパフォーマンスと品質のメリットを得られるかについて概説します。

Chrome、Firefox、Safari で AVIF が導入されて以来、ウェブでの AVIF の使用は着実に増加しています。現在、ほとんどのブラウザが AVIF をサポートしています。

Chrome だけでも、Chrome が Stable 版で AVIF サポートを追加してから 1 年弱で、AVIF の使用率は約 1% にまで増加しました。

2021 年 5 月から 2023 年 3 月までの Chrome での AVIF の使用状況を示す折れ線グラフ。支持率は 0% から 1.4% 未満まで着実に増加しています。

現在、AkamaiCloudflareCloudinaryImgix などの多数の画像 CDN が AVIF 画像を提供しています。AVIF のサポートを発表したブログ投稿で、Imgix は JPEG と比較してファイルサイズが 60%、WebP と比較して 35% 削減されると報告しています。ファイルサイズを削減することで、ストレージを大幅に節約できるだけでなく、ページの読み込みが速くなり、Largest Contentful Paint(LCP)時間が短縮されます。LCP は Core Web Vitals の 1 つで、ページ上の最大のコンテンツ ブロックが読み込まれた速さを表します。最新のコーデックを使用して画像を圧縮することは、LCP を短縮するための主な手法の一つです。Lighthouse は、ウェブサイトをテストしたり、AVIF によるコスト削減額を確認したりするための Chrome デベロッパー ツールです。

WordPress は世界で最も人気のあるウェブサイト プラットフォームです。デベロッパーが画像を AVIF に変換するために利用できるプラグインは、次のようなものです。

実践的なデベロッパーの場合は、ImageMagickFFmpeg などのツールの使用をおすすめします。

AVIF エンコード速度

画像圧縮を大規模にデプロイするには、高速なエンコード速度と優れた画質が重要です。AVIF ソフトウェアのエンコード速度は、過去 2 年間で大幅に向上しています。他の最新の静止画像形式と比較して、AVIF では画質が同等でファイルサイズが小さくなります(次のグラフを参照。小さいほど良い)。また、エンコードが速いことも特徴です。

さまざまな画像コーデックのファイルサイズを TurboJPEG の出力の割合で比較した棒グラフ。AVIF が最も低く、次に JPEG XL、WebP、MozJPEG の順に低くなります。

下のグラフ(高いほど良い)は、AVIF のエンコード速度を他の画像形式と比較したものです。WebP などの前世代のコーデックは、複雑さの少ない(ただし効率の低い)圧縮アルゴリズムを利用しています。マルチスレッド エンコード スキームにより、AVIF は一般的なユースケースで同様のパフォーマンスを実現しながら、大幅な圧縮率の向上を実現します。

画像コーデックのエンコード速度の比較。比較対象のエンコーダは、平均的な AVIF、平均的な JPEG XL、平均的な WebP(1 スレッド)、平均的な MozJPEG(1 スレッド)です。一般に、AVIF は最高の品質とデフォルトのエフォートにおいて最速の画像エンコーダの 1 つですが、オンザフライのパフォーマンスではすべてのエンコーダの中で最も遅くなります。

エンコード速度と画質の詳細な比較に関心をお持ちのデベロッパーは、画像コーディングの比較サイトで、再現可能なベンチマーク結果を確認できます。

AVIF や WebP などの最新の画像コーデックのソフトウェア実装は、x86 プロセッサ アーキテクチャと ARM プロセッサ アーキテクチャ用に最適化されていますが、大量の画像を大規模に圧縮すると、計算コストが高くなる可能性があります。圧縮費用を削減する方法の一つとして、ハードウェア アクセラレーションがあります。Bluedot は、AMD の Alveo U250 などのプログラム可能な FPGA で動作するハードウェア アクセラレーション Pulsar-AVIF エンコーダを開発しました。ソフトウェアベースの avifenc と比較して、Pulsar-AVIF は同様の圧縮効率で速度が 7~23 倍向上します。

エンコーダ エンコード時間(ミリ秒) フレーム/秒 CPU 使用率 ハードウェアの仕様
Pulsar-AVIF
(FPGA)
60 409.85 305% AMD Alveo U250 1 個 + Intel(R) Xeon(R)
2.6 GHz、10 コアの Platinum 8171 CPU
avifenc
(libaom)
405 59.26 3,200% Intel(R) Xeon(R) Platinum 8370C CPU
2.8 GHz、32 コア
avifenc
(SVT-AV1)
1325 18.11 3200% Intel(R) Xeon(R) Platinum 8370C CPU
2.8 GHz、32 コア
AVIF エンコード速度の比較
  • テストセット: Kodak(768x512 の画像 24 枚)
  • 24 の画像を同時にエンコード(24 プロセス)
  • 各ソフトウェア エンコード プロセスは 4 つのスレッドで実行されます。(-j 4)


デベロッパーは、Azure NP-Series などのクラウド仮想マシンを使用して Pulsar-AVIF エンコーダをデプロイできます。

レスポンシブ ウェブページ向けの AVIF 機能

AVIF には、ウェブページの応答性を高めるのに役立つ興味深い機能がいくつかあります。今回はアニメーション AVIF について詳しく説明します。アニメーション AVIF は、ウェブに魅力的なアニメーションを配信する最も効率的な方法です。

アニメーション AVIF

アニメーション GIF は、35 年の歴史を誇るにもかかわらず、今でもアニメーション画像用の人気のフォーマットです。アニメーション GIF の最大のデメリットは、256 色のみのサポートと圧縮の低さにより、ファイルサイズが非常に大きくなり、実用的なユースケースでは解像度やフレームレートが制限されることです。一方、アニメーション AVIF コーディングは、実際には AV1 動画コーディング スキームと同じであり、アニメーション GIF と比較してファイルサイズを大幅に削減できます。

簡単なベンチマークを実行し、一連のアニメーション GIF を AVIF と JPEG XL の両方にエンコードしました。テストセット全体では、元の GIF ファイルと比較してファイルサイズの削減率の中央値は約 86%、アニメーション JPEG XL ファイルと比較して約 73% でした*。

アニメーション画像コーデックのパフォーマンスの比較。AVIF は、平均ファイルサイズと中央値の両方において、GIF と JPEG XL よりも優れています。
* libavif と libjxl のバージョン: libavif バージョン 4cff6a3(libaom バージョン v3.5.0)、libjxl バージョン 176b1c03。テストセット: Wikipedia の 15 個の GIF サンプル。

Chrome、Firefox、Safari はすべて、アニメーション AVIF 再生をサポートしています。

FFmpeg は、アニメーション AVIF ファイルの作成に使用できるツールの 1 つです。FFmpeg を使用して GIF を AVIF に変換する基本的な例を次に示します。

ffmpeg -i "$INPUT_GIF" -crf $CRF -b:v 0 "$OUTPUT.avif"

$CRF は、063 のスケールで目的の出力の品質です。値が小さいほど品質が高くなり、ファイルサイズが大きくなります。0可逆圧縮を使用します。小さなアニメーション化された AVIF ファイルの場合は、23 の値から始めます。

FFmpeg は、デフォルトで libaom を使用して AVIF 画像をエンコードしますが、利用可能な場合は rav1e または SVT-AV1 を使用することもできます。エンコーダの選択や、速度と品質のトレードオフに合わせたエンコード パラメータの調整について詳しくは、FFmpeg の AV1 エンコード ガイドをご覧ください。

別のユースケースとしては、元のファイルを再エンコードせずに、AV1 動画を AVIF に再パッケージ化することもできます。これは元の AV1 ファイルをデコード / エンコードするよりもはるかに低コストで、AV1 動画を <img> 要素で使用できるようになります。FFmpeg に -c:v copy を渡すことで、この処理を行うことができます。

ffmpeg -i "$INPUT_AV1_VIDEO" -c:v copy -an "$OUTPUT.avif"

まとめ

ウェブでの AVIF の使用はリリース以来着実に増加しており、ブラウザ、画像 CDN、WordPress プラグイン、エンコード ツールで広くサポートされています。総じて、AVIF はウェブで画像を提供する際に最適な選択肢です。AVIF はエンコードとデコードが高速で、ウェブサイトに応じて最高の画質または最小のファイルサイズを提供できます。AVIF は、ウェブにアニメーションを配信する最も効率的な方法です。質問、コメント、機能リクエストがある場合は、av1-discuss メーリング リストAOM GitHub コミュニティAVIF ウィキからお問い合わせください。

UnsplashAmal S によるヒーロー画像。