FFmpeg aus dem Quellcode unter Linux kompilieren
Auf dieser Seite wird erläutert, wie man FFmpeg unter Linux konfiguriert und kompiliert. Die erforderlichen Schritte sind:
- Laden Sie den FFmpeg-Quellcode herunter.
- Installieren Sie die erforderlichen Abhängigkeiten.
- Konfigurieren Sie FFmpeg über die Befehlszeile.
- Kompilieren Sie die Entwicklungsbibliotheken.
Beziehen Sie den FFmpeg-Quellcode
Sie können den FFmpeg-Quellcode auf folgende Weise beziehen:
- Laden Sie ihn von der FFmpeg-Downloadseite herunter.
- Klonen Sie den Quellcode aus Git. Mit diesem Befehl klonen Sie 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 speichern.
Voraussetzungen
Zum Erstellen von FFmpeg sind folgende Tools und Pakete erforderlich:
- Yasm.
- Entwicklerpakete für das von Ihnen gewählte Sicherheits-Backend (siehe unten).
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.
Konfigurieren und Erstellen von FFmpeg
Erstellen Sie im Verzeichnis „ ~/ffmpeg “ ein Verzeichnis „ build “ und wechseln Sie in dieses Verzeichnis:
mkdir ~/ffmpeg/build
cd ~/ffmpeg/buildUm FFmpeg zu konfigurieren, führen Sie folgenden Befehl aus:
../configure --prefix=/usr/local/ffmpeg --disable-doc --enable-network --enable-sharedDas 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 kompilieren, wählen Sie die entsprechende Option:
../configure --enable-openssl # For OpenSSL
../configure --enable-gnutls # For GnuTLS
../configure --enable-libtls # For LibreSSL (libtls)
../configure --enable-mbedtls # For MbedTLSStellen Sie sicher, dass Sie das entsprechende Entwicklerpaket, wie zuvor erwähnt, installiert haben.
Hardwarebeschleunigung
Standardmäßig wird FFmpeg ohne Hardwarebeschleunigung kompiliert, sofern nicht die entsprechenden Pakete installiert sind. Für eine bessere Leistung, insbesondere auf Systemen mit GPU-Unterstützung, wird empfohlen, die VAAPI-Entwicklungspakete zu installieren:
apt-get install libva-devDadurch kann FFmpeg während der Konfiguration die VAAPI-Unterstützung erkennen.
Wenn FFmpeg mit NVIDIA-Grafikkarten verwendet werden soll, sollten Sie die NVIDIA-Codec-Header installieren. Diese können aus dem folgenden Repository heruntergeladen werden: NVIDIA Codec Headers auf GitHub.
Um die Header zu kompilieren und zu installieren, führen Sie die folgenden Befehle aus:
mkdir ~/nv-codec-headers
cd ~/nv-codec-headers
git clone https://github.com/FFmpeg/nv-codec-headers.git
mkdir build
cd build
make -j installStellen Sie sicher, dass die Kompatibilität der „ nv-codec-headers “ mit Ihrer NVIDIA-Treiberversion überprüft wird, da neuere „ nv-codec-headers “ möglicherweise nicht mit älteren Treiberversionen kompatibel sind. Weitere Details finden Sie in der offiziellen Dokumentation.
Automatische Erkennung deaktivieren
Standardmäßig versucht FFmpeg, verfügbare Abhängigkeiten auf dem Build-System automatisch zu erkennen. Dazu gehören Hardwarebeschleunigung und Sicherheits-Backends. Wenn Sie die automatische Erkennung deaktivieren möchten (beispielsweise, um das Kompilieren unnötiger Abhängigkeiten zu vermeiden), können Sie folgenden Befehl verwenden:
../configure --disable-autodetectWenn Sie FFmpeg mit zusätzlichen Abhängigkeiten (wie einem Sicherheits-Backend oder Hardwarebeschleunigung) kompilieren, stellen Sie sicher, dass die erforderlichen Bibliotheken auf dem Zielsystem installiert sind. Hierfür gibt es mehrere Möglichkeiten:
- Liefern Sie Binärdateien der Abhängigkeiten zusammen mit FFmpeg aus.
- Stellen Sie sicher, dass die erforderlichen Binärdateien auf dem Zielsystem installiert sind.
- Implementieren Sie Bibliotheks-Stubs, die nach den eigentlichen Bibliotheken suchen und einen Fehlercode zurückgeben, wenn diese nicht gefunden werden.
RPATH und RUNPATH unter Linux
Unter Linux nutzt FFmpeg sowohl den RPATH- als auch den RUNPATH-Metadatenabschnitt, um Bibliothekspfade zu verwalten. Wir empfehlen, das Dienstprogramm „ patchelf “ zu verwenden, um den korrekten Runpath festzulegen:
patchelf --set-rpath "new/runpath" lib.soStandardmäßig ändert „ patchelf “ den RUNPATH, da RPATH unter Linux als veraltet gilt. Um einen relativen Runpath festzulegen, können Sie die Variable „ $ORIGIN “ verwenden, wodurch der Pfad relativ zum Speicherort der ausführbaren Datei wird:
patchelf --set-rpath "$ORIGIN/../lib" lib.soDieser Ansatz gewährleistet Portabilität, indem Bibliotheken basierend auf ihren relativen Speicherorten verknüpft werden.
FFmpeg kompilieren
Sobald der Befehl „ configure “ abgeschlossen ist, kompilieren und installieren Sie FFmpeg mit dem Befehl „ make “.
make -j installWenn der Kompilierungsvorgang ohne Fehler abgeschlossen wird, werden die FFmpeg-Entwicklungsbibliotheken im Verzeichnis „ /usr/local/ffmpeg “ installiert. Wenn Sie „ Qt Multimedia “ kompilieren, 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.