[ Présentation | Prérequis divers ( installation de jpeg-mmx ) | Installation de codecs audioInstallation d'Ogg Vorbis , installation de FLAC Installation de Lame , installation de a52dec , installation de faad ) | Installation de codecs vidéo (installation de divx4linux , installation de xvid , installation de theora , installation de ffmpeg installation de libquicktime , installation de libfameinstallation des codes windows d'avifile , installation du codec Windows Media Player  , installation de mpeg2dec ) | Installation d'outils en ligne de plus haut niveau ( Présentation , avifile , mjpegtools ) ]

Les outils de base pour la vidéo

Dernière modification 23 janvier 2005

( ce document est disponible au format pdf dans la rubrique téléchargement)



Présentation

Les outils présentés dans cette page sont nécessaires pour le fonctionnement de la plupart des interfaces graphiques traitant de la vidéo, que ce soit des outils pour l'acquisition, le montage, la conversion et tout simplement la lecture vidéo.
Notez bien que j'ai pris le parti de présenter l'installation de ces outils à partir des sources pour pouvoir m'adapter à toutes les distributions linux (et accessoirement pour avoir un code optimisé et pouvoir choisir éventuellement mes options de compilation). La plupart des distributions proposent déjà ces outils en packages précompilés, libre à vous d'utiliser votre "package manager" préféré (urpmi, apt-get, ...) pour les installer. Cette remarque est valable pour toutes les autres pages traitant de la vidéo.
Vous devez suivre l'ordre d'installation des différents softs, notez qu'il sera nécessaire de basculer sur la page configuration de l'ieee1394 juste avant l'installation de libquicktime.
[Retour haut de la page ]

Prérequis divers

Installation de jpeg-mxx

Cette bibliothèque requière l'installation de  jpeg-mmx qui est une bibliothèque d'outils de compression/décompression d'image jpeg utilisant les fonctionnalités de processeurs MMX.

On récupérera l'archive  à l'URL mjpeg.sourceforge.net. On la décompresse

tar xvfz jpeg-mmx-0.1.5.tar.gz

Cela donne le répertoire jpeg-mmx-0.1.5 dans lequel on tape successivement

./configure
make

Si vous obtenez comme moi cette erreur

libjpeg-mmx.a(jidctint.o)(.text+0x46): In function `domidct8x8llmW':
: undefined reference to `fix_054n184_054'
libjpeg-mmx.a(jidctint.o)(.text+0x50): In function `domidct8x8llmW':
: undefined reference to `fix_054n184_054'
...

Vous éditez le fichier Makefile au lieu de

CFLAGS= -O2  -I$(srcdir)

Vous écrivez

CFLAGS= -O1  -I$(srcdir)

tapez

make clean
make

puis en tant que root

make install_real

Toujours en tant que root on tape

cp jpegint.h /usr/local/include/

Veuillez préalablement vérifier que /usr/local/include existe bien. Vous pouvez aussi copier ce fichier sous /usr/include.

[Retour haut de la page ]

Installation de codecs audio

Ogg vorbis

Présentation

Ogg Vorbis est un nouveau format de compression audio. Il est comparable à d'autres formats équivalents comme le MP3, VQF ou AAC à la différence qu'il est complètement libre. Il est généralement considéré comme plus performant que MP3. Ogg  est en fait le nom d'un conteneur qui peut contenir aussi bien de l'audio que de la vidéo, alors que vorbis est l'algorithme de compression utilisé pour l'audio inclu dans un conteneur ogg. Notez bien que le conteneur ogg peut contenir de l'audio qui utilise un moyen de compression différent du vorbis (FLAC par exemple).
Le site officiel de Ogg Vorbis est  http://www.vorbis.com/  on y récupèrera les bibliothèques libogg et libvorbis. Ces deux bibliothèques utilisent la bibliothèque audio libao qu'on récupèrera sur le site http://www.xiph.org/ao/. Cette dernière bibliothèque permet de gérer la sortie audio au travers de diverses plateformes logicielles ou matérielles (OSS, ESD, ALSA, AIX, Sun, Net/OpenBSD, IRIX, ...).

Installation

On décompresse la première archive en tapant

tar xvfz libao-0.8.6.tar.gz

Cela donne le répertoire libao-0.8.6. On veillera à ce que le package libarts-devel soit installé, on tape maintenant sucessivement

./configure
make

Puis en tant que root

make install

