Sur cette page

Construire FFmpeg à partir des sources sous Linux

Cette page explique comment configurer et construire FFmpeg sous Linux. Les étapes nécessaires sont les suivantes :

  • Obtenir le code source de FFmpeg.
  • Installer les dépendances nécessaires.
  • Configurer FFmpeg à partir de la ligne de commande.
  • Construire les bibliothèques de développement.

Obtenir le code source de FFmpeg

Vous pouvez obtenir le code source de FFmpeg de ces façons :

  • Télécharger depuis la page de téléchargement de FFmpeg.
  • Cloner à partir de git. Par exemple, cette commande clone la version 7.1.3 des sources de FFmpeg sur ~/ffmpeg.
    git clone --branch n7.1.3 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Il est recommandé d'utiliser la même version de FFmpeg que celle documentée dans la page principale deQt Multimedia .

Les paragraphes suivants supposent que vous stockez le code source de FFmpeg sous ~/ffmpeg.

Conditions préalables

Pour construire FFmpeg, les outils et paquets suivants sont nécessaires :

  • Yasm.
  • Les paquets du développeur pour le backend de sécurité que vous avez choisi (voir ci-dessous).

Installation des paquets

Pour installer les paquets requis (y compris Yasm pour FFmpeg), exécutez :

apt-get install yasm

De plus, si vous activez un backend de sécurité, vous avez besoin du pack développeur correspondant, par exemple :

apt-get install libssl-dev

Pour les autres backends, installez les paquets appropriés :

  • Pour OpenSSL : libssl-dev.
  • Pour GnuTLS : libgnutls-dev.
  • Pour LibreSSL (libtls) : libtls-dev.
  • Pour MbedTLS : libmbedtls-dev.

Configurer et compiler FFmpeg

Créez un répertoire build à l'intérieur du répertoire ~/ffmpeg et naviguez-y :

mkdir ~/ffmpeg/build
cd ~/ffmpeg/build

Pour configurer FFmpeg, exécutez :

../configure --prefix=/usr/local/ffmpeg --disable-doc --enable-network --enable-shared

L'argument --prefix spécifie un chemin où les bibliothèques de développement de FFmpeg sont installées après la construction. La documentation n'est pas nécessaire, mais les fonctionnalités réseau doivent être activées. Pour compiler FFmpeg en tant que bibliothèques statiques, omettez l'option --enable-shared.

Si vous compilez FFmpeg avec un backend de sécurité, choisissez l'option appropriée :

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

Assurez-vous d'avoir installé le paquetage développeur correspondant, comme mentionné plus haut.

Accélération matérielle

Par défaut, FFmpeg est construit sans accélération matérielle à moins que les paquets appropriés ne soient installés. Pour de meilleures performances, en particulier sur les systèmes avec support GPU, il est recommandé d'installer les paquets de développement VAAPI :

apt-get install libva-dev

Cela permettra à FFmpeg de détecter le support VAAPI lors de la configuration.

Si FFmpeg est utilisé avec des cartes graphiques NVIDIA, vous devez installer les en-têtes de codec NVIDIA. Ceux-ci peuvent être téléchargés à partir du dépôt suivant : NVIDIA Codec Headers sur GitHub.

Pour compiler et installer les en-têtes, exécutez les commandes suivantes :

mkdir ~/nv-codec-headers
cd ~/nv-codec-headers
git clone https://github.com/FFmpeg/nv-codec-headers.git
mkdir build
cd build
make -j install

Veillez à vérifier la compatibilité de nv-codec-headers avec la version de votre pilote NVIDIA, car les nouvelles versions de nv-codec-headers peuvent ne pas être compatibles avec les anciennes versions de pilotes. Reportez-vous à la documentation officielle pour plus de détails.

Désactiver l'autodétection

Par défaut, FFmpeg tente de détecter automatiquement les dépendances disponibles sur le système de construction. Cela inclut l'accélération matérielle et les backends de sécurité. Si vous souhaitez désactiver la détection automatique (par exemple, pour éviter de compiler des dépendances inutiles), vous pouvez utiliser :

../configure --disable-autodetect

Si vous compilez FFmpeg avec des dépendances supplémentaires (comme un backend de sécurité ou une accélération matérielle), assurez-vous que les bibliothèques nécessaires sont installées sur le système cible. Il y a plusieurs façons de gérer cela :

  • Livrer les binaires des dépendances avec FFmpeg.
  • S'assurer que les binaires nécessaires sont installés sur le système cible.
  • Implémenter des substituts de bibliothèques qui peuvent rechercher les vraies bibliothèques et retourner un code d'erreur si les vraies bibliothèques ne sont pas trouvées.

RPATH et RUNPATH sous Linux

Sous Linux, FFmpeg utilise les sections de métadonnées RPATH et RUNPATH pour gérer les chemins d'accès aux bibliothèques. Nous recommandons d'utiliser l'utilitaire patchelf pour définir le bon chemin d'exécution :

patchelf --set-rpath "new/runpath" lib.so

Par défaut, patchelf modifie le chemin d'accès RUNPATH, car RPATH est considéré comme obsolète sous Linux. Pour définir un chemin d'exécution relatif, vous pouvez utiliser la variable $ORIGIN, qui rend le chemin relatif à l'emplacement de l'exécutable :

patchelf --set-rpath "$ORIGIN/../lib" lib.so

Cette approche garantit la portabilité en liant les bibliothèques en fonction de leur emplacement relatif.

Construction de FFmpeg

Une fois la commande configure terminée, compilez et installez FFmpeg en utilisant la commande make.

make -j install

Si la compilation se termine sans erreur, les bibliothèques de développement de FFmpeg sont installées dans le répertoire /usr/local/ffmpeg. Si vous compilez Qt Multimedia, ce chemin est stocké dans la variable FFMPEG_DIR utilisée lors de la configuration de Qt Multimedia.

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