Documentation technique : Debian
Documentation basée sur la distribution Debian

> > Compiler FFmpeg et qt-faststart

Compiler FFmpeg et qt-faststart

Prérequis

Avant de commencer, il est nécessaire de désinstaller le paquet ffmpeg s’il est déjà installé en utilisant cette commande :

  1. sudo apt-get remove ffmpeg

Il est ensuite nécessaire de vérifier que lame (qui sert à la gestion du format mp3) est correctement installé et avoir le nécessaire pour compiler :

NB : Il est nécessaire sur Debian d’ajouter le dépot Debian-multimedia dans votre fichier /etc/apt/sources.list comme ici. Sur certaines architecture, le dépôt Debian backports est également nécessaire. Sur Ubuntu il est nécessaire d’activer les dépots universe et multiverse

  1. sudo apt-get install git build-essential checkinstall lame libmp3lame-dev libvorbis-dev libxvidcore4-dev libfaac-dev  libfaad2-0 libtheora-dev libdirac-dev libvdpau-dev libopenjpeg-dev libopencore-amrwb-dev libopencore-amrnb-dev libgsm1-dev libschroedinger-dev libspeex-dev libopenal-dev libcelt-dev

Afin de disposer de la majorité des encodeurs et décodeurs possibles, il est nécessaire également d’installer manuellement certaines librairies supplémentaires comme expliqué dans ce tutoriel.

La récupération des sources

Il est dorénavant nécessaire de récupérer les sources du logiciel, pour ce faire nous allons utiliser git afin d’être à jour.

  1. #On se rend tout d'abord dans notre home
  2. cd ~
  3. #Puis on récupère les sources dans le répertoire ffmpeg
  4. git clone git://git.videolan.org/ffmpeg.git

Télécharger

Cela créera un répertoire ffmpeg dans lequel seront disponibles les sources pour la compilation.

Pour le futur, il sera très simple de mettre à jour ces sources pour de nouvelles compilations en utilisant la commande suivante dans le répertoire de ffmpeg :

  1. git pull

La configuration

Pour configurer avant la compilation les sources, il est tout d’abord nécessaire de se trouver dans le répertoire des sources :

  1. cd ffmpeg

Dans un premiers temps, on enlève tout résidus d’anciennes configurations et compilations avec les commandes :

  1. make clean
  2. make distclean

Télécharger

Puis de lancer la configuration [1] :

  1. ./configure --disable-ffplay --disable-ffserver --enable-shared --enable-gpl --enable-nonfree --enable-version3 --enable-libmp3lame --enable-libxvid --enable-libvorbis  --enable-libfaac --enable-libtheora  --enable-libx264 --enable-libdirac  --enable-libschroedinger --enable-libspeex --enable-libopenjpeg --enable-libgsm   --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-avfilter --enable-postproc --enable-pthreads --enable-zlib --enable-libaacplus --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-openal

Les options spécifiques à une installation "serveur"

  • --disable-ffplay désactive la compilation du lecteur ffplay qui n’est pas utilisable à même le serveur et ne sert donc à rien ;
  • --disable-ffserver désactive la compilation du serveur de streaming ffserver car nous ne souhaitons utiliser ffmpeg que pour encoder et décoder. Cependant pour certains cas, cette option peut être enlevée de la commande de configuration ;
  • --disable-doc ne créera pas la documentation ;
  • --disable-devices ne permettra pas l’usage des entrées/sorties de la machine (aucunement nécessaire sur un serveur) ;

Les encodeurs et décodeurs spécifiques

La compilation et l’installation

Pour la compilation, on lance ensuite la commande suivante [2] :

  1. make

L’installation n’est pas plus compliquée (elle doit se faire avec les droits de super utilisateur d’où l’utilisation de sudo :

  1. sudo checkinstall --pkgname=ffmpeg --pkgversion "`cat RELEASE`-`date +%Y%m%d`-`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default

La dernière ligne de commande créera un package qui ressmeblera à ffmpeg_0.8.4.git-20111001-edf1a8e-1_amd64.deb et l’installera ... Il est alors possible de le désinstaller proprement avec une commande du genre :

  1. apt-get remove ffmpeg

Normalement le binaire est correctement installé et doit se trouver à cet endroit /usr/local/bin/ffmpeg et doit être utilisable par tout utilisateur du système.

Pour tester si le chemin vers le binaire est exact vous pouvez utiliser la commande which de la sorte :

  1. which ffmpeg

NOTE : sur un serveur, nous avons eu l’erreur suivante en lançant la commande :

  1. ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory

Cela signifie que le répertoire où se trouve le fichier en question ne fait pas partie du path des librairie.

Pour y remédier il suffit d’ajouter dans le fichier /etc/ld.so.conf la ligne :

  1. #Pensez à vérifier si le chemin est exact sur votre installation.
  2. /usr/local/lib

Télécharger

Ensuite il est nécessaire de lancer la commande suivante :

  1. sudo ldconfig

Vous pouvez retester ffmpeg, vous devriez obtenir la liste des options possibles.

Installer qt-faststart

qt-faststart permet de modifier les entêtes MOOV ATOM de fichiers de type mov ou mp4 permettant de les lire avant la fin de leur chargement complet.

Le code de ce petit logiciel est intégré dans le répertoire tools/ du contenu récupéré par svn sur le serveur de FFMpeg plus haut. Il suffit donc d’aller dans le bon répertoire, de le compiler, puis de copier le binaire issu de la compilation dans un répertoire utilisable par tout le monde :

  1. #Aller dans le bon répertoire
  2. cd ~/ffmpeg/tools
  3. #Compiler le programme
  4. cc qt-faststart.c -o qt-faststart
  5. #Copier le programme dans un répertoire utilisable par tout le monde
  6. sudo cp qt-faststart /usr/local/bin

Télécharger

Afin de tester la disponibilité du programme, il suffit alors de taper dans un terminal la commande suivante : qt-faststart

Vous devriez voir s’afficher la ligne suivante si tout se passe correctement :

  1. Usage: qt-faststart <infile.mov> <outfile.mov>

MAJ : Il est possible de placer les bon entêtes moov directement depuis la commande d’encodage de ffmpeg sans avoir besoin par la suite d’utiliser qt-faststart. Il faut utiliser le paramètre supplémentaire -movflags avec la valeur faststart.

Par exemple, pour mettre les bons entêtes MOOV sans réencoder complètement la video infile.mp4 :

  1. ffmpeg -i infile.mp4 -c:a copy -c:v copy -movflags faststart outfile.mp4

Liens utiles et complémentaires :

Notes

[1Ici nous installons FFMpeg pour une installation tournant sur un serveur, pour d’autres utilisations, il peut être nécessaire de modifier certaines options

[2Si vous connaissez le nombre de "cores" (cpus) utilisables sur la machine, il est possible d’accélérer le temps de compilation du logiciel en utilisant la commande suivante (où X est le nombre de cores utilisables) :

  1. make -j X
  • Auteur :
  • Publié le :
  • Mis à jour : 25/10/15

Aucun commentaire


Qui êtes-vous ?
[Se connecter]
Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.