Sur cette page

Compiler FFmpeg à partir du code source pour Android sous Windows

Cette page explique comment configurer et compiler FFmpeg pour Android. La compilation pour Android est une compilation croisée et suppose l'utilisation de Windows comme système hôte. Les étapes à suivre sont les suivantes :

  • Procurez-vous le code source de FFmpeg.
  • Installez les dépendances requises.
  • Configurer FFmpeg à partir de la ligne de commande.
  • Compiler les bibliothèques de développement.

Obtenir le code source de FFmpeg

Vous pouvez obtenir le code source de FFmpeg de différentes manières :

  • Téléchargez-le depuis la page de téléchargement de FFmpeg.
  • Cloner depuis Git. Par exemple, cette commande clone la version 9.0.1 des sources de FFmpeg vers C:\FFmpeg\ffmpeg.
    git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Il est recommandé d’utiliser la même version de FFmpeg que celle indiquée sur la page d’accueil deQt Multimedia .

Les paragraphes suivants partent du principe que vous stockez le code source de FFmpeg dans le répertoire C:\FFmpeg\ffmpeg.

Prérequis

Pour compiler FFmpeg, les outils et paquets suivants sont nécessaires :

  • Compilateur MinGW-w64.
  • MSYS2.
  • Paquets MSYS (make, yasm).

Vous devrez également disposer de l'NDK, du SDK et du JDK Android, installés et configurés. Vous trouverez plus d'informations sur leur configuration ici : « Premiers pas avec Qt pour Android ».

Consultez la page « Qt pour Windows - Compilation à partir du code source » pour connaître les compilateurs recommandés qui sont également pris en charge par Qt. Vous pouvez installer un compilateur MinGW-w64 pris en charge à l'aide de l Qt Online Installer.

Installation de MSYS2

Pour installer MSYS2, vous pouvez :

Les instructions contenues dans ce document partent du principe que MSYS2 est installé à l'emplacement C:\msys64\, qui est le chemin d'accès par défaut lorsque vous utilisez winget.

Une fois l'installation terminée, lancez le shell « MSYS2 MINGW64 » depuis le menu Démarrer de Windows, puis utilisez-le pour installer les bibliothèques nécessaires.

pacman -S --noconfirm make yasm diffutils

Avant de compiler FFmpeg, MSYS2 doit disposer d'un compilateur dans son répertoire PATH. La procédure diffère selon que vous utilisez MSVC ou MinGW-w64. Préparez l'environnement MSYS2 en fonction du compilateur que vous utilisez.

Préparation de l’environnement MSYS pour la compilation avec MinGW-w64

Pour MinGW-w64 installé sous C:\Qt\Tools\mingw1310_64\bin, vous pouvez l'ajouter à la variable d'environnement PATH ( PATH ) en exportant la variable d'environnement PATH.

export PATH=/c/Qt/Tools/mingw1310_64/bin:$PATH

Notez qu’il est également possible d’installer MinGW-w64 à l’aide de pacman.

pacman -S mingw-w64-x86_64-toolchain

Définir les variables d’environnement

Cette étape n’est pas strictement nécessaire, mais elle permettra de rendre la commande `configure` un peu plus claire et plus concise.

La commande suivante part du principe que le SDK Android est installé dans C:\Users\<USER>\AppData\Local\Android\Sdk et que la version du NDK Android est la 26.1.10909125.

export ANDROID_NDK_ROOT=/c/Users/<USER>/AppData/Local/Android/Sdk/ndk/26.1.10909125

Il est recommandé d’utiliser la même version du NDK que celle indiquée dans le guide « Getting Started with Qt for Android ».

L'architecture pour laquelle vous devez effectuer la compilation dépend des appareils cibles :

  • aarch64 (ARM64-v8a) : utilisée par la plupart des appareils Android modernes (64 bits).
  • armv7 (armeabi-v7a) : pour les anciens appareils ARM 32 bits.
  • x86 : principalement pour les émulateurs Android fonctionnant sur des processeurs Intel.
  • x86_64 : pour les émulateurs 64 bits basés sur Intel ou les appareils spécialisés.

