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 :
- 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
- 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.
- #On se rend tout d'abord dans notre home
- cd ~
- #Puis on récupère les sources dans le répertoire ffmpeg
- git clone git://git.videolan.org/ffmpeg.git
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 :
- 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 :
- cd ffmpeg
Dans un premiers temps, on enlève tout résidus d’anciennes configurations et compilations avec les commandes :
- make clean
- make distclean
Puis de lancer la configuration [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 lecteurffplay
qui n’est pas utilisable à même le serveur et ne sert donc à rien ; -
--disable-ffserver
désactive la compilation du serveur de streamingffserver
car nous ne souhaitons utiliserffmpeg
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
-
--enable-libtheora
ajoute le décodeur et l’encodeur vidéo libre theora de la Xiph Open Source Community -
--enable-libfaad
ajoute le décodeur audio libre Advanced Audio Coding (faad) -
--enable-libfaac
ajoute l’encodeur audio libre au format Advanced Audio Coding (faac) -
--enable-libvpx
ajoute le décodeur et encodeur VP8/WebM (Webm Project ; -
--enable-zlib
permet de lire par exemple les vidéos Quicktime qui ont des headers compressés.
La compilation et l’installation
Pour la compilation, on lance ensuite la commande suivante [2] :
- 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
:
- 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 :
- 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 :
- which ffmpeg
NOTE : sur un serveur, nous avons eu l’erreur suivante en lançant la commande :
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directoryCela 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 :
#Pensez à vérifier si le chemin est exact sur votre installation. /usr/local/libEnsuite il est nécessaire de lancer la commande suivante :
sudo ldconfigVous 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 :
- #Aller dans le bon répertoire
- cd ~/ffmpeg/tools
- #Compiler le programme
- cc qt-faststart.c -o qt-faststart
- #Copier le programme dans un répertoire utilisable par tout le monde
- sudo cp qt-faststart /usr/local/bin
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 :
- 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
:
- ffmpeg -i infile.mp4 -c:a copy -c:v copy -movflags faststart outfile.mp4
Liens utiles et complémentaires :
- Le site officiel ;
- Compiler les librairies multimedia utiles pour ffmpeg ;
- Exemple de MediaSPIP : cas d’utilisation de ce tutoriel pour utilisation dans un cas spécifique ;