Auf dieser Seite

FFmpeg aus dem Quellcode für Android unter macOS 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 die Verwendung von macOS 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 den Quellcode aus Git. Dieser Befehl klont beispielsweise die Version 9.0.1 der FFmpeg-Quellen in das Verzeichnis „ ~/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 ~/ffmpeg ablegen.

Voraussetzungen

Zum Kompilieren von FFmpeg sind folgende Tools und Pakete erforderlich:

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.

Homebrew installieren

Um Homebrew zu installieren, führen Sie folgenden Befehl aus:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Installation von Homebrew-Paketen

Um das Homebrew-Paket Yasm zu installieren, führen Sie folgenden Befehl aus:

brew install yasm

Umgebungsvariablen setzen

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

Der folgende Befehl setzt voraus, dass das Android SDK unter ~/Library/Android/sdk installiert ist und die Android NDK-Version 26.1.10909125 lautet.

export ANDROID_NDK_ROOT=~/Library/Android/sdk/ndk/26.1.10909125

Es wird empfohlen, dieselbe NDK-Version zu verwenden, wie sie in der Dokumentation „Erste Schritte mit Qt für Android“ angegeben 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

Erstellen Sie im Verzeichnis „ ~/ffmpeg “ ein Verzeichnis „ build-android “ und wechseln Sie dorthin:

mkdir ~/ffmpeg/build-android
cd ~/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=darwin-x86_64 --target-os=android \
    --enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
    --enable-jni --enable-mediacodec \
    --sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot \
    --sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/ \
    --cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
    --cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
    --strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip

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

Wenn Sie FFmpeg mit einem Sicherheits-Backend kompilieren, stehen Ihnen 4 Optionen zur Auswahl (genau wie beim Kompilieren 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 Versionszusätze. Der Benutzer muss gewährleisten, dass die Bibliotheken dieselbe 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“.

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