Dans le fichier /etc/ld.so.conf on rajoutera les lignes suivantes (si ce n'est déjà fait)

/usr/local/lib
/usr/local/lib/ao/plugins-2

On tape alors

ldconfig

Passons à libogg, on décompresse l'archive en tapant

tar xvfz libogg-1.1.2.tar.gz

Cela donne le répertoire libogg-1.1.2 dans lequel on tape successivement

./configure
make

Puis en tant que root

make install

Passons à libvorbis, on décompresse l'archive en tapant

tar xvfz libvorbis-1.1.0.tar.gz

Cela donne le répertoire libvorbis-1.1.0 dans lequel on tape successivement

./configure

Je bute sur l'erreur suivante

checking for ogg >= 1.0... Package ogg was not found in the pkg-config search path.
Perhaps you should add the directory containing `ogg.pc'
to the PKG_CONFIG_PATH environment variable
No package 'ogg' found

Pour la résoudre, je crée le lien suivant

ln -s /usr/local/lib/pkgconfig/ogg.pc /usr/lib/pkgconfig/

Puis je retape

./configure
make

puis en tant que root

make install
ldconfig


[Retour haut de la page ]

Installation de FLAC

FLAC (Free Lossless Audio Codec) est une algorithme de compression qui est similaire au MP3 à la différence que la compression s'effectue sans perte de qualité. Son site officiel est http://flac.sourceforge.net/ on y récupèrera l'archive qu'on décompresse en tapant:

tar xvfz flac-1.1.1.tar.gz

Cela donne le répertoire flac-1.1.1 à noter que si voulez que xmms ait le support FLAC vous devez installer le package xmms-devel. Dans le répertoire de flac on tape

./configure
make

Puis en tant que root

make install

Vérifiez que la ligne /usr/local/lib soit bien dans le fichier /etc/ld.so.conf puis tapez

ldconfig


[Retour haut de la page ]

Installation de LAME

LAME qui signifie Ain't an MP3 Encoder se trouve à l'URL http://www.mp3dev.org et plus précisément ici http://sourceforge.net/projects/lame/ . Comme son nom l'indique c'est un encodeur MP3, il est utilisé notamment par les logiciels pour construire des avi (avec une piste audio en mp3).

On décompresse le tarball en tapant :

tar xvfz  lame-3.96.1.tar.gz

Cela donne le répertoire lame-3.96.1. On installera éventuellement le package suivant libgtk+1.2-devel. On revient dans le répertoire de lame dans lequel on tape successivement

./configure
make

Puis en tant que root

make install

[Retour haut de la page ]

Installation de a52dec

La bibliothèque a52 fournit des fonctions pour décoder du flux A/52. Kezako flux A/52 ? C'est le flux audio utilisé par le DVD, il est connu aussi sous le terme AC-3, vous trouverez davantage d'informations dans ce document http://www.atsc.org/standards/a_52a.pdf. Cette bibliothèque est nécessaire pour pouvoir lire les DVD.
L'URL officiel est http://liba52.sourceforge.net/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz a52dec-0.7.4.tar.gz

Cela donne le répertoire a52dec-0.7.4 dans lequel on tape

./configure
make


Puis en tant que root

make install
ldconfig

[Retour haut de la page ]

Installation de faad

Faad est un codec audio compatible AAC (Advanced Audio Coding). l'AAC est un format de compression audio comparable à MP3, qui a été développé dans le cadre du standard MPEG2 puis MPEG4, il se pose comme le successeur du MP3 qui a été développé auparavant pour le MPEG2. Les oreilles fines pourront noter qu'un fichier AAC codé à 96kbps a une qualité sonore meilleure qu'un fichier mp3 codé à 128 kbps. L'URL officiel est  http://www.audiocoding.com/ on y récupèrera l'archive qu'on décompresse en tapant

unzip faad2-2.0.zip


Cela donne le répertoire faad2. J'y tape ensuite

autoreconf -vif

Puis

./configure
make

j'ai l'erreur suivante

Makefile:606: *** séparateur manquant . Arrêt.

Pas grave dans le fichier Makefile, je supprime le paragraphe tout à la fin

rpm:    Makefile
       make dist
       $(RPMBUILD) -ta $(PACKAGE)-$(VERSION).tar.gz
       rm $(PACKAGE)-$(VERSION).tar.gz

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

Je retape make et enfin en tant que root

make install
ldconfig
[Retour haut de la page ]

Installation de codecs vidéo

Installation de divx4linux

divx4linux est une bibliothèque contenant des codecs DivX 4.0. Sur le site avifile.sourceforge.net on trouvera  les sources de divx4linux, on décompresse le tarball en tapant

tar xvfz divx4linux-std-20030428.tar.gz

Cela va donner le répertoire divx4linux-20030428, dans lequel en tant que root, on tape :

./install.sh
 

[Retour haut de la page ]

Installation de xvid

xvid est un codec compatible MPEG4 comme DivX à la différence qu'il est complètement libre. Le site officiel est www.xvid.org, on récupère la dernière archive stable qu'on décompresse en tapant

tar xvfz xvidcore-1.1.0-beta1.tar.gz

Cela donne le répertoire xvidcore-1.1.0-beta1. On veillera à ce que le package nasm soit installé. Au niveau de xvidcore-1.1.0-beta1/build/generic on tape

./configure

Puis

make

Puis en tant que root

make install

Voilà le résultat

D: /usr/local/lib
  I: /usr/local/lib/libxvidcore.so.4.0
  I: /usr/local/lib/libxvidcore.a
  D: /usr/local/include
  I: /usr/local/include/xvid.h

Tapez ldconfig

[Retour haut de la page ]

Installation de Theora

Theora est codec vidéo complètement libre qui est développé par la fondation xiph.org (les mêmes qui font Ogg), il intègre un codec vidéo VP3, le codec audio Ogg Vorbis et un conteneur multimedia Ogg. Le site officiel  http://www.theora.org/ on y récupérera l'archive qu'on décompresse en tapant

tar xvfz libtheora-1.0alpha4.tar.gz

Cela donne le répertoire libtheora-1.0alpha4. Vous devez préalablement installé le package libSDL-devel (un petit urpmi devrait suffire). Revenons au répertoire libtheora-1.0alpha4 on y tape successivement

./configure

Je bute sur l'erreur suivante

checking for vorbis >= 1.0.1... Package vorbis was not found in the pkg-config search path.
Perhaps you should add the directory containing `vorbis.pc'
to the PKG_CONFIG_PATH environment variable
No package 'vorbis' found
make

Pour la résoudre en tant que root

ln -s /usr/local/lib/pkgconfig/vorbis.pc /usr/lib/pkgconfig/

Je retape

./configure

Puis make Puis en tant que root

make install
ldconfig

[Retour haut de la page ]

Installation de ffmpeg

ffmpeg est un codec vidéo compatible MPEG-4 son site officiel est http://ffmpeg.sourceforge.net/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz ffmpeg-0.4.9-pre1.tar.gz

Cela donne le répertoire ffmpeg-0.4.9-pre1. On tape maintenant

./configure --enable-mp3lame --enable-vorbis --enable-faad --enable-faadbin --enable-gpl --enable-a52bin 

Voilà ce que ça donne

Install prefix   /usr/local
Source path      /usr/local/linux/video/ffmpeg-0.4.9-pre1
C compiler       gcc
make             make
CPU              x86 (generic)
Big Endian       no
inttypes.h       yes
broken inttypes.h no
MMX enabled      yes
Vector Builtins  yes
gprof enabled    no
zlib enabled     yes
mp3lame enabled  yes
vorbis enabled   yes
faad enabled     yes
faadbin enabled  yes
faac enabled     no
a52 support      no
a52 dlopened     yes
pp support       no
debug symbols    yes
optimize         yes
shared pp        no
Video hooking    yes
SDL support      yes
risky / patent encumbered codecs yes
Imlib2 support   no
freetype support yes
Sun medialib support no
pthreads support no
AMR-NB float support no
AMR-NB fixed support no
AMR-WB float support no
License: GPL
Creating config.mak and config.h

Puis

make

En cas d'erreur de ce type (rencontrée avec ma mandrake 10.0 official mais disparue avec la 10.1 official)

cc -O3 -g -Wall  -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o ffv1.o ffv1.c
ffv1.c: In function `encode_rgb_frame':
ffv1.c:465: internal compiler error: in find_function_data, at function.c:329

On corrige en tapant les commandes

cd libavcodec
cc -O2 -g -Wall  -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o ffv1.o ffv1.c
cd ..
make


Et en tant que root

make install
cp libavcodec/libavcodec.a /usr/local/lib
cp libavformat/libavformat.a /usr/local/lib
ln -s /usr/local/linux/video/ffmpeg-0.4.9-pre1/libavcodec/ /usr/local/include/ffmpeg
ldconfig

Vous remplacez le chemin en absolu de ffmpeg avec celui de votre configuration. On obtient la liste des formats supportés par ffmpeg en tapant

ffmpeg -formats




[Retour haut de la page ]

Installation de libquicktime

Si vous disposez d'une entrée firewire, vous devez d'abord installer les outils de base pour piloter un caméscope miniDV compatible ieee1394, c'est par ici.

C'est un codec vidéo quicktime (compatible MPEG4) Il se trouve sur le site libquicktime.sourceforge.net il remplace quicktime4linux qu'on peut trouver notamment sur le même site que mjpegtools. On décompresse l'archive en tapant

tar xvfz libquicktime-0.9.4.tar.gz

Cela donne le répertoire libquicktime-0.9.4. Préalablement veillez à installer les packages libMesaGL1 et libMesaGLU1-devel. Dans le répertoire de libquicktime on tape maintenant

./configure

Dans le cas où vous avez configurer l'IEEE1394 vous pouvez obtenir cette erreur

checking for libdv >= 0.102... Package libdv was not found in the pkg-config search path.
Perhaps you should add the directory containing `libdv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libdv' found

Je corrige en tapant en tant que root

ln -s /usr/local/lib/pkgconfig/libdv.pc /usr/lib/pkgconfig/

Je retape configure voilà le résultat

Configuration:
libdv:      Yes
vorbis:     Yes
lame:       Yes
libjpeg:    Yes
libpng:     Yes
libavcodec: Missing
libraw1394: Yes
libavc1394: Yes
librom1394: Yes
Firewire:   Enabled
gtk-1.x.y   Yes
Alsa        Yes

On tape maintenant

make

J'ai eu l'erreur suivante

gcc: /usr/X11R6/lib/libGL.so: No such file or directory

Pour la corriger en tant que root

ln -s /usr/X11R6/lib/libGL.so.1 /usr/X11R6/lib/libGL.so

On retape make puis en tant que root

make install

Dans le fichier /etc/ld.so.conf on rajoute à la fin

/usr/local/lib/libquicktime

Puis on tape

ldconfig

[Retour haut de la page ]

Libfame

Libfame est une bibliothèque pour encoder du MPEG1 et du MPEG4. L'URL officiel est
http://fame.sourceforge.net/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz libfame-0.9.1.tar.gz

Cela donne le répertoire libfame-0.9.1 dans lequel on édite le fichier src/half_mmx.h au lieu de

static short const _mmx_one[] = { 1, 1, 1, 1 };

On écrit

const _mmx_one[] = { 1, 1, 1, 1 };

De même dans le fichier src/half_sse.h au lieu de

static short const _mmx_one[] = { 1, 1, 1, 1 };

On écrit

const _mmx_one[] = { 1, 1, 1, 1 };

Ces modifications sont nécessaires pour pouvoir compiler transcode. On tape maintenant

./configure
make


Puis en tant que root

make install
[Retour haut de la page]

Installation des codecs windows d'avifile

On récupèrera les bibliothèques de codage/décodage de vidéo sur le site avifile.sourceforge.net . On va désarchiver l'archive en tant que root sous /usr/lib

cp binaries-011002.tgz /usr/lib/
cd /usr/lib
tar xvfz binaries-011002.tgz

Cela donne un répertoire win32 avec les bibliothèques d'encodage/décodage.
 

[Retour haut de la page ]

Installation du codec Windows Media Player

On récupèrera le codec sur le site avifile.sourceforge.net. On désarchive l'archive en tapant

tar xvfz Win32_dmo.tgz

Cela donne le répertoire Win32_dmo. Placez vous dans ce répertoire et en tant que root tapez

cp * /usr/lib/win32

[Retour haut de la page ]

Installation de mpeg2dec

mpeg2dec est un décodeur vidéo compatible MPEG2, son site officiel est http://libmpeg2.sf.net dans lequel on récupère l'archive qu'on décompresse en tapant

tar xvfz mpeg2dec-0.4.0b.tar.gz

Cela donne le répertoire mpeg2dec-0.4.0 dans lequel on tape successivement

./configure
make

Puis en tant que root

make install
ldconfig

[Retour haut de la page ]

Installation d'outils de plus haut niveau

Présentation

Ils se basent sur les outils précédents et proposent des commandes en ligne pour la gestion vidéo (acquisition, lecture, ...). Ils sont eux mêmes utilisés par des outils de plus haut niveau disposant d'une interface graphique (dvr, linuxvideostudio, ...) présentés dans les pages acquisition vidéo et montage vidéo.

[Retour haut de la page ]

Installation d'avifile

On veillera  à ce que les packages suivants soient installés sur votre système

libalsa2-devel
libSDL1.2
libSDL1.2-devel
libqt3
libqt3-devel
libtool


On récupérera la dernière archive sur le site avifile avifile.sourceforge.net. Avant d'aller plus loin, assurez vous que qt (version supérieure à 2) est préalablement installé sur votre système, pour ma part je dispose de qt3. Revenons à l'archive d'avifile, on décompresse en tapant :

tar xvfz avifile-0.7-0.7.41.tgz

Cela donne le répertoire avifile-0.7-0.7.41 dans lequel on tape :

./configure

Voilà le résultat :

Configuration for avifile RELEASE-0.7.41-041127-11:30-10.0
Compiler C:       gcc  -O2 -mcpu=i686 -march=i686 -ffast-math -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -pipe
Compiler C++:     g++  -O2 -mcpu=i686 -march=i686 -ffast-math -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -pipe
Install path:     /usr/local
Qt:               yes
Sdl:              yes
Xft:              yes
Oss audio:        yes
Sun audio:        no
Mga_vid:          no
Plugins:
  ac3passthrough  yes  (with SBLive only)
  divx (dec/enc)  yes/no (DivxNetworks divx4linux)
  xvid            no   (DivX4, XviD)
  xvid4           yes  (DivX4, XviD)
  ffmpeg          yes  (DivX ;-), OpenDivX, MJPEG, AC3)
  ffmpeg faad     yes  (AAC) (runtime yes)
  os motion jpeg  yes  (MJPEG)
  win32           yes  (DivX, WM7/8/9, DV, MJPEG, Ati, Asus,...)
  mad             yes  (MPEG Layer I/II/III)
  vorbis          yes
  lame runtime    yes

