7.1. Codecs vidéo
Précédent | Chapitre 7. Codecs Supportés | Suivant

## 7.1. Codecs vidéo

Voir la table d'état des codecs pour une liste complète, générée quotidiennement. Très peu de codecs sont disponibles en téléchargement sur notre page web. Récupérez-les depuis notre page des codecs.

Les plus importants d'entre eux:

- vidéo MPEG1 (VCD) et MPEG2 (DVD)
- décodeurs natifs pour DivX ;-), OpenDivX (DivX4), DivX 5.01, 3ivX, MS MPEG4 v1, v2 et autres variantes MPEG4
- décodeur natif pour Windows Media Video 7/8 (WMV1/WMV2), et décodeur DLL Win32 pour Windows Media Video 9 (WMV3), utilisés tous les deux dans les fichiers `.wmv`
- décodeur Sorenson 1 (SVQ1) natif
- décodeur Sorenson 3 (SVQ3) natif
- décodeur 3ivx v1, v2
- codecs Cinepak et Intel Indeo (3.1,3.2,4.1,5.0)
- MJPEG, AVID, VCR2, ASV2 et autres formats matériels
- VIVO 1.0, 2.0, I263 et autres variantes H.263(+)
- FLI/FLC
- RealVideo 1.0 & 2.0 de `libavcodec`, et RealVideo 3.0 & 4.0 en utilisant les librairies RealPlayer
- décodeur natif pour HuffYUV
- vieux et simples formats variés similaires à RLE

Si vous avez un codec Win32 non listé ici qui n'est pas encore supporté, veuillez lire Comment importer des codecs et aidez-nous à en ajouter le support.

### 7.1.1. DivX4/DivX5

Cette section contient des informations sur les codecs DivX4 et DivX5 de Project Mayo. La première version (alpha) disponible fût OpenDivX 4.0 alpha 47 et 48. Son support était inclu dans MPlayer, et compilé par défaut. Nous avons fréquemment utilisé son code de postprocessing pour améliorer la qualité visuelle des vidéos MPEG-1/2. Maintenant nous utilisons notre propre code, pour tous les types de fichiers.

La nouvelle génération de ce codec est appelée DivX4 et peut même décoder les vidéos créées avec le très mauvais codec DivX ! De plus il est plus rapide que les DLLs Win32 DivX natives mais plus lent que `libavcodec`. Son utilisation en tant que décodeur est donc déconseillé. Cependant, il est utile pour l'encodage. Un désavantage de ce codec est que ses sources ne sont pas disponibles sous une licence Open Source.

DivX4 fonctionne dans deux modes:

`-vc odivx`
  Utilise le codec à la manière d'OpenDivX. Dans ce cas il affiche des images YV12 dans son propre buffer, et MPlayer fait la conversion de palette via libvo.(Rapide, recommandé !)
`-vc divx4`
  Utilise la conversion de palette du codec. Dans ce mode, vous pouvez également utiliser le format YUY2/UYVY. (LENT)

La méthode `-vc odivx` est généralement plus rapide, grâce au fait qu'elle transfert les données des images au format YV12 (planar YUV 4:2:0), nécessitant ainsi moins de bande passante sur le bus. Pour les modes YUV compactés (YUY2, UYVY), utilisez la méthode `-vc divx4`. Pour les modes RGB la vitesse est la même, au mieux elle peut varier selon votre profondeur de couleur.

### Note

Si votre pilote `-vo` supporte le rendu direct, alors `-vc divx4` pourra être plus rapide voir même la solution la plus rapide.

Le codec binaire de DivX4/5 peut être téléchargé depuis avifile ou divx.com Désarchivez-le, lancez `./install.sh` en root et n'oubliez pas d'ajouter `/usr/local/lib` à votre `/etc/ld.so.conf` et de lancer ldconfig.

Récupérez la version CVS de l'ANCIENNE librairie principale OpenDivX comme ceci:

1.     cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login

2.     cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore

3. Cette librairie principale est séparée en librairies d'encodage et de décodage qui doivent être compilées séparément. Pour la librairie de décodage, tapez simplement

       cd divxcore/decore/build/linux
       make
       cp libdivxdecore.so /usr/local/lib
       ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
       cp ../../src/decore.h /usr/local/include

4. Hélas, pour la librairie d'encodage il n'y a pas de Makefile Linux disponible, et le code optimisé pour MMX ne fonctionne que sous Windows. Vous pouvez quand même le compiler en utilisant ce Makefile.

       cd ../../../encore/build
       mkdir linux
       cd linux
       cp path/Makefile .
       make
       cp libdivxencore.so /usr/local/lib
       ln -s /usr/local/lib/libdivxencore.so /usr/local/lib/libdivxencore.so.0
       cp ../../src/encore.h /usr/local/include

