Auf dieser Seite

FFmpeg aus dem Quellcode für Android unter Windows kompilieren

Auf dieser Seite wird erläutert, wie man FFmpeg für Android konfiguriert und kompiliert. Die Kompilierung für Android erfolgt als Cross-Kompilierung und setzt Windows als Host-System voraus. Die erforderlichen Schritte sind:

  • Laden Sie den FFmpeg-Quellcode herunter.
  • Installieren Sie die erforderlichen Abhängigkeiten.
  • Konfigurieren Sie FFmpeg über die Befehlszeile.
  • Erstellen Sie die Entwicklungsbibliotheken.

Beziehen Sie den FFmpeg-Quellcode

Sie können den FFmpeg-Quellcode auf folgende Weise beziehen:

  • Laden Sie ihn von der FFmpeg-Download-Seite herunter.
  • Klonen Sie ihn aus Git. Dieser Befehl klont beispielsweise die Version 9.0.1 der FFmpeg-Quellen unter C:\FFmpeg\ffmpeg.
    git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Es wird empfohlen, dieselbe FFmpeg-Version zu verwenden, wie sie auf der Hauptseite vonQt Multimedia dokumentiert ist.

In den folgenden Abschnitten wird davon ausgegangen, dass Sie den FFmpeg-Quellcode unter C:\FFmpeg\ffmpeg ablegen.

Voraussetzungen

Zum Erstellen von FFmpeg sind folgende Tools und Pakete erforderlich:

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

Außerdem müssen das Android NDK, das SDK und das JDK installiert und konfiguriert sein. Weitere Informationen zur Einrichtung finden Sie hier: Erste Schritte mit Qt für Android.

Empfohlene Compiler, die auch von Qt unterstützt werden, finden Sie unter „Qt für Windows – Kompilieren aus dem Quellcode “. Sie können einen unterstützten MinGW-w64-Compiler über das „ Qt Online Installer “ installieren.

Installation von MSYS2

Um MSYS2 zu installieren, haben Sie folgende Möglichkeiten:

Die Anweisungen in diesem Dokument gehen davon aus, dass MSYS2 unter „ C:\msys64\ “ installiert ist. Dies ist der Standardpfad bei Verwendung von „ winget “.

Starten Sie nach der Installation die Shell unter MSYS2 MINGW64 über das Windows-Startmenü und installieren Sie damit die erforderlichen Bibliotheken.

pacman -S --noconfirm make yasm diffutils

Vor dem Kompilieren von FFmpeg muss MSYS2 über einen Compiler im Verzeichnis „ PATH “ verfügen. Dies erfolgt für MSVC und MinGW-w64 unterschiedlich. Bereiten Sie die MSYS2-Umgebung für den von Ihnen verwendeten Compiler vor.

Vorbereitung der MSYS-Umgebung für die Kompilierung mit MinGW-w64

Für MinGW-w64, das unter „ C:\Qt\Tools\mingw1310_64\bin “ installiert ist, können Sie es zur „ PATH “ hinzufügen, indem Sie die Umgebungsvariable PATH exportieren.

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

Beachten Sie, dass es auch möglich ist, MinGW-w64 mit pacman zu installieren.

pacman -S mingw-w64-x86_64-toolchain

Umgebungsvariablen setzen

Dieser Schritt ist nicht unbedingt erforderlich, trägt jedoch dazu bei, den `configure`-Befehl etwas übersichtlicher und kürzer zu gestalten.

Der folgende Befehl setzt voraus, dass das Android SDK unter C:\Users\<USER>\AppData\Local\Android\Sdk installiert ist und die Android NDK-Version 26.1.10909125 lautet.

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

Es wird empfohlen, dieselbe NDK-Version zu verwenden, wie sie in der Anleitung „Erste Schritte mit Qt für Android“ dokumentiert ist.

Die Architektur, für die Sie kompilieren sollten, hängt von den Zielgeräten ab:

  • aarch64 (ARM64-v8a): Wird von den meisten modernen Android-Geräten verwendet (64-Bit).
  • armv7 (armeabi-v7a): Für ältere 32-Bit-ARM-Geräte.
  • x86: Hauptsächlich für Android-Emulatoren, die auf Intel-Prozessoren laufen.
  • x86_64: Für 64-Bit-Emulatoren auf Intel-Basis oder spezielle Geräte.

Architekturspezifische Variablen einrichten

  • 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

Konfigurieren und Kompilieren von FFmpeg

Wechseln Sie in der vorbereiteten MSYS2-Shell in das Verzeichnis „ /c/FFmpeg “. Erstellen Sie in diesem Verzeichnis ein Verzeichnis „ build-android “, das die FFmpeg-Build-Ergebnisse enthalten wird, und wechseln Sie in dieses Verzeichnis.

cd /c/FFmpeg/build-android

Um FFmpeg zu konfigurieren, führen Sie folgenden Befehl aus:

../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

Das Argument „ --prefix “ gibt den Pfad an, in dem die FFmpeg-Entwicklungsbibliotheken nach dem Erstellen installiert werden. Die Dokumentation wird nicht benötigt, aber die Netzwerkfunktionen sollten aktiviert sein. Um FFmpeg als statische Bibliotheken zu erstellen, lassen Sie die Option „ --enable-shared “ weg.

Wenn Sie FFmpeg mit einem Sicherheits-Backend erstellen, stehen Ihnen 4 Optionen zur Auswahl (genau wie beim Erstellen für Linux), aber derzeit wird nur OpenSSL von den QtMultimedia -Betreuern getestet. Wählen Sie die passende Option aus und fügen Sie sie bei der FFmpeg-Konfiguration hinzu:

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

Wenn Sie OpenSSL verwenden, müssen Sie bei der FFmpeg-Konfiguration außerdem die folgenden Optionen hinzufügen. Vergessen Sie nicht, <ANDROID_OPENSSL_INCLUDE_DIR> und <ANDROID_OPENSSL_LIBS_DIR> durch die tatsächlichen Pfade zu ersetzen.

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

Wenn das Sicherheits-Backend eingebunden ist, sollten Sie sich selbst um dessen Bereitstellung kümmern und sicherstellen, dass die richtigen Bibliotheken auf der Zielplattform installiert sind, oder Stubs verwenden. Die verknüpften OpenSSL-Bibliotheken müssen „ libssl.so “ und „ libcrypto.so “ heißen, ohne Versionsangaben. Der Benutzer muss gewährleisten, dass die Bibliotheken dieselbe ABI-Version aufweisen wie die OpenSSL-Header, mit denen FFmpeg kompiliert wurde. Weitere Informationen finden Sie unter „Hinzufügen von OpenSSL-Unterstützung für Android“.

Google Play verlangt eine Seitengröße von 16 KB. Um kompatible FFmpeg-Binärdateien zu erstellen, fügen Sie FFmpeg die folgenden Konfigurationsoptionen hinzu.

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

Informationen zu den Google-Play-Anforderungen finden Sie unter „Google Play – Kompatibilitätsanforderung für eine Seitengröße von 16 KB“.

Sobald der Befehl „ configure “ abgeschlossen ist, erstellen und installieren Sie FFmpeg mit dem Befehl „ make “.

make -j install

Wenn der Build ohne Fehler abgeschlossen wird, werden die FFmpeg-Entwicklungsbibliotheken im Verzeichnis „ C:\FFmpeg\install-android “ installiert. Wenn Sie „ Qt Multimedia “ erstellen, wird dieser Pfad in der Variablen „ FFMPEG_DIR “ gespeichert, die bei der Konfiguration von „ Qt Multimedia “ verwendet wird.

© 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.