Configurer les variables spécifiques à l’architecture

  • aarch64
    export ARCH=aarch64
    export TOOLCHAIN_ARCH=aarch64-linux-android
    export CPU=armv8-a
  • armv7
    export ARCH=armv7
    export TOOLCHAIN_ARCH=armv7a-linux-androideabi
    export CPU=armv7-a
  • x86
    export ARCH=x86
    export TOOLCHAIN_ARCH=i686-linux-android
    export CPU=i686
  • x86_64
    export ARCH=x86_64
    export TOOLCHAIN_ARCH=x86_64-linux-android
    export CPU=x86-64

Configuration et compilation de FFmpeg

Depuis le shell MSYS2 préparé, accédez au répertoire /c/FFmpeg. Dans ce répertoire, créez un répertoire build-android qui contiendra les fichiers de compilation de FFmpeg, puis accédez-y.

cd /c/FFmpeg/build-android

Pour configurer FFmpeg, exécutez :

../configure --prefix=../install-android --disable-doc --enable-network --enable-shared \
    --host-os=windows-x86_64 --target-os=android \
    --enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
    --enable-jni --enable-mediacodec \
    --sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/sysroot \
    --sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/ \
    --cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
    --cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
    --strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip

L'argument ` --prefix ` spécifie le chemin d'accès où les bibliothèques de développement de FFmpeg seront installées après la compilation. La documentation n'est pas nécessaire, mais les fonctionnalités réseau doivent être activées. Pour compiler FFmpeg sous forme de bibliothèques statiques, omettez l'option ` --enable-shared `.

Si vous compilez FFmpeg avec un backend de sécurité, vous avez le choix entre 4 options (les mêmes que lors de la compilation pour Linux), mais seul OpenSSL est testé par les responsables de QtMultimedia pour l’instant. Choisissez l’option appropriée et ajoutez-la lors de la configuration de FFmpeg :

--enable-openssl # For OpenSSL
--enable-gnutls # For GnuTLS
--enable-libtls # For LibreSSL (libtls)
--enable-mbedtls # For MbedTLS

Si vous utilisez OpenSSL, vous devez également ajouter les options suivantes lors de la configuration de FFmpeg. N’oubliez pas de remplacer <ANDROID_OPENSSL_INCLUDE_DIR> et <ANDROID_OPENSSL_LIBS_DIR> par les chemins d’accès réels.

--extra-cflags=-I<ANDROID_OPENSSL_INCLUDE_DIR> --extra-ldflags=-L<ANDROID_OPENSSL_LIBS_DIR>

Si le backend de sécurité est inclus, vous devez vous charger vous-même de sa mise en œuvre, en vous assurant que les bibliothèques appropriées sont installées sur la plateforme cible ou en utilisant des stubs. Les bibliothèques OpenSSL liées doivent s'appeler libssl.so et libcrypto.so, sans aucun suffixe de version. L'utilisateur doit s'assurer que les bibliothèques sont de la même version ABI que les en-têtes OpenSSL avec lesquelles FFmpeg a été compilé. Pour plus d’informations, consultez la section « Ajouter la prise en charge d’OpenSSL pour Android ».

Google Play exige des tailles de page de 16 Ko ; pour créer des binaires FFmpeg compatibles, ajoutez les options de configuration suivantes à FFmpeg.

--extra-ldflags=-Wl,-z,max-page-size=16384

Pour connaître les exigences de Google Play, consultez la section « Exigence de compatibilité avec la taille de page de 16 Ko sur Google Play ».

Une fois la commande ` configure ` terminée, compilez et installez FFmpeg à l’aide de la commande ` make `.

make -j install

Si la compilation s’effectue sans erreur, les bibliothèques de développement FFmpeg sont installées dans le répertoire ` C:\FFmpeg\install-android `. Si vous compilez ` Qt Multimedia`, ce chemin d’accès est stocké dans la variable ` FFMPEG_DIR `, utilisée lors de la configuration de ` Qt Multimedia`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.