Sur cette page

Compiler FFmpeg à partir du code source sous Linux

Cette page explique comment configurer et compiler FFmpeg sous Linux. Les étapes à suivre sont les suivantes :

  • Télécharger le code source de FFmpeg.
  • Installez les dépendances requises.
  • Configurer FFmpeg depuis la ligne de commande.
  • Compiler les bibliothèques de développement.

Obtenir le code source de FFmpeg

Vous pouvez obtenir le code source de FFmpeg de différentes manières :

  • Téléchargez-le depuis la page de téléchargement de FFmpeg.
  • Cloner depuis Git. Par exemple, cette commande clone la version 9.0.1 des sources de FFmpeg vers ~/ffmpeg.
    git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Il est recommandé d’utiliser la même version de FFmpeg que celle indiquée sur la page d’accueil deQt Multimedia .

Les paragraphes suivants partent du principe que vous stockez le code source de FFmpeg dans le répertoire ~/ffmpeg.

Prérequis

Pour compiler FFmpeg, les outils et paquets suivants sont requis :

  • Yasm.
  • Les paquets de développement pour le backend de sécurité de votre choix (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 aurez besoin du paquet de développement correspondant, par exemple :

apt-get install libssl-dev

Pour les autres backends, installez les paquets correspondants :

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

Configuration et compilation de FFmpeg

Créez un répertoire « build » à l'intérieur du répertoire « ~/ffmpeg » et accédez-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 le chemin d'accès où les bibliothèques de développement de FFmpeg seront installées après la compilation. La documentation n'est pas nécessaire, mais les fonctionnalités réseau doivent être activées. Pour compiler FFmpeg en 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 paquet de développement correspondant, comme indiqué précédemment.

Accélération matérielle

Par défaut, FFmpeg est compilé sans accélération matérielle, sauf si les paquets appropriés sont installés. Pour de meilleures performances, en particulier sur les systèmes prenant en charge les GPU, il est recommandé d’installer les paquets de développement VAAPI :

apt-get install libva-dev

Cela permettra à FFmpeg de détecter la prise en charge de VAAPI lors de la configuration.

Si FFmpeg doit être utilisé avec des cartes graphiques NVIDIA, vous devez installer les en-têtes de codecs 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 l’ nv-codec-headers avec la version de votre pilote NVIDIA, car les versions les plus récentes d’ nv-codec-headers s peuvent ne pas être compatibles avec les anciennes versions de pilotes. Reportez-vous à la documentation officielle pour plus de détails.

Désactivation de la détection automatique

Par défaut, FFmpeg tente de détecter automatiquement les dépendances disponibles sur le système de compilation. 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 l’accélération matérielle), assurez-vous que les bibliothèques requises sont installées sur le système cible. Il existe plusieurs façons de procéder :

  • Fournir les binaires des dépendances avec FFmpeg.
  • Assurez-vous que les binaires requis sont installés sur le système cible.
  • Implémenter des stubs de bibliothèques capables de rechercher les bibliothèques réelles et de renvoyer un code d’erreur si celles-ci sont introuvables.

RPATH et RUNPATH sous Linux

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

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

Par défaut, ` patchelf ` modifie le `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 leurs emplacements relatifs.

Compilation de FFmpeg

Une fois la commande ` configure ` terminée, compilez et installez FFmpeg à l’aide de la commande ` make `.

make -j install

Si la compilation se termine sans erreur, les bibliothèques de développement 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.