Déployer le format AVIF pour des sites Web plus réactifs

Informations sur l'adoption d'AVIF dans l'écosystème.

Jani Huoponen
Jani Huoponen
Vignesh Venkatasubramanian
Vignesh Venkatasubramanian

AVIF est un nouveau format d'image qui gagne rapidement en popularité sur le Web en raison de ses taux de compression élevés, de ses performances efficaces et de son adoption généralisée. AVIF est un format d'image ouvert, libre de droits, basé sur le codec vidéo AV1 standardisé par l'Alliance for Open Media. Cet article de blog présente l'adoption d'AVIF dans l'écosystème, ainsi que les avantages en termes de performances et de qualité que les développeurs peuvent attendre d'AVIF pour les images fixes et les animations.

Depuis l'introduction d'AVIF dans Chrome, Firefox et Safari, son utilisation sur le Web a augmenté de manière constante. Presque tous les navigateurs sont compatibles avec AVIF aujourd'hui.

Dans Chrome uniquement, l'utilisation d'AVIF est passée à environ 1 % en un peu plus d'un an après que Chrome a ajouté la prise en charge d'AVIF dans la version stable.

Graphique en courbes représentant l'utilisation du format AVIF dans Chrome entre mai 2021 et mars 2023. L'acceptation est passée de 0 % à un peu moins de 1,4 %.

De nombreux CDN d'images, tels que Akamai, Cloudflare, Cloudinary et Imgix, diffusent actuellement des images AVIF. Dans un article de blog annonçant la prise en charge d'AVIF, Imgix a indiqué une réduction de 60 % de la taille des fichiers par rapport au format JPEG et de 35 % par rapport au format WebP. Cette réduction de la taille des fichiers permet de réaliser des économies de stockage importantes, mais aussi de charger les pages plus rapidement, ce qui accélère le temps de Largest Contentful Paint (LCP). Le LCP est l'une des métriques Core Web Vitals. Il indique la rapidité avec laquelle le plus grand bloc de contenu de la page a été chargé. L'utilisation de codecs modernes pour compresser les images est l'une des techniques clés pour réduire le LCP. Lighthouse est un excellent outil pour les développeurs Chrome. Il permet de tester votre site Web et de voir quelles économies AVIF pourrait vous apporter.

WordPress est la plate-forme de site Web la plus populaire au monde. De nombreux plug-ins sont disponibles pour permettre aux développeurs de convertir leurs images au format AVIF, par exemple :

Pour les développeurs plus pratiques, des outils tels que ImageMagick et FFmpeg constituent un bon point de départ.

Vitesse d'encodage AVIF

La rapidité d'encodage et la haute qualité visuelle sont essentielles pour déployer la compression d'images à grande échelle. La vitesse d'encodage logiciel AVIF s'est considérablement améliorée au cours des deux dernières années. Par rapport aux autres formats d'images fixes modernes, AVIF produit des fichiers plus petits avec une qualité visuelle similaire (voir le graphique suivant, plus la valeur est basse, mieux c'est), mais il est également plus rapide à encoder.

Graphique à barres comparant différentes tailles de fichiers de codec d'image en pourcentage de la sortie de TurboJPEG. AVIF est le plus faible, suivi de JPEG XL, de WebP et enfin de MozJPEG.