Si vous avez une erreur sur Qt3 alors que les packages qt3 et qt3-devel sont bien installés, taper successivement

./autogen.sh
rm config.cache
./configure

On tape ensuite

make

puis en tant que root

make install

Rajoutez maintenant dans le fichier /etc/ld.so.conf si ce n'est déjà fait les lignes

/usr/local/lib
/usr/local/lib/avifile0.7/
/usr/local/lib/avifile0.7/vidix/

Puis tapez en tant que root

ldconfig

[Retour haut de la page ]

Installation de mjpegtools

L'URL officiel est mjpeg.sourceforge.net. On décompresse l'archive en tapant

tar xvfz mjpegtools-1.6.2.tar.gz

Cela donne le répertoire mjpegtools-1.6.2 dans lequel on tape

./configure --with-aviplay=/usr/local/linux/video/avifile-0.7-0.7.41 --with-quicktime=/usr/local/linux/video/libquicktime-0.9.4  --with-dv=/usr/local/linux/video/libdv-0.104 --with-dv-yv12

Pour les chemins de libquicktime, et d'avifile vous devez indiquer le chemin en absolu des répertoires, les options --with-dv (chemin absolu) et --with-dv-yv12 ne sont à utiliser que si vous avez un caméscope DV et vous avez installé les outils pour le piloter.