MPlayer détecte automatiquement si DivX4/DivX5 est correctement installé, donc compilez-le normalement. Si il ne détecte pas le codec, votre installation ou votre configuration n'est pas correcte.

### 7.1.2. FFmpeg/libavcodec

FFmpeg contient un paquetage de codec open source, qui est capable de décoder des flux encodés avec des codecs audio et vidéo variés. Il offre également un confort d'encodage impressionnant et une plus grande vitesse que les codecs Win32 ou les librairies DivX4/5 de DivX.com !

Il contient plein de bons codecs, les plus importants étant les variantes MPEG-4: DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). Le décodeur WMA est également très intéressant.

Le codec le plus récent est le codec Sorenson 3 (SVQ3). C'est la première implémentation complètement opensource de ce codec. Il est même plus rapide que l'original. Assurez-vous d'utiliser celui-ci à la place du codec binaire !

Pour avoir la liste complète des codecs supportés veuillez vous reporter à la page web de FFmpeg. Codecs video et audio supportés.

Si vous utilisez une version officielle de MPlayer, vous avez `libavcodec` directement dans le paquetage, construisez comme d'habitude. Si vous utilisez la version Subversion de MPlayer `libavcodec` est automatiquement extrait de l'arborescence Subversion de FFmpeg car les versions officielles sont très rares. La version issue de Subversion est pratiquement toujours stable et offre le plus de fonctions. Pour y arriver faites:

1.     svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

2. Compilez. `configure` devrait détecter les problèmes avant la compilation.

### Note

La version Subversion de MPlayer contient un sous-répertoire `libavcodec`, mais il ne contient pas le source de `libavcodec` ! Vous devez suivre les étapes ci-dessus pour obtenir le source de cette librairie.

Avec FFmpeg et ma Matrox G400, je peut voir des films DivX en haute résolution sans sauter de trames sur mon K6-2 500.

### 7.1.3. Codecs XAnim

### Note

Soyez prévenu que les codecs binaires XAnim sont packagées avec un morceau de texte revendiquant être la licence liée au logiciel qui, entre autres restrictions, interdit à l'utilisateur d'utiliser les codecs en conjonction avec n'importe quel autre programme que XAnim. Cependant l'auteur de XAnim n'a encore entrepris d'actions légales contre quiconque pour des problèmes relatifs aux codecs.

INSTALLATION ET UTILISATION. MPlayer est capable d'employer les codecs XAnim pour décoder. Suivez les instructions pour les activer:

1. Téléchargez les codecs que vous désirez utiliser depuis le site d'XAnim. Le codec 3ivx n'y est pas, il est sur le site de 3ivx.

2. OU téléchargez le pack de codecs depuis notre page des codecs.

3. Utilisez l'option `--with-xanimlibdir` pour dire à `configure` où trouver les codecs XAnim. Par défaut, il les cherche dans `/usr/local/lib/codecs`, `/usr/local/lib/xanim/mods`, `/usr/lib/xanim/mods` et `/usr/lib/xanim`. Vous pouvez également définir la variable d'environnement `XANIM_MOD_DIR` avec le répertoire des codecs XAnim.

4. Renommez/liez symboliquement ces fichiers, en séparant le reste de l'architecture, ils auront donc des noms comme ceux-ci: `vid_cvid.xa`, `vid_h263.xa`, `vid_iv50.xa`.

XAnim sont des codecs de la famille `xanim`, donc vous pouvez utiliser l'option `-vfm xanim` pour dire à MPlayer de les utiliser si possible.

Les codecs testés incluent: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, H.263.

### 7.1.4. Vidéo VIVO

MPlayer peut lire les vidéos Vivo (1.0 and 2.0). Le codec le plus approprié pour les fichiers 1.0 est le décodeur H.263 de FFmpeg, vous pouvez l'utiliser avec l'option `-vc ffh263`. Pour les fichiers 2.0, utilisez la DLL Win32 par l'intermédiaire de l'option `-vc vivo`. Si vous ne fournissez pas d'options en ligne de commande,MPlayer sélectionne le meilleur codec automatiquement.

### 7.1.5. Vidéo MPEG-1/2

MPEG-1 et MPEG-2 sont décodés par la librairie multiplateforme `libmpeg2` native, dont le code source est inclus dans MPlayer. Nous gérons la vidéo MPEG-1/2 boguée en attrapant le `Signal 11` (`segmentation fault`), et en réinitialisant rapidement le codec, continuant ainsi exactement où l'erreur c'est produite. Cette technique de récupération n'a pas d'influence mesurable sur la vitesse.