Le graphique ci-dessous (plus le chiffre est élevé, mieux c'est) compare la vitesse d'encodage AVIF à celle d'autres formats d'image. Les codecs de génération précédente, comme WebP, bénéficient d'algorithmes de compression moins complexes (mais aussi moins efficaces). Avec un schéma d'encodage multithread, AVIF atteint des performances similaires pour les cas d'utilisation courants tout en offrant des gains de compression importants.

Comparaison de la vitesse d'encodage des codecs d'image. Les encodeurs comparés sont AVIF moyen, JPEG XL moyen, WebP moyen (un thread) et MozJPEG moyen (un thread). L'AVIF est généralement l'un des encodeurs d'images les plus rapides en termes de qualité et d'effort par défaut, mais il est le plus lent de tous les encodeurs en termes de performances instantanées.

Pour les développeurs qui souhaitent comparer plus précisément la vitesse d'encodage et la qualité visuelle, le site Image Coding Comparisons contient des résultats de benchmark reproductibles.

Bien que les implémentations logicielles des codecs d'image modernes tels que AVIF et WebP soient optimisées pour les architectures de processeurs x86 et ARM, la compression de grandes quantités d'images à grande échelle peut être coûteuse en termes de calcul. Une autre option pour réduire les coûts de compression consiste à explorer l'accélération matérielle. Bluedot a développé un encodeur Pulsar-AVIF accéléré par du matériel qui s'exécute sur des FPGA programmables, tels que l'Alveo U250 d'AMD. Par rapport au format avifenc basé sur un logiciel, Pulsar-AVIF offre une vitesse 7 à 23 fois supérieure, avec une efficacité de compression similaire.

Encodeur Temps d'encodage (ms) Images par seconde Utilisation du processeur Caractéristiques matérielles
Pulsar-AVIF
(FPGA)
60 409,85 305 % AMD Alveo U250 1 unité + Intel(R) Xeon(R)
Platinum 8171 à 2,6 GHz, 10 cœurs
avifenc
(libaom)
405 59,26 3 200 % Processeur Intel(R) Xeon(R) Platinum 8370C à
2,8 GHz, 32 cœurs
avifenc
(SVT-AV1)
1 325 18.11 3 200 % Processeur Intel(R) Xeon(R) Platinum 8370C à
2,8 GHz, 32 cœurs
Comparaison de la vitesse d'encodage AVIF
  • Ensemble de test: Kodak (24 images de 768 x 512)
  • Encodage de 24 images simultanément (24 processus)
  • Chaque processus d'encodage logiciel est exécuté avec quatre threads. (-j 4)


Les développeurs peuvent déployer l'encodeur Pulsar-AVIF avec des machines virtuelles cloud, telles que la série NP d'Azure.

Fonctionnalités AVIF pour les pages Web responsives

AVIF présente quelques fonctionnalités intéressantes qui permettent de créer des pages Web plus réactives. Cette fois, nous allons nous intéresser aux fichiers AVIF animés, qui sont de loin le moyen le plus efficace de diffuser des animations sympas sur le Web.

Fichier AVIF animé

Le GIF animé est toujours un format populaire pour les images animées, bien qu'il ait 35 ans. Les principaux inconvénients des GIF animés sont la prise en charge de 256 couleurs uniquement et une mauvaise compression, ce qui entraîne des tailles de fichiers très volumineuses, tout en limitant la résolution ou la fréquence d'images pour les cas d'utilisation pratiques. En revanche, le codage AVIF animé est en fait identique au schéma de codage vidéo AV1, qui permet de réduire considérablement la taille des fichiers par rapport au GIF animé.

Nous avons effectué un benchmark simple dans lequel nous avons encodé un ensemble de GIF animés au format AVIF et JPEG XL. Sur l'ensemble de test, le pourcentage moyen d'économie de taille de fichier était d'environ 86 % par rapport aux fichiers GIF d'origine et d'environ 73 % par rapport aux fichiers JPEG XL animés*.

Comparaison des performances des codecs d'images animées. AVIF surpasse GIF et JPEG XL en termes de taille de fichier moyenne et médiane.
* Versions libavif et libjxl : libavif version 4cff6a3 (libaom version 3.5.0), libjxl version 176b1c03. Ensemble de test : 15 exemples de GIF tirés de Wikipédia.

Chrome, Firefox et Safari sont tous compatibles avec la lecture d'animations AVIF.

FFmpeg est un outil permettant de créer des fichiers AVIF animés. Voici un exemple de conversion de GIF en AVIF à l'aide de FFmpeg :

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

$CRF est la qualité de sortie souhaitée sur une échelle de 0 à 63. Plus la valeur est faible, meilleure est la qualité et plus le fichier est volumineux. 0 utilise une compression sans perte. Commencez par une valeur de 23 pour les petits fichiers AVIF animés.

FFmpeg utilise par défaut libaom pour encoder les images AVIF, mais il peut également utiliser rav1e ou SVT-AV1, le cas échéant. Pour en savoir plus sur les choix d'encodeur et l'ajustement des paramètres d'encodage en fonction du compromis vitesse/qualité, consultez le guide d'encodage AV1 de FFmpeg.

Un autre cas d'utilisation consiste à réempaqueter une vidéo AV1 au format AVIF sans réencoder le fichier d'origine. Cette méthode est beaucoup moins coûteuse que le décodage/l'encodage du fichier AV1 d'origine et permet d'utiliser la vidéo AV1 avec l'élément <img>. Pour ce faire, vous pouvez transmettre -c:v copy à FFmpeg.

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

Conclusions

L'utilisation d'AVIF sur le Web a augmenté de manière constante depuis son lancement et est largement prise en charge par les navigateurs, les CDN d'images, les plug-ins WordPress et les outils d'encodage. Globalement, AVIF constitue un excellent choix pour diffuser des images sur le Web. Il est rapide à encoder et à décoder tout en offrant la meilleure qualité ou la plus petite taille de fichier, selon ce que vous préférez pour votre site Web. AVIF est le moyen le plus efficace de diffuser des animations sur le Web. Si vous avez des questions, des commentaires ou des demandes de fonctionnalités, veuillez nous contacter sur la liste de discussion av1-discuss, la communauté GitHub AOM et le wiki AVIF.

Image héros tirée de Unsplash, par Amal S .