Outils pour utilisateurs

Outils du site


tutoriels:ffmpeg

FFMPEG : Convertisseur audio/vidéo avec codecs

  • FFmpeg est une collection de logiciels libres dédiés au traitement de flux audio ou vidéo (enregistrement, lecture ou conversion d'un format à un autre).


FFMPEG


Le projet est constitué de plusieurs composants, outils en ligne de commande ou bibliothèques logicielles :

  • ffmpeg : l'utilitaire éponyme pour convertir des formats vidéo. Il supporte aussi l'encodage en temps réel depuis une carte TV.
  • ffserver est un serveur HTTP dédié à la diffusion de contenu en continu (streaming).
  • ffplay pour lire un fichier multimédia (il est basé sur les bibliothèques SDL et FFmpeg).


Bibliothèques :

  • libavcodec contient tous les encodeurs et décodeurs audio/video de FFmpeg. La plupart des codecs ont été redéveloppés à partir de zéro pour assurer les meilleures performances et la réutilisabilité du code source, une partie d'entre eux ont été développés par rétro-ingénierie.
  • libavformat contient un analyseur syntaxique (un parser en anglais, parcoureur en français) et un générateur pour les formats audio/video les plus communs.


Procédure pour la compilation de FFMPEG

  • Installer les dépendances :

aptitude install git-core wget unzip bzip2 build-essential

  • Créer un dossier pour les téléchargements des sources :

mkdir /root/sources && cd /root/sources

Compilation statique des libraires de codecs

  • Avant de compiler FFmpeg proprement dit, il est nécessaire de se procurer et de compiler en mode statique chacune des librairies de codecs. Dans le cadre de ce tutoriel, les sources des librairies et de FFmpeg sont placées dans le dossier ~/src et les librairies compilées dans /tmp/codecs.

Compilation

H.264/MPEG-4 AVC

  • Compilation de la librairie X264 :

git clone git://git.videolan.org/x264.git
cd x264
./configure --prefix=/tmp/codecs --enable-static
 make && make install

AAC (Advanced Audio Coding)

  • Compilation de la librairie FAAC :

wget http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
tar -jxvf faac-1.28.tar.bz2
cd faac-1.28
sed -i '126d' ./common/mp4v2/mpeg4ip.h
deb:~/src$ ./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes
make && make install

FAAD2

  • Compilation de la librairie FAAD

wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.bz2
tar -jxvf faad2-2.7.tar.bz2
cd faad2-2.7
./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes
make && make install

Vorbis/Theora

  • Compilation de la librairie AO :

wget http://downloads.xiph.org/releases/ao/libao-1.1.0.tar.gz
tar -zxvf libao-1.1.0.tar.gz
cd libao-1.1.0
./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes
make && make install

OGG

  • Compilation de la librairie OGG:

wget http://downloads.xiph.org/releases/ogg/libogg-1.2.2.tar.gz
tar -zxvf libogg-1.2.2.tar.gz
cd libogg-1.2.2
./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes
make && make install

VORBIS

  • Compilation de la librairie VORBIS :

wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
tar -zxvf libvorbis-1.3.2.tar.gz
cd libvorbis-1.3.2
./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes
make && make install

THEORA

  • Compilation de la librairie THEORA:

wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
tar -zxvf libtheora-1.1.1.tar.gz
cd libtheora-1.1.1
./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes --with-ogg=/tmp/codecs/ --with-vorbis=/tmp/codecs
make && make install

XVID

  • Compilation de la librairie XVID :

wget http://downloads.xvid.org/downloads/xvidcore-1.3.1.tar.gz
tar -zxvf xvidcore-1.3.1.tar.gz
cd xvidcore/build/generic
./configure --prefix=/tmp/codecs
make && make install

LAME MP3 Encoder

  • Compilation de la librairie LAME:

wget http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz
tar -zxvf lame-3.98.4.tar.gz
cd lame-3.98.4
./configure --prefix=/tmp/codecs --enable-shared=no --enable-static=yes
make && make install

GOOGLE VP8

  • Compilation de la librairie VP8 :

wget http://webm.googlecode.com/files/libvpx-v0.9.6.tar.bz2
tar -jxvf libvpx-v0.9.6.tar.bz2
cd libvpx-v0.9.6
./configure --prefix=/tmp/codecs
make && make install

Compilation de FFMPEG

Compilation

  • Maintenant que les librairies des codecs sont compilés statiquement,
    il ne reste plus qu'à les inclure dans la compilation de FFMPEG.
  • Récupération des sources :

git clone git://github.com/FFmpeg/FFmpeg.git
cd FFmpeg

  • Compilation du binaire FFMPEG :

./configure --prefix=/usr/local/ffmpeg --disable-ffprobe --disable-ffplay --disable-ffserver --disable-devices --disable-network --enable-libx264 --enable-libfaac --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-libxvid --enable-libvpx --enable-gpl --enable-nonfree --enable-pthreads --extra-cflags='-I/tmp/codecs/include/ -I/tmp/codecs/include/ao -I/tmp/codecs/include/lame -I/tmp/codecs/include/ogg -I/tmp/codecs/include/vorbis -I/tmp/codecs/include/theora -I/tmp/codecs/include/vpx' --extra-ldflags='-L/tmp/codecs/lib -static'

  • Installation :

make && make install

Le binaire de FFmpeg incluant tous les codecs est désormais disponible. Il n'est lié à aucune librairie externe et
peut-être déployé seul sur des architectures similaires à celle où il a été compilé.

ldd usr/localffmpeg/bin/ffmpeg
         n'est pas un exécutable dynamique

Utilisation de FFMPEG

  • Il ne nous reste plus qu'à tester notre application :

ffmpeg -i video_in.avi -acodec libfaac -ar 44100 -ab 128k -ac 2
-vcodec libx264 -r 24 -s 640x360 -b 2496k -bt 1024k -y video_out.mp4

Décomposons rapidement les options :
  • -i video_in.avi : vous permet de spécifier le fichier source
  • -acodec libfaac : définit la librairie libfaac come codec audio
  • -ar 44100 -ab 128k -ac 2: Fréquence audio de 48K et Bitrate audio de 128K sur 2 canaux
  • -vcodec : utilise le codec vidéo x264
  • -r 24 -s 640×360 : framerate fixé à 24 images/s et résolution de 640 x 360 px
  • -b 2496k -bt 1024k : bitrate vidéo variable à 2496k (plus ou moins 1024k)
  • -y video_out.mp4 : spécifié le fichier de sortie
Utiliser les processeurs multi-coeur:

Puisque vous avez compilé avec l'option –enable-pthreads, si votre processeur est multithreadé (processeurs multi-coeur ou disposant de l'hyper-threading) vous pouvez en profiter dans l'encodage x264. Pour ce faire rajoutez simplement l'option “ -threads 0 ” dans votre ligne de commande.

Liens utiles

tutoriels/ffmpeg.txt · Dernière modification: 15/04/2016 à 21:15 (modification externe)

Outils de la page