Erstellen von FFmpeg aus dem Quellcode für Android unter Windows

Diese Seite erklärt, wie man FFmpeg für Android konfiguriert und erstellt. Die Kompilierung für Android ist eine Cross-Kompilierung und setzt die Verwendung von Windows als Host-System voraus. Die erforderlichen Schritte sind:

  • Holen Sie sich den FFmpeg-Quellcode.
  • Installieren Sie die erforderlichen Abhängigkeiten.
  • Konfigurieren Sie FFmpeg über die Kommandozeile.
  • Erstellen Sie die Entwicklungsbibliotheken.

Beschaffung des FFmpeg-Quellcodes

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

  • Download von der FFmpeg Download-Seite.
  • Klonen von git. Zum Beispiel klont dieser Befehl die Version 7.1 der FFmpeg-Quellen nach C:\FFmpeg\ffmpeg.
    C:\FFmpeg> git clone --branch n7.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Es wird empfohlen, die gleiche FFmpeg-Version zu verwenden, wie sie auf der HauptseiteQt Multimedia dokumentiert ist.

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

Voraussetzungen

Um FFmpeg zu erstellen, werden diese Werkzeuge und Pakete benötigt:

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

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

Siehe Qt für Windows - Erstellen aus dem Quellcode für empfohlene Compiler, die auch von Qt unterstützt werden. Sie können einen unterstützten MinGW-w64 Compiler unter Qt Online Installer installieren.

Installation von MSYS2

Um MSYS2 zu installieren, können Sie:

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

Starten Sie nach der Installation die Shell MSYS2 MINGW64 aus dem Windows-Startmenü, und installieren Sie damit die erforderlichen Bibliotheken.

$ pacman -S --noconfirm make yasm

Bevor Sie FFmpeg erstellen können, muss MSYS2 einen Compiler in seinem PATH haben. Für MinGW-w64, das unter C:\Qt\Tools\mingw1310_64\bin installiert ist, können Sie es zu 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

Setzen von Umgebungsvariablen

Dieser Teil ist nicht unbedingt notwendig, aber er hilft dabei, den configure-Befehl etwas sauberer und kürzer zu halten.

Der folgende Befehl geht davon aus, dass das Andorid SDK auf C:\Users\<USER>\AppData\Local\Android\Sdk installiert ist und die Android NDK Version 26.1.10909125 ist. Vergessen Sie nicht, <USER> im Pfad durch den tatsächlichen Benutzernamen zu ersetzen.

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

Es wird empfohlen, die gleiche NDK-Version zu verwenden, wie sie in Getting Started with Qt for Android dokumentiert ist.

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

  • aarch64 (ARM64-v8a): Wird von den meisten modernen Android-Geräten (64-Bit) verwendet.
  • 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.

Architektur-spezifische 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 Erstellen 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-Artefakte enthalten wird, und navigieren Sie dorthin.

$ cd /c/FFmpeg/build-android

Um FFmpeg zu konfigurieren, führen Sie aus:

$ ../ffmpeg/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 einen Pfad an, in dem die FFmpeg-Entwicklungsbibliotheken nach der Erstellung installiert werden. Die Dokumentation wird nicht benötigt, aber die Netzwerkfunktionen sollten aktiviert sein. Um FFmpeg als statische Bibliotheken zu bauen, lassen Sie die Option --enable-shared weg.

Wenn Sie FFmpeg mit einem Sicherheits-Backend bauen, haben Sie 4 Optionen zur Auswahl (dieselben wie beim Bauen für Linux), aber nur OpenSSL wird derzeit von den QtMultimedia Maintainern getestet. Wählen Sie die entsprechende Option und fügen Sie sie während 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 auch die folgenden Optionen während der FFmpeg-Konfiguration 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 ein Sicherheits-Backend enthalten 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 OpenSSL-Bibliotheken, die gelinkt werden, müssen libssl.so und libcrypto.so heißen, ohne Versionssuffixe. Der Benutzer muss sicherstellen, dass die Bibliotheken die gleiche ABI-Version haben wie die OpenSSL-Header, mit denen FFmpeg kompiliert wurde. Weitere Informationen finden Sie unter Hinzufügen von OpenSSL-Unterstützung für Android.

Sobald der Befehl configure beendet 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 Variable FFMPEG_DIR gespeichert, die bei der Konfiguration von Qt Multimedia verwendet wird.

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