Kompilieren von FFmpeg aus dem Quellcode für Android unter Linux
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 Linux 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. Mit diesem Befehl klonen Sie beispielsweise die Version 9.0.1 der FFmpeg-Quellen nach
~/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 Erstellen von FFmpeg sind folgende Tools und Pakete erforderlich:
- Yasm.
- Entwicklerpakete für das von Ihnen gewählte Sicherheits-Backend (siehe unten).
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.
Pakete installieren
Um die erforderlichen Pakete (einschließlich Yasm für FFmpeg) zu installieren, führen Sie folgenden Befehl aus:
apt-get install yasmWenn Sie zudem ein Sicherheits-Backend aktivieren möchten, benötigen Sie das entsprechende Entwicklerpaket, zum Beispiel:
apt-get install libssl-devFür andere Backends installieren Sie die entsprechenden Pakete:
- Für OpenSSL:
libssl-dev. - Für GnuTLS:
libgnutls-dev. - Für LibreSSL (libtls):
libtls-dev. - Für MbedTLS:
libmbedtls-dev.
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 ~/Android/sdk installiert ist und die Android NDK-Version 26.1.10909125 lautet.
export ANDROID_NDK_ROOT=~/Android/sdk/ndk/26.1.10909125Es 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
Erstellen Sie im Verzeichnis „ ~/ffmpeg “ ein Verzeichnis „ build-android “ und wechseln Sie dorthin:
mkdir ~/ffmpeg/build-android
cd ~/ffmpeg/build-androidUm FFmpeg zu konfigurieren, führen Sie folgenden Befehl aus:
../configure --prefix=../install-android --disable-doc --enable-network --enable-shared \
--host-os=linux-x86_64 --target-os=android \
--enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
--enable-jni --enable-mediacodec \
--sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
--sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/ \
--cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
--cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
--strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-stripDas 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), doch derzeit wird von den „ QtMultimedia “-Betreuern nur OpenSSL 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 MbedTLSWenn 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 verwendet werden. Die verlinkten OpenSSL-Bibliotheken müssen libssl.so und libcrypto.so heißen, ohne jegliche Versionsangaben. Der Benutzer muss sicherstellen, 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=16384Informationen 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 installWenn 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.