[
Présentation
|
Prérequis divers (
installation
de jpeg-mmx ) |
Installation
de
codecs audio (
Installation 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 libfame
,
installation 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.
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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
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.