Voilà le résultat de la commande

    - X86 Optimizations:
      - MMX/3DNow!/SSE enabled      : true
      - cmov support enabled        : true

****************************************************************************
* NOTE:                                                                    *
*   The resultant binaries will ***NOT*** run on a K6 or Pentium CPU       *
****************************************************************************
    - video4linux recording/playback: true
    - software MJPEG playback       : true
    - MPEG Z/Alpha                  : false
    - Quicktime playback/recording  : false
    - PNG input support             : true
    - AVI MJPEG playback/recording  : true (always)
    - libDV (digital video) support : true
    - libDV PAL YV12 read support   : true
    - Gtk+ support for glav         : true

on tape make.

Gasp! Je bute sur l'erreur suivante

lavpipe.c: In function `close_segment_inputs':
lavpipe.c:585: error: label at end of compound statement
make[2]: *** [lavpipe.o] Erreur 1

Pas grave j'édite le fichier lavtools/lavpipe.c au lieu de (ligne 585)

KEEP_SOURCE:

J'écris

KEEP_SOURCE:;

On retape make cette fois-ci j'ai l'erreur suivante

picture.cc: In constructor `Picture::Picture(EncoderParams&, MPEG2Coder&, Quantizer&)':
picture.cc:86: error: array bound forbidden after parenthesized type-id
picture.cc:86: note: try removing the parentheses around the type-id
...

Pour y remédier j'édite le fichier mpeg2enc/picture.cc au lieu de (lignes 86, 87 et 88)

        curref = new (uint8_t *)[5];
        curorg = new (uint8_t *)[5];
        pred   = new (uint8_t *)[5];

J'écris

        curref = new uint8_t *[5];
        curorg = new uint8_t *[5];
        pred   = new uint8_t *[5];

Je retape make puis en tant que root

make install

Vérifiez bien que la ligne /usr/local/lib existe bien dans le fichier /etc/ld.so.conf, si ce n'est pas le cas rajoutez la puis tapez

ldconfig

A noter l'excellente aide en ligne à cet endroit https://sourceforge.net/docman/display_doc.php?docid=3456&group_id=5776.

[Retour page d'accueil FUNIX]
[Retour haut de la page ]