AV1 est un standard de codage vidéo ouvert développé par l'Alliance for Open Media (AOM) en 2018. Il synthétise les apports de trois projets open source : VP10 de Google, Daala de Mozilla et Thor de Cisco. Les benchmarks démontrent un gain de compression d'environ 27 % par rapport au H.265 (HEVC). Étant libre de droits et plus performant, AV1 est progressivement adopté par les principales plateformes de streaming en remplacement du HEVC.
FFmpeg prend en charge plusieurs encodeurs/décodeurs AV1 : libaom, libdav1d, libsvtav1 et librav1e. Ce guide décrit la procédure d'intégration de l'encodeur libsvtav1 dans FFmpeg sous Windows.
Compilation de SVT-AV1
Le projet SVT-AV1, initialement développé conjointement par Intel et Netflix, a été intégré officiellement par l'AOM. Le dépôt source se trouve à l'adresse https://gitlab.com/AOMediaCodec/SVT-AV1. La version v3.0.2 (mars 2025) présentant des problèmes de compilation sous Windows 10, nous utilisons la version v2.3.0 (octobre 2024), téléchargeable à l'adresse https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v2.3.0/SVT-AV1-v2.3.0.tar.gz.
Après téléchargement, copiez l'archive dans le répertoire /usr/local/src de l'environnement MSYS, puis décompressez-la :
tar xzf SVT-AV1-v2.3.0.tar.gz
cd SVT-AV1-v2.3.0
Lancez la configuration via CMake en générant une bibliothèque partagée :
cd Build
cmake -DBUILD_SHARED_LIBS=ON ..
Cette étape produit le fichier de solution Visual Studio svt-av1.sln dans le répertoire Build.
Ouvrez ensuite Visual Studio 2022, chargez la soultion svt-av1.sln, puis basculez la configuration de Debug vers Release via le menu Générer → Gestionnaire de configurations. Enfin, lancez la compilation du projet ALL_BUILD. Une fois le processus terminé, les fichiers SvtAv1Enc.lib et SvtAv1Enc.dll seront disponibles dans SVT-AV1-v2.3.0/Bin/Release.
Déploiement de libsvtav1 dans MSYS
Prérequis : MSYS2 doit être installé et configuré sur le système. Procédez ensuite à l'installation manuelle :
- Créez l'arborescence
/usr/local/libsvtav1/libdans l'environnement MSYS2. - Copiez
SvtAv1Enc.libetSvtAv1Enc.dlldepuis le répertoireBin/Releasedu projet vers ce sous-répertoirelib. - Créez le sous-répertoire
lib/pkgconfiget placez-y le ficheirSvtAv1Enc.pcsitué dansBuild/. Éditez ensuite ce fichier pour corriger le chemin du préfixe :
prefix=/usr/local/libsvtav1
- Créez l'arborescence
/usr/local/libsvtav1/include/svt-av1et copiez-y les fichiers d'en-tête du répertoireSource/APIdu projet (tels queEbSvtAv1.h,EbSvtAv1Enc.h, etc.).
La structure finale attendue :
/usr/local/libsvtav1
├── lib
│ ├── SvtAv1Enc.lib
│ ├── SvtAv1Enc.dll
│ └── pkgconfig
│ └── SvtAv1Enc.pc
└── include
└── svt-av1
├── EbSvtAv1.h
├── EbSvtAv1Enc.h
└── ...
Compilation de FFmpeg avec libsvtav1
Téléchargez les sources de FFmpeg (version ≥ 7.1) et placez l'archive dans /usr/local/src sous MSYS. Décompressez-la :
cd /usr/local/src
unzip ffmpeg-n7.1.1.zip
Assurez-vous que les bibliothèques libx264, libx265, libvvenc, SDL2, libaom et libdav1d sont déjà installées dans l'environnement MSYS. Configurez ensuite la compilation de FFmpeg en activant libsvtav1 :
cd ffmpeg-n7.1.1
export PKG_CONFIG_PATH=/usr/local/libsvtav1/lib/pkgconfig:$PKG_CONFIG_PATH
./configure \
--prefix=/usr/local/ffmpeg \
--arch=x86_64 \
--enable-shared \
--disable-static \
--disable-doc \
--enable-libx264 \
--enable-libx265 \
--enable-libvvenc \
--enable-liblc3 \
--enable-librist \
--enable-libdav1d \
--enable-libaom \
--enable-libsvtav1 \
--enable-sdl2 \
--enable-gpl \
--enable-nonfree \
--enable-iconv \
--enable-zlib \
--cross-prefix=x86_64-w64-mingw32- \
--target-os=mingw32
Lancez la compilation et l'installation, puis copiez la DLL de libsvtav1 vers le répertoire bin de FFmpeg :
make -j$(nproc)
make install
cp /usr/local/libsvtav1/lib/SvtAv1Enc.dll /usr/local/ffmpeg/bin/
Vérification de l'intégration
Contrôlez que FFmpeg reconnaît bien libsvtav1 :
ffmpeg -version
Le résultat attendu :
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-librist --enable-libdav1d --enable-libaom --enable-libsvtav1 --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
La présence de l'option --enable-libsvtav1 dans la ligne de configuration confirme que l'encodeur AV1 libsvtav1 est correctement intégré à FFmpeg.