### 7.1.6. MS Video1, Cinepak CVID, et autres vieux codecs

MPlayer est capable de lire la plupart des vieux codecs utilisés dans les fichiers AVI et MOV. Dans le passé ces fichiers étaient décodés par des codecs Win32 binaires, mais maintenant nous avons des codecs natifs pour la plupart d'entre eux en utilisant `libavcodec`.

### 7.1.7. RealVideo

MPlayer décode toutes les versions de RealVideo:

- RealVideo 1.0, 2.0 (fourcc RV10, RV20) - en/décodage supporté par `libavcodec`
- RealVideo 3.0, 4.0 (fourcc RV30, RV40) - décodage supporté par les librairies RealPlayer

Téléchargez les codecs sur http://www.mplayerhq.hu/MPlayer/releases/codecs/. Extrayez-les dans le répertoire `/usr/local/lib/codecs`. Si vous voulez les placer à un endroit différent, passez l'option `--with-reallibdir` à configure.

### Note

Les librairies RealPlayer ne fonctionnent actuellement qu'avec Linux, FreeBSD, NetBSD et Cygwin sur les plateformes x86, Alpha et PowerPC (Linux/Alpha et Linux/PowerPC ont été testés), et avec Mac OS X.

### 7.1.8. XviD

XviD est un logiciel gratuit de codec video conforme au MPEG-4 ASP, qui possède des dispositifs d'encodage en 2 passes et un support complet du MPEG-4 ASP, rendant la chose beaucoup plus efficace que le bien connu codec DivX. Il se clame une très bonne qualité video et de bonne performance due aux optimisations pour les processeurs les plus moderne.

Cela a commencé par le fork du développement du codec OpenDivX. Il est apparu quand ProjectMayo est passé d'OpenDivX au sources-fermées DivX4 (maintenant DivX5), et les personnes extérieures à ProjectMayo travaillant sur OpenDivX se sont fâchés, et ont démarré XViD. Les deux projets ont donc la même origine.

`XviD` Installation

Comme la plupart des logiciels open source, il est disponible en deux parfums: versions officiel et la version CVS. La version CVS est actuellement assez stable pour être utilisée, et bénéficie des corrections de bogues existant des versions "officielles". Voici qui doit être fait pour faire fonctionner la version CVS de `XviD` avec MEncoder (vous avez besoin au minimum de autoconf 2.50, automake et libtool):

1.     cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login

2.     cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore

3.     cd xvidcore/build/generic

4.     ./bootstrap.sh

5.     ./configure

   Vous pouvez avoir à ajouter des options (examinez la sortie de

       ./configure --help

   ).

6.     make && make install

7. Si vous avez spécifié `--enable-divxcompat`, copiez `../../src/divx4.h` dans `/usr/local/include/`.

8. Recompilez MPlayer avec `--with-xvidlibdir=`/chemin/vers/`libxvidcore.a` `--with-xvidincdir=`/chemin/vers/`xvid.h`

### 7.1.9. Sorenson

Sorenson est un codec vidéo développé par Sorenson Media et licencié à Apple qui le distribue avec son Lecteur QuickTime. Nous sommes actuellement capables de décoder toutes les versions des fichiers Sorenson avec les décodeurs suivants:

- Sorenson Video v1 (fourcc SVQ1) - décodage supporté par un codec natif (`libavcodec`)
- Sorenson Video v3 (fourcc SVQ3) - décodage supporté par un codec natif (`libavcodec`)

COMPILATION DE MPLAYER AVEC LE SUPPORT DES LIBRAIRIES QUICKTIME

### Note

actuellement seules les plateformes Intel 32-bit sont supportées.

1. téléchargez la version Subversion de MPlayer

2. téléchargez le pack de DLL QuickTime depuis http://www.mplayerhq.hu/MPlayer/releases/codecs/

3. décompressez le pack de DLL QuickTime dans votre répertoire de codecs Win32 (par défaut: `/usr/local/lib/codecs/`)

4. compilez MPlayer

### 7.1.10. x264

#### 7.1.10.1. Qu'est ce que le x264?

`x264` est une librairie pour créée des flux video H.264. Il n'est pas 100% achevé, mais actuellement il a au moins un début de support pour la plupart des fonctionalités du H.264 qui ont un impact sur la qualité. Il y a aussi des fonctionalités plus avancées des specifications du H.264 qui n'ont rien avoir avec la qualité vidéo. La plupart ne sont pas encore implémentées dans le `x264`.

Fonctions d'encodage

