Sur cette page

Construire FFmpeg à partir des sources pour Android sous Windows

Cette page explique comment configurer et construire 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 nécessaires sont les suivantes :

  • Obtenir le code source de FFmpeg.
  • Installer les dépendances nécessaires.
  • Configurer FFmpeg à partir de la ligne de commande.
  • Construire les bibliothèques de développement.

Obtenir le code source de FFmpeg

Vous pouvez obtenir le code source de FFmpeg de ces manières :

  • Télécharger depuis la page de téléchargement de FFmpeg.
  • Cloner à partir de git. Par exemple, cette commande clone la version 7.1.3 des sources de FFmpeg sur C:\FFmpeg\ffmpeg.
    git clone --branch n7.1.3 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Il est recommandé d'utiliser la même version de FFmpeg que celle documentée dans la page principale deQt Multimedia .

Les paragraphes suivants supposent que vous stockez le code source de FFmpeg sous C:\FFmpeg\ffmpeg.

Conditions préalables

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

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

Vous aurez également besoin des NDK, SDK et JDK Android installés et configurés. Vous pouvez trouver plus d'informations sur la configuration de ces éléments ici Getting Started with Qt for Android.

Voir Qt for Windows - Building from Source pour les compilateurs recommandés qui sont également pris en charge par Qt. Vous pouvez installer un compilateur MinGW-w64 pris en charge à l'aide du site Qt Online Installer.

Installation de MSYS2

Pour installer MSYS2, vous pouvez

Les instructions de ce document s'appuient sur l'installation de MSYS2 sur C:\msys64\, qui est le chemin par défaut lors de l'utilisation de winget.

Une fois installé, lancez le shell MSYS2 MINGW64 à partir du menu de démarrage de Windows, et utilisez-le pour installer les bibliothèques nécessaires.

pacman -S --noconfirm make yasm diffutils

Avant de construire FFmpeg, MSYS2 doit avoir un compilateur sur son site PATH. Cela se fait différemment pour MSVC et MinGW-w64. Préparez l'environnement MSYS2 pour le compilateur que vous utilisez.

Préparation de l'environnement MSYS pour la construction avec Mingw-w64

Pour MinGW-w64 installé sous C:\Qt\Tools\mingw1310_64\bin, vous pouvez l'ajouter à 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 partie n'est pas strictement nécessaire mais elle aidera à rendre la commande configure un peu plus propre et plus courte.

La commande suivante suppose que le SDK Andorid est installé sur C:\Users\<USER>\AppData\Local\Android\Sdk et que la version du NDK Android est 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 documentée dans le document Getting Started with Qt for Android.

L'architecture pour laquelle vous devez construire dépend des appareils ciblés :

  • 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 l'interpréteur de commandes MSYS2, naviguez jusqu'au répertoire /c/FFmpeg. Dans ce répertoire, créez un répertoire build-android qui contiendra les artefacts de construction de FFmpeg, et naviguez-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 un chemin où les bibliothèques de développement de FFmpeg sont installées après la construction. La documentation n'est pas nécessaire, mais les fonctionnalités réseau doivent être activées. Pour compiler FFmpeg en tant que 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 lorsque vous compilez pour Linux) mais seul OpenSSL est testé par les mainteneurs 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 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 occuper de sa livraison vous-même, en vous assurant que les bibliothèques correctes sont installées sur la plateforme cible ou en utilisant des stubs. Les bibliothèques OpenSSL qui sont liées doivent être appelées libssl.so et libcrypto.so, sans 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 lesquels FFmpeg a été compilé. Pour plus d'informations, voir Ajouter le support OpenSSL pour Android.

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

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

Pour les exigences de Google Play, voir l'exigence de compatibilité avec la taille de page de 16 Ko de 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 se termine sans erreur, les bibliothèques de développement de FFmpeg sont installées dans le répertoire C:\FFmpeg\install-android. Si vous compilez Qt Multimedia, ce chemin 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.