- CAVLC/CABAC

- Références multiple

- Intra: Tout les types de macrobloc (16x16, 8x8, et 4x4 avec toutes les prédictions)

- Inter P: Toutes les partitions (de 16x16 jusqu'à 4x4)

- Inter B: Les partitions de 16x16 jusqu'à 8x8 (incluant SKIP/DIRECT)

- Control Débit: quantificateur constant, débit constant, simple ou multiple passe ABR, optionnel VBV

- Détection de changement de scène

- Placement B-frame adaptif

- B-frames commme références / ordre arbitraire de frame

- 8x8 et 4x4 transformation spaciale adaptative

- Mode sans perte

- Matrices de quantification personnalisées

- Encodage parallèle par découpage en de multiples tranches

#### 7.1.10.2. Qu'est ce que le H.264?

H.264 est un des noms pour le nouveau codec video numérique développé conjointement par l'ITU et le MPEG. Il peut être aussi correctement référencé avec les noms vagues de "ISO/IEC 14496-10" ou "MPEG-4 Part 10". De façon plus fréquente, il est réferencé comme étant "MPEG-4 AVC" ou juste "AVC".

Qu'importe la façon de l'appeler, H.264 peut valoir le coup d'être essayé parcequ'il peut typiquement être équivalent en qualité au MPEG-4 ASP avec 5%-30% de débit en moins. Concrètement, le résultat dépendra de la source d'encodage et de l'efficacité de l'encodeur. Les gains apportés par H.264 ne sont pas gratuits: Décoder un flux H.264 augmente considérablement les besoins en CPU et mémoire. Par exemple, sur un Athlon 1733 MHz, une vidéo H.264 en résolution DVD à 1500kbps demande environ 35% de CPU à décoder. En comparaison, décoder un flux MPEG-4 ASP en résolution DVD à 1500kbps demande environ 10% de CPU à décoder. Cela signifie que le décodage de flux haute-définition est quasi hors de question pour la majorité des utilisateurs. Cela signifie aussi que même un rip DVD décent peut quelque fois être saccadé sur des processeurs plus lent que 2.0 GHz.

Au moins avec `x264`, les requièrements en encodage sont moins mauvais que ce dont on est habitué avec le MPEG-4 ASP. Par exemple, sur un Athlon 1733 MHz un encodage DVD typique devrait marcher à 5-15fps.

Ce document n'a pas pour but d'expliquer H.264 en détail, mais si vous êtes intéressé par une brêve vue d'ensemble, vous devriez lire L'Encodage Video Avancé H.264/AVC Standard: Vue d'ensemble et Introduction aux Extensions de Chaîne de Fidélité.

#### 7.1.10.3. Comment puis-je jouer des vidéos H.264 avec MPlayer?

MPlayer utilise le décodeur H264 de `libavcodec`. `libavcodec` a eu au moins un décodeur H.264 qui est un fonctionne un minimum depuis les alentours de Juillet 2004, cependant des changements et améliorations majeurs ont été implémentés depuis cette date, que ce soit en terme de fonctionalités supportées et en terme d'utilisation améliorée du CPU. Juste pour être certain, c'est toujours une bonne idée d'utiliser une version récente extraite du dépot Subversion.

Si vous voulez une façon rapide et facile de savoir si il y a eu des changements récents du décodage H.264 de `libavcodec`, vous devriez garder un oeil sur Interface Web du Subversion de FFmpeg.

#### 7.1.10.4. Comment puis-je encoder des vidéos avec MEncoder et `x264`?

Si vous avez la sous-version du client installé, les dernières sources de x264 peuvent être récupérées avec cette commande:

        svn co svn://svn.videolan.org/x264/trunk x264

Les sources de MPlayer sont mises à jour lorsque survient un changement de l'API de `x264`, donc il est toujours conseillé d'utiliser la version Subversion de MPlayer. Peut-être cette situtation changera quand et si une "release" de `x264` survient. En attendant, `x264` devra être considéré comme trè instable, dans le sens que son interface de programmation est sujet à changer.

`x264` est construit et installé de façon standard:

        ./configure && make && sudo make install

Ceci installe libx264.a dans /usr/local/lib et x264.h est placé dans /usr/local/include. Avec la librairie et l'entête de `x264` placé au emplacement standard, construire MPlayer avec le support `x264` est facile. Lancé juste le standard:

    ./configure && make && sudo make install

Le script configure détectera automatiquement que vous avez ce qui est requis pour le `x264`.

Précédent | Niveau supérieur | Suivant
Chapitre 7. Codecs Supportés | Sommaire | 7.2. Codecs audio