# MPlayer - Le Lecteur Vidéo

## http://www.mplayerhq.hu

Copyright © 2000-2021 MPlayer team

License

MPlayer is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

MPlayer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with MPlayer; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

# Comment lire cette documentation

Si c'est votre première installation, assurez-vous de tout lire d'ici jusqu'à la fin de la section Installation, et de suivre tous les liens que vous pourrez trouver. Si vous avez d'autres questions, retournez à la table des matières, lisez la FAQ ou faites une recherche dans ces fichiers. La plupart des questions devraient trouver leur réponse ici et le reste a probablement déjà été demandé sur nos listes de diffusion. Regardez leurs archives, il y a beaucoup d'informations intéressantes à y trouver.

# Chapitre 1. Introduction

MPlayer est un lecteur de vidéos pour GNU/Linux (fonctionne sur de nombreux autres Un*x, et processeurs non-x86, voir la section Ports). Il lit la majorité des fichiers MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska supportés par de nombreux codecs natifs, XAnim, RealPlayer et les DLLs Win32. Vous pouvez regarder les VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora, ainsi que les vidéos au format MPEG-4 (DivX). L'autre point fort de MPlayer est la grande variété de pilotes de sortie supportée. Il fonctionne avec X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, mais vous pouvez utiliser GGI et SDL (et ainsi tous leurs pilotes) et également certains pilotes de bas niveau spécifiques à certaines cartes (pour Matrox, 3Dfx et Radeon, Mach64, Permedia3) ! La plupart d'entre eux supportent le redimmensionnement logiciel ou matériel, vous pouvez donc apprécier les films en plein écran. MPlayer supporte la décompression matérielle fournie par certaines cartes MPEG, telles que la DVB et la DXR3/Hollywood+. Et que dire de ces superbes sous-titres ombrés et lissés (14 types supportés) avec des polices européennes/ISO 8859-1,2 (Hongrois, Anglais, Tchèque, etc.), Cyrilliques, Coréennes, ainsi que de l'Affichage Sur Ecran (ou OSD = On Screen Display) ?

Ce lecteur peut lire les fichiers MPEG endommagés (utile pour certains VCDs), ainsi que les mauvais fichiers AVI qui ne sont pas lisibles par le célèbre Windows Media Player. Même les fichiers AVI sans index sont lisibles, et vous pouvez reconstruire leurs indexs soit temporairement avec l'option `-idx`, soit de manière définitive avec MEncoder, autorisant ainsi l'avance/retour rapide ! Comme vous pouvez le constater, la stabilité et la qualité sont les choses les plus importantes, mais la vitesse est également formidable. Il y a également un puissant système de filtres pour faire de la manipulation vidéo et audio.

MEncoder (Le Movie Encoder de MPlayer) est un simple encodeur de vidéos, conçu pour encoder des vidéos jouables par MPlayer (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA) dans d'autres formats jouables par MPlayer (voir plus bas). Il peut encoder avec des codecs variés comme MPEG-4 (DivX4) (1 ou 2 passes),`libavcodec`, audio PCM/MP3/MP3 VBR.

Fonctionnalités de MEncoder

- Encodage à partir de la grande variété de formats de fichiers et de décodeurs de MPlayer

- Encodage dans tous les codecs `libavcodec` de FFmpeg

- Encodage vidéo depuis les tuners TV compatibles V4L

- Encodage/multiplexage vers fichiers AVI entrelacés avec index propre

- Création de fichiers à partir de flux audio externes

- Encodage 1, 2 ou 3 passes

- MP3 audio VBR

- PCM audio

- Copie de flux (stream)

- Synchronisation A/V de la source (basé sur PTS, peut être désactivé avec l'option `-mc 0`)

- Correction FPS avec l'option `-ofps` (utile pour l'encodage d'un VOB 30000/1001 fps en AVI 24000/1001 fps)

- Utilise notre très puissant système de plugins (crop, expand, flip, postprocess, rotate, scale, conversion rgb/yuv)

- Peut encoder les sous-titres DVD/VOBsub et le texte des sous-titres dans le fichier de destination

- Peut ripper les sous-titres DVD en format VOBsub

MPlayer et MEncoder peuvent être distribués selon les termes de la GNU General Public License Version 2.

# Chapitre 2. Installation

Un guide d'installation rapide peut être trouvé dans le fichier `README`. Veuillez le lire d'abord et revenir ensuite ici pour le reste des détails.

Dans ce chapitre, vous serez guidé à travers étapes de configuration et de compilation de MPlayer. Ce n'est pas facile, mais pas vraiment difficile non plus. Si vous observez un comportement différent de celui de ces explications, cherchez dans la doc et vous trouverez les réponses adéquates.

## 2.1. Logiciels nécessaires

- binutils - la version conseillée est la 2.11.x ou plus récente.

- gcc - les versions conseillées sont les versions 2.95 et 3.4 ou plus récentes. Les versions 2.96 et 3.0.x sont connues pour générer du code incorrect. Des problèmes plus ou moins graves existent avec les versions 3.1, 3.2 et 3.3. Sur les plateformes PowerPC, utilisez GCC 4.x.

- Xorg/XFree86 - la version conseillée est la 4.3 ou plus récente. Assurez-vous que ses paquets de développement sont également installés, sinon cela ne fonctionnera pas. Si vous n'avez pas besoin de X, certains pilotes de sortie vidéo fonctionnent aussi sans.

- make - version conseillée 3.79.x ou plus récente. Pour contruire la documentation XML, vous devez utiliser au moins la version 3.80.

- FreeType - version 2.0.9 ou supérieure requise pour l'affichage des sous-titres et du OSD (On Screen Display).

- libjpeg - décodeur JPEG optionnel, utilisé par le pilote de sortie vidéo JPEG.

- libpng - Décodeur (M)PNG optionnel, requis pour l'interface graphique et le pilote de sortie vidéo PNG.

- lame - La version 3.90 ou plus récente est recommandé, requis pour l'encodage MP3 audio avec MEncoder.

- zlib - recommandé, nécessaire pour les en-têtes MOV compressés et le support PNG.

- LIVE555 Streaming Media - optionnel, requis pour lire certains flux RTSP/RTP.

- directfb - optionnel, utilisez la version 0.9.13 ou plus récente.

- cdparanoia - optionnel, pour le support CDDA

- libxmms - optionnel, pour le support des plugins d'entrée de XMMS. Une version supérieure ou égale à 1.2.7 est requise.

- libsmb - optionnel, pour le support réseau smb.

- ALSA - optionnel, pour le support de sortie audio ALSA. La version 0.9.0rc4 est le minimum requis.

## 2.2. Fonctionalités

- Si vous souhaitez une interface graphique (GUI), lisez la section GUI avant de compiler.

- Si vous voulez installer MEncoder (notre excellent encodeur multi-usages), voir la section MEncoder.

- Si vous possédez une carte tuner TV compatible V4L, et désirez voir/enregistrer et encoder des films avec MPlayer, voyez la section Entrée TV.

- Si vous possédez un carte tuner radio compatible V4L, et désirez écouter et capturer du son avec MPlayer, lisez la rubrique Entrée Radio.

- Il y a un élégant Menu OSD prêt à être utilisé. Regardez la section menu OSD.

Ensuite compilez MPlayer :

    ./configure
    make
    make install

A ce point, MPlayer est prêt à fonctionner. Le répertoire `$PREFIX/share/mplayer` contient le fichier `codecs.conf`, qui est utilisé pour donner au programme la liste des codecs et de leurs capacités. Ce fichier n'est requis que si vous voulez changer ses propriétés, car le binaire principal en contient une copie interne. Vérifiez si vous avez un `codecs.conf` dans votre répertoire personnel (`~/.mplayer/codecs.conf`) provenant d'une ancienne installation de MPlayer, et supprimez-le.

Notez que si vous avez un `codecs.conf` dans `~/.mplayer/`, les fichiers `codecs.conf` du système ou celui intégré seront complètement ignorés. Ne faites pas cela à moins de vouloir jouer avec le fonctionnement interne de MPlayer car cela peut poser des problèmes. Si vous voulez changer l'ordre de recherche des codecs, utilisez les options `-vc`, `-ac`, `-vfm`, ou `-afm` soit en ligne de commande soit dans votre fichier de config (voir la page de man).

Les utilisateurs Debian peuvent construire un paquet .deb pour leur propre usage, c'est très simple. Exécutez

    fakeroot debian/rules binary

dans le répertoire racine de MPlayer. Voir Création de paquets Debian pour de plus amples instructions.

Regardez toujours le listing généré par `./configure`, ainsi que le fichier `config.log`, ils contiennent des informations sur ce qui sera compilé, et ce qui ne le sera pas. Vous pouvez également consulter les fichiers `config.h` et `config.mak`. Si vous avez quelques librairies installées, mais pas détectées par `./configure`, alors vérifiez que vous avez les fichiers d'en-tête (généralement les paquets -dev) et que leur version correspond. Le fichier `config.log` vous dit généralement ce qui manque.

Bien que n'étant pas indispensables, les polices peuvent être installées pour l'affichage de l'OSD, et le support des sous-titres. La méthode recommandée est d'installer un fichier de police TTF et de dire à MPlayer de l'utiliser. Voir la section Sous-titres et OSD pour les détails.

## 2.3. À propos de l'interface graphique

La GUI à besoin de GTK 1.2.x ou GTK 2.0 (elle n'est pas entièrement basée dessus, mais les menus le sont). Les skins sont stockées au format PNG, donc GTK, `libpng` (ainsi que leurs paquets de dev, généralement nommés `gtk-dev` et `libpng-dev`) doivent être installés. Vous pouver la compiler en spécifiant l'option `--enable-gui` durant l'étape `./configure`. Ensuite, pour l'activer vous devrez exécuter le binaire gmplayer.

MPlayer n'ayant pas de skin par défaut, vous devrez en télécharger si vous voulez utiliser la GUI. Voir la page des téléchargements. Ils devront être placés dans le répertoire commun habituel (`$PREFIX/share/mplayer/skins`), ou dans `$HOME/.mplayer/skins`. Par défaut, MPlayer consulte ces répertoires à la recherche d'un répertoire nommé `default`, mais vous pouvez utiliser l'option `-skin `nouveauskin``, ou placer `skin=nouveauskin` dans votre fichier de configuration pour utiliser le skin dans le répertoire `*/skins/nouveauskin`.

## 2.4. Polices et OSD

Vous devez spécifier à MPlayer quelles polices utiliser pour l'OSD et les sous-titres. N'importe quelle police TrueType ou Bitmap devrait faire l'affaire. Cependant, les polices TrueType sont recommandés car elles ont un bien meilleur aspect, peuvent être mises à l'échelle correctement et gèrent mieux les différents jeux de caractères.

### 2.4.1. Police TrueType

Il y a deux façons de rendre les polices TrueType opérationnelles. La première est de spécifier le nom du fichier de la police TrueType à utiliser grâce à l'option `-font`. Il peut être intéressant de placer cette option dans votre fichier de configuration (voir la page de manuel pour plus de détails). La seconde façon est de créer un lien symbolique (symlink) baptisé `subfont.ttf` pointant vers le fichier contenant la police de votre choix. Pour choisir une police commune à tous les utilisateurs, tapez

    ln -s /path/to/sample_font.ttf $PREFIX/share/mplayer/subfont.ttf

Pour définir une police propre à chaque utilisateur, tapez

    ln -s /path/to/sample_font.ttf ~/.mplayer/subfont.ttf

La compilation de MPlayer avec le support pour `fontconfig` rend les méthodes ci-dessus inopérantes. En effet, MPlayer s'attend à ce que `-font` soit suivi d'un nom de police compatible avec `fontconfig` et utilisera sans-serif par défaut. Un exemple :

    mplayer -font 'Bitstream Vera Sans' anime.mkv

Pour obtenir la liste des polices compatibles avec `fontconfig`, executez fc-list dans la console.

### 2.4.2. Polices Bitmap

Si pour une raison quelconque vous souhaitez ou devez employer des polices bitmap, téléchargez en un jeu depuis notre page web. Vous avez les choix entre différentes polices ISO et quelques autres polices développées par des utilisateurs supportant plusieurs encodages.

Décompressez le fichier que vous avez téléchargé dans le répertoire `~/.mplayer` ou dans `$PREFIX/share/mplayer`. Ensuite, renommez ou créez un lien symbolique de l'un des répertoires ainsi créés vers le sous-repertoire `font`. Exemple :

    ln -s ~/.mplayer/arial-24 ~/.mplayer/font

    ln -s $PREFIX/share/mplayer/arial-24 $PREFIX/share/mplayer/font

Les polices doivent disposer d'un fichier `font.desc` associant les positions des caractères unicode à l'encodage (NdT: code page) utilisés par le sous-titre. Une autre solution est d'encoder les sous-titres en UTF-8 et d'utiliser l'option `-utf8` ou de donner au fichier sous-titre le même nom qu'au fichier video avec une extension `.utf` et de le placer dans le même répertoire que la vidéo.

### 2.4.3. Menu OSD

MPlayer possède une interface de menu OSD complètement modulable.

### Note

Le menu des préférences n'est PAS IMPLÉMENTÉ pour l'instant!

Installation

1. compilez MPlayer en passant le paramètre `--enable-menu` à `./configure`

2. assurez-vous que les polices OSD sont installées

3. copiez `etc/menu.conf` dans votre répertoire `.mplayer`

4. copiez `etc/input.conf` dans votre répertoire `.mplayer`, ou dans le fichier de config globale de MPlayer (par défaut: `/usr/local/etc/mplayer`)

5. trouvez et éditez `input.conf` pour activer les touches correspondant aux mouvements dans le menu (c'est décrit sur place).

6. lancez MPlayer avec par exemple :

       $ mplayer -menu fichier.avi

7. pressez n'importe laquelle des touches menu que vous avez définies

## 2.5. Installation Codec

### 2.5.1. Xvid

Xvid est un logiciel libre de codec video conforme au MPEG-4 ASP. Notez qu'Xvid n'est pas nécessaire pour décoder des vidéos encodée par Xvid. `libavcodec` est utilisé par défaut parce qu'il offre une vitesse supérieure.

Installer `Xvid`

Comme la plupart des logiciels open source, il est disponible en deux parfums : versions officielle et la version CVS. La version CVS est habituellement suffisament stable pour être utilisée, puisqu'elle bénéficie des corrections de bogues existant dans les versions officielles. Voici qui doit être fait pour faire fonctionner la version CVS de `Xvid` avec MEncoder :

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.

### 2.5.2. x264

`x264` is a library for creating H.264 video. MPlayer sources are updated whenever an `x264` API change occurs, so it is always suggested to use MPlayer from Subversion.

If you have a GIT client installed, the latest x264 sources can be gotten with this command:

    git clone git://git.videolan.org/x264.git

Then build and install in the standard way:

    ./configure && make && make install

Now rerun `./configure` for MPlayer to pick up `x264` support.

### 2.5.3. codecs AMR

Le codec de voix Adaptive Multi-Rate est utilisé dans les téléphones mobiles de troisième génération (3G). L'implémentation de référence est disponible depuis Projet d'Association sur la 3ème Génération (gratuit pour un usage privé).

Pour activer le support, téléchargez et installez les bibliothèques pour AMR-NB et AMR-WB en suivant les instructions de cette page. Ensuite, recompilez MPlayer.

## 2.6. RTC

Il y a trois méthodes de synchro dans MPlayer.

- Pour utiliser l'ancienne méthode, vous n'avez rien à faire. Elle utilise `usleep()` pour régler la synchro A/V, avec une précision de +/- 10ms. Cependant parfois la synchro doit être réglée encore plus finement.

- Le nouveau code de synchro utilise la RTC (Real Time Clock) du PC pour cette tâche, car elle possède des timers précis à 1ms près. Utilisez l'option `-rtc` pour l'activer. Notez qu'un noyau correctement configuré est requis. Si vous executez une version du noyau supérieure ou égale à 2.4.19pre8, vous pouvez ajuster la fréquence maximale (de la RTC) accessible aux utilisateurs normaux grace au système de fichiers `/proc` . Pour ceci, les commandes suivantes sont à votre disposition :

      echo 1024 > /proc/sys/dev/rtc/max-user-freq

  ou

      sysctl dev/rtc/max-user-freq=1024

  Vous pouvez rendre ce réglagle permanant en ajoutant la seconde commande au fichier `/etc/sysctl.conf`.

  Vous pouvez voir l'efficacité du nouveau timer sur la ligne d'état. Les fonctions de gestion de l'énergie des BIOS des certains portables avec des processeurs supportant SpeedStep ne font pas bon ménage avec la RTC. Le son et les images risquent d'être désynchronisés. Brancher le portable sur le secteur avant de le démarrer semble régler le problème dans la plupart des cas. Avec certaines configurations matérielles (confirmé par l'utilisation de lecteurs DVD ne supportant pas le DMA avec une carte-mère basée sur le chipset ALi1541), l'utilisation du timer RTC rend la lecture saccadée (NdT: skippy). Il est recommandé d'utiliser la troisième méthode dans ce cas.

- La troisième méthode de synchro est activée par l'option `-softsleep`. Elle a la précision de la RTC, mais n'utilise pas la RTC. D'un autre côté, elle nécessite plus de CPU.

# Chapitre 3. Utilisation

## 3.1. Ligne de commande

MPlayer utilise un ordre de lecture complexe. Les options globales sont écrites en premier, par exemple

    mplayer -vfm 5

et les options écrites après les noms de fichier s'appliquent uniquement au nom de fichier/URL/autre donné, par exemple

    mplayer -vfm 5 film1.avi film2.avi -vfm 4

Vous pouvez regrouper les noms de fichiers/URLs en utilisant `{` et `}`. C'est utile avec l'option `-loop`:

    mplayer { 1.avi - loop 2 2.avi } -loop 3

La commande ci-dessus jouera les fichiers dans cet ordre: 1, 1, 2, 1, 1, 2, 1, 1, 2.

Lecture d'un fichier:

    mplayer [options] [chemin/]fichier

Autre façon de lire un fichier:

    mplayer [options] file:///chemin-uri-escaped

Lecture de plusieurs fichiers:

    mplayer [options par défaut] [chemin/]fichier1 [options pour fichier1] fichier2 [options pour fichier2] ...

Lecture de VCD:

    mplayer [options] vcd://N°piste [-cdrom-device /dev/cdrom]

Lecture de DVD:

    mplayer [options] dvd://N°titre [-dvd-device /dev/dvd]

Lecture à partir du web:

    mplayer [options] http://site.com/fichier.asf

(les listes de lecture peuvent également être utilisées)

Lecture à partir de RTSP:

    mplayer [options] rtsp://serveur.exemple.com/nomFlux

Exemples:

    mplayer -vo x11 /mnt/Films/Contact/contact2.mpg
    mplayer vcd://2 -cd-rom-device /dev/hdc
    mplayer -afm 3 /mnt/DVDtrailers/alien4.vob
    mplayer dvd://1 -dvd-device /dev/hdc
    mplayer -abs 65536 -delay -0.4 -nobps ~/films/test.avi

## 3.2. Sous-titres et OSD

MPlayer peut afficher des sous-titres durant le film. Les formats suivants sont supportés:

- VobSub

- OGM

- CC (closed caption)

- MicroDVD

- SubRip

- SubViewer

- Sami

- VPlayer

- RT

- SSA

- PJS (Phoenix Japanimation Society)

- MPsub

- AQTitle

- JACOsub

MPlayer peut convertir les formats précédemment listés (excepté les trois premiers) dans dans les formats de destinations suivants, en utilisant ces options:

- MPsub: `-dumpmpsub`

- SubRip: `-dumpsrtsub`

- MicroDVD: `-dumpmicrodvdsub`

- JACOsub: `-dumpjacosub`

- Sami: `-dumpsami`

MEncoder peut convertir les sous-titres DVD au format VOBSub.

Les options en ligne de commande diffèrent légèrement suivant les différents formats:

Sous-titres VOBSub. Les sous-titres VOBSub consistent en un gros (plusieurs méga-octets) fichier `.SUB`, et d'éventuels fichiers `.IDX` et/ou `.IFO`. Si vous avez des fichiers tels que ``sample.sub``, ``sample.ifo`` (optionnel), ``sample.idx`` - vous devrez passer à MPlayer l'option `-vobsub sample [-vobsubid `id`]` (éventuellement avec le chemin complet). L'option `-vobsubid` est comme l'option `-sid` pour les DVDs, vous pouvez choisir les pistes de sous-titres (langues) avec. Au cas où `-vobsubid` est omis, MPLayer essaiera d'utiliser les langues indiqués par l'option `-slang` et se rabattra sur l'objet `langidx` du fichier `.IDX` pour définir la langue de sous-titres. Si cela échoue, il n'y aura pas de sous-titres.

Autres sous-titres. Les autres formats consistent en un seul fichier texte contenant le timing, l'emplacement et autres infos du texte. Utilisation: si vous avez un fichier tel que ``exemple.txt``, vous devrez passer l'option `-sub exemple.txt` (éventuellement avec le chemin complet).

Réglage du timing et de l'emplacement des sous-titres:

`-subdelay `sec``

  Décale les sous-titres de ``sec`` secondes. Peut être négatif. La valeur est ajouté au compteur d'avancement du film (movie's time position counter).

`-subfps `DÉBIT``

  Spécifie le rapport trame/sec du fichier de sous-titres (nombre à virgule).

`-subpos `0-100``

  Spécifie la position des sous-titres sur l'écran.

Si vous constatez un décalage progressif entre le film et les sous-titres en utilisant un fichier de sous-titres MicroDVD, il est probable que la vitesse du film et celle des sous-titres soient différentes. Veuillez noter que le format de sous-titres MicroDVD utilise des numéros de trames absolus pour sa synchronisation, mais il ne contient pas d'information sur les fps et de ce fait l'option `-subfps` devrait être utilisée avec ce format. Si vous voulez résoudre ce problème de manière permanente, vous devez convertir manuellement le débit des trames du fichier de sous-titres. MPlayer peut faire cette conversion pour vous:

    mplayer -dumpmicrodvdsub -fps subtitles_fps -subfps
     avi_fps -sub subtitle_filename
     dummy.avi

A propos des sous-titres DVD, voir la section DVD.

## 3.3. Contrôles

MPlayer dispose d'une couche de contrôle pleinement configurable, qui vous permet de contrôler MPlayer avec le clavier, la souris, le joystick ou une télécommande (en utilisant LIRC). Voir la page de man pour une liste complète des contrôles clavier.

### 3.3.1. Configuration des contrôles

MPlayer vous permet d'associer n'importe quel touche/bouton à n'importe quelle commande MPlayer en utilisant un simple fichier de configuration. La syntaxe consiste un nom de touche suivi d'une commande. Le fichier de config par défaut est `$HOME/.mplayer/input.conf` mais cela peut être outrepassé en utilisant l'option `-input `conf`` (les chemins relatifs le sont par rapport à `$HOME/.mplayer`).

Vous pouvez obtenir une liste complète des touches supportées en tapant mplayer -input keylist et une liste complète des commandes disponibles en tapant mplayer -input cmdlist.

Exemple 3.1. Un simple fichier de contrôles

    ##
    ## MPlayer input control file
    ##

    RIGHT seek +10
    LEFT seek -10
    - audio_delay 0.100
    + audio_delay -0.100
    q quit
    > pt_step 1
    < pt_step -1
    ENTER pt_step 1 1

### 3.3.2. Control from LIRC

Linux Infrared Remote Control - utilisez un récepteur infrarouge fait maison, une télécommande, et contrôlez votre linux à distance ! Plus d'infos sur la page de LIRC.

Si vous avez installé le paquet LIRC, `configure` le détectera automatiquement. Si tout s'est bien passé, MPlayer affichera un message du genre "`Setting up LIRC support...`" au démarrage. Si une erreur se produit il vous le dira. Si il ne vous dit rien à propos de LIRC c'est que son support n'est pas compilé. C'est tout :-)

Le nom de l'application à lancer avec MPlayer est - oh surprise - `mplayer`. Vous pouvez utiliser n'importe quelle commande MPlayer et même passer plus d'une commande en les séparant avec `\n`. N'oubliez pas d'activer le flag repeat dans `.lircrc` quand cela est approprié (déplacement, volume, etc). Voici un extrait d'un fichier d'exemple `.lircrc`:

    begin
         button = VOLUME_PLUS
         prog = mplayer
         config = volume 1
         repeat = 1
    end

    begin
        button = VOLUME_MINUS
        prog = mplayer
        config = volume -1
        repeat = 1
    end

    begin
        button = CD_PLAY
        prog = mplayer
        config = pause
    end

    begin
        button = CD_STOP
        prog = mplayer
        config = seek 0 1\npause
    end

Si vous n'aimez pas l'emplacement standard du fichier de config de lirc (`~/.lircrc`) utilisez `-lircconf `nomfichier`` pour spécifier un autre fichier.

### 3.3.3. Mode esclave

Le mode esclave vous permet de construire un frontend à MPlayer. Quand il est activé (avec `-slave`) MPlayer lit les commandes séparées par un saut de ligne (\n) depuis l'entrée par défaut (stdin). Les commandes sont documentées dans le fichier slave.txt.

## 3.4. Streaming depuis le réseau ou les pipes

MPlayer peut lire des fichiers depuis le réseau, en utilisant les protocoles HTTP, FTP, MMS ou RTSP/RTP.

La lecture se fait juste en ajoutant l'URL à la ligne de commande. MPlayer utilise également la variable d'environnement `http_proxy`, et utilise le proxy si disponible. L'utilisation du proxy peut aussi être forcé:

    mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf

MPlayer peut lire depuis stdin (pas depuis les pipes nommés). Cela peut être utilisé par exemple pour lire depuis le FTP:

    wget ftp://micorsops.com/quelquechose.avi -O - | mplayer -

### Note

Il est également recommandé d'activer `-cache` pour une lecture depuis le réseau:

    wget ftp://micorsops.com/quelquechose.avi -O - | mplayer -cache 8192 -

### 3.4.1. Sauvegarder du contenu flux

Une fois que vous avez réussi à faire lire votre flux internet favorit par MPlayer, vous pouvez utiliser l'option `-dumpstream` pour sauvegarder le flux dans un fichier. Par exemple:

    mplayer http://217.71.208.37:8006 -dumpstream -dumpfile stream.asf

sauvegardera le contenu en flux depuis `http://217.71.208.37:8006` vers `stream.asf`. Cela marche avec tous les protocoles supportés par MPlayer, comme MMS, RSTP, et bien d'autre encore.

## 3.5. Flux distants

Les flux distants vous permettent d'accéder à la plupart des types de flux de MPlayer depuis un hôte distant. Le but de cette fonction est de rendre possible l'utilisation du lecteur CD ou DVD d'un autre ordinateur sur le réseau (en supposant que vous ayez une bande passante suffisante). Malheureusement certains types de flux (pour l'instant TV et MF) ne sont pas utilisables à distance car ils sont implémentés au niveau du demuxer. C'est triste pour les flux MF mais les flux TV nécessiteraient une bande passante incensée.

### 3.5.1. Compilation du serveur

Après avoir compilé MPlayer, allez dans le répertoire `TOOLS/netstream` et tapez make pour compiler le serveur. Vous pouvez ensuite copier le binaire netstream dans l'endroit approprié sur votre système (généralement `/usr/local/bin` sous Linux).

### 3.5.2. Utilisation de flux distants

Tout d'abord vous devez lancer le serveur sur l'ordinateur auquel vous souhaitez accéder à distance. Actuellement le serveur est très basique et n'accepte aucun argument en ligne de commande, donc tapez juste `netstream`. Maintenant vous pouvez par exemple jouer la seconde piste d'un VCD sur le serveur avec:

    mplayer -cache 5000 mpst://serveur/vcd://2

Vous pouvez aussi accéder aux fichiers de ce serveur:

    mplayer -cache 5000 mpst://serveur//usr/local/films/lol.avi

Veuillez noter que les chemins qui ne commencent pas par un / seront relatifs au répertoire dans lequel le serveur fonctionne. L'option `-cache` n'est pas requise mais vivement recommandée.

Soyez conscient que pour l'instant le serveur n'est pas sécurisé du tout. Donc ne vous plaignez pas des nombreuses attaques possibles par cette voie. À la place envoyez-nous quelques (bons) patches pour le rendre meilleur ou écrivez votre propre serveur.

## 3.6. Lecteurs CD/DVD

Les lecteurs modernes de CD-ROM peuvent atteindre de très hautes vitesses de lecture, bien que certains soient capables de fonctionner à des vitesses réduites. Il y a plusieurs raisons possibles pour vouloir changer cette vitesse :

- Il a été signalé que des lecteurs peuvent commettre des erreurs de lecture à haute vitesse, surtout avec des CD-ROM mal pressés. Réduire la vitesse peut alors empêcher la perte de données dans ces circonstances.

- Les lecteurs CD-ROM génèrent souvent un bruit assourdissant, qu'une vitesse réduite peut contribuer à diminuer.

### 3.6.1. Linux

Vous pouvez réduire la vitesse des lecteurs de CD-ROM IDE avec hdparm, setcd ou cdctl. Ils fonctionnent comme suit :

    hdparm -E [vitesse] [périph. cdrom]

    setcd -x [vitesse] [périph. cdrom]

    cdctl -bS [vitesse]

Si vous utilisez l'émulation SCSI, vous pourriez avoir à appliquer les paramètres au vrai périphérique IDE, et non au périphérique SCSI émulé.

Si vous avez les privilèges root, la commande suivante peut également aider :

    echo file_readahead:2000000 > /proc/ide/[périph. cdrom]/settings

Ceci créé un cache de 2 Mo, ce qui est utile pour les CD-ROMs endommagés (rayés). Si vous lui donnez une valeur trop haute, le lecteur ne va pas cesser de s'arrêter et de repartir, ce qui va dramatiquement diminuer les performances. Il est également recommandé d'optimiser votre lecteur de CD-ROM avec hdparm :

    hdparm -d1 -a8 -u1 [périph. cdrom]

Ceci permet l'accès DMA, le cache en lecture, et l'IRQ unmasking (lisez la page de man de hdparm pour plus d'explications).

Référez vous à "`/proc/ide/`[périph. cdrom]`/settings`" pour optimiser précisément votre lecteur CD-ROM.

Les lecteurs SCSI n'ont pas une manière uniforme de régler ces paramètres (Vous en connaissez une ? Dites-la nous !). Il y a un outil qui fonctionne pour les Lecteurs SCSI Plextor.

### 3.6.2. FreeBSD

Vitesse :

    cdcontrol [-f périphérique] speed [vitesse]

DMA :

    sysctl hw.ata.atapi_dma=1

## 3.7. Lecture de DVD

Pour voir la liste complète des options disponibles, veuillez lire la page de man. La syntaxe pour lire un Digital Versatile Disc (DVD) est la suivante :

    mplayer dvd://<piste> [-dvd-device <périphérique>]

Exemple :

    mplayer dvd://1 -dvd-device /dev/hdc

Si vous avez compilé MPlayer avec la gestion de dvdnav, la syntaxe est la même, sauf que que vous devrez utiliser dvdnav:// au lieu de dvd://.

Le périphérique DVD par défaut est `/dev/dvd`. Si votre configuration est différente, faites un lien symbolique (symlink) ou spécifiez le bon périphérique en ligne de commande avec l'option `-dvd-device`.

MPlayer utilise `libdvdread` et `libdvdcss` pour le décryptage et la lecture de DVD. Ces deux bibliothèques sont contenues dans le répertoire source de MPlayer, vous n'avez donc pas besoin de les installer séparément. Vous pouvez aussi utiliser les versions de ces deux bibliothèques qui sont peut-être déjà présentes sur votre système, mais cette solution n'est pas recommandée, dans la mesure où elle peut provoquer des bogues, des incompatibilités de bibliothèque et une vitesse réduite.

### Note

En cas de problème de décodage de DVD, essayez de désactiver supermount, ou tous les outils de ce genre. Certains lecteurs RPC-2 peuvent aussi nécessiter le réglage de leur code de région.

Décodage DVD. Le décodage DVD est réalisé par `libdvdcss`. La méthode peut être spécifiée par la variable d'environnement `DVDCSS_METHOD`. Voir le manuel pour plus de détails.

### 3.7.1. Code zone

Les lecteurs DVD d'aujourd'hui sont équipés d'une restriction sans queue ni tête appelée protection commerciale par zones . C'est un système qui oblige les lecteurs DVD à accepter uniquement les DVDs produits pour l'une des six zones qui découpent le monde. Il est impensable qu'un groupe de personne se réunisse pour arriver à élaborer une telle idée et pense que la Terre entière se pliera à leur volonté.

Les lecteurs qui appliquent le réglage des zones uniquement via logiciel sont connus comme des lecteurs RPC-1, ceux qui le font via matériel comme des lecteurs RPC-2. Les lecteurs RPC-2 permettent de changer de zone cinq fois avant qu'il ne se bloque. Sous Linux, vous pouvez utiliser l'outil regionset pour modifier le code zone de votre lecteur DVD.

Heureusement, il est possible de convertir les lecteurs RPC-2 en RPC-1 lors d'une mise à jours du micrologiciel. Saisissez la référence de votre lecteur DVD dans votre moteur de recherche favori ou jetez un œil au forum et à la section téléchargement de "The firmware page". Les mises en garde habituelles des mises à jours de micrologiciels restent valables mais les expériences de suppressions de restrictions de zones sont généralement fructueuses.

## 3.8. Lecture de VCDs

Pour voir la liste complète des options disponibles, veuillez lire la page de man. La syntaxe pour lire un Vidéo CD standard (VCD) est la suivante :

    mplayer vcd://<piste> [-cdrom-device <périphérique>]

Exemple :

    mplayer vcd://2 -cdrom-device /dev/hdc

Le périphérique VCD par défaut est `/dev/cdrom`. Si votre installation diffère, faites un lien symbolique (symlink) ou spécifiez le bon périphérique en ligne de commande avec l'option `-cdrom-device`.

### Note

Les CD-ROM SCSI Plextor et certains Toshiba, entre autres, ont d'horribles performances durant la lecture de VCDs. C'est parce que l'`ioctl` CDROMREADRAW n'est pas complètement implémenté pour ces lecteurs. Si vous avez des connaissances en programmation SCSI, merci de nous aider à implémenter un support SCSI générique pour les VCDs.

En attendant vous pouvez extraire des données d'un VCD avec readvcd et lire le fichier obtenu avec MPlayer.

Structure d'un VCD. Un CD Video (VCD) est constitué de secteurs CD-ROM XA, c'est-à-dire des pistes CD-ROM mode 2 forme 1 et 2 :

- La première piste est en mode 2 forme 2 ce qui signifie qu'elle utilise une correction d'erreur L2. La piste contient un système de fichiers ISO-9660 avec 2048 octets/secteur. Ce système de fichiers contient des informations VCD meta-donnée, aussi bien que les images fixes souvent utilisées dans les menus. Les segments MPEG pour les menus peuvent aussi être stockés dans la première piste, mais les données MPEG doivent être cassées en séries de bouts de 150 secteurs. Le système de fichiers ISO-9660 peut contenir d'autres fichiers ou programmes qui ne sont pas essentiels pour les opérations VCD.

- La seconde piste et les suivantes sont des pistes MPEG brutes (film) à 2324 octets/secteur, contenant un paquet de données MPEG PS par secteur. Celles-ci sont formatées selon le mode 2 forme 1, elles stockent donc plus de données par secteur au détriment de la correction d'erreur. Il est aussi permis d'avoir des pistes CD-DA dans un VCD après la première piste. Sur certains systèmes d'exploitation, il y a quelques astuces qui permettent de faire apparaître ces pistes non-ISO-9660 dans un système de fichiers. Sur d'autres systèmes d'exploitation comme GNU/Linux cela n'est pas le cas (pas encore). Ici les données MPEG ne peuvent être montées. Comme la plupart des films sont à l'intérieur de ce genre de piste, vous devrez tout d'abord essayer `vcd://2`.

- Il existe également certains disques VCD sans la première piste (une seule piste et pas de système de fichier du tout). Ils sont quand même lisibles, mais ne peuvent pas être montés.

- La définition du standard Video CD est appelée le "Livre Blanc" Philips et n'est généralement pas disponible en ligne, étant donné qu'elle doit être achetée auprès de Philips. Une information plus détaillée sur le Video CD peut être trouvée dans la documentation de vcdimager.

À propos des fichiers .DAT : Le fichier de ~600 Mo visible sur la première piste d'un VCD monté n'est pas un vrai fichier ! C'est ce qu'on appelle une passerelle ISO, créée pour permettre à Windows de gérer de telles pistes (Windows n'autorise pas du tout l'accès brut au périphérique). Sous linux, vous ne pouvez pas copier ou lire de telles pistes (elle contiennent des informations parasites). Sous Windows c'est possible car son pilote iso9660 émule la lecture brute des pistes dans ce fichier. Pour lire un fichier .DAT vous avez besoin d'un pilote noyau qui peut être trouvé dans la version Linux de PowerDVD. Il possède un pilote de système de fichier iso9660 modifié (`vcdfs/isofs-2.4.X.o`), qui est capable d'émuler les pistes brutes au travers de ce fichier .DAT fantôme. Si vous montez le disque en utilisant leur pilote, vous pouvez copier et même lire les fichiers .DAT avec MPlayer. Mais cela ne fonctionnera pas avec le pilote iso9660 standard du noyau ! Il est recommandé d'utiliser l'option `vcd://` à la place. D'autres possibilités pour la copie de VCD sont le nouveau pilote noyau cdfs (qui ne fait pas partie du noyau officiel) qui montre les sessions du CD en temps que fichier image et cdrdao, une application d'enregistrement/copie bit-à-bit).

## 3.9. Listes d'Edition de Décision (EDL)

Le système de liste d'édition de décision (Edit Decision Lists - EDL) vous permet de sauter ou rendre muet des sections de vidéos pendant la lecture, basé sur un fichier de configuration EDL spécifique au film.

Ceci est utile pour ceux qui veulent voir un film en mode "tout public". Vous pouvez couper toute violence, profanation, Jar-Jar Binks .. d'un film suivant vos préférences personnelles. A part ça, il y a d'autres utilisations, comme sauter automatiquement les publicités dans les fichiers vidéos que vous regardez.

Le format de fichier EDL est plutôt rudimentaire. Il y a une commande par ligne qui défini ce qui doit être fait (couper ou rétablir le son) et quand il faut le faire.

### 3.9.1. Utiliser un fichier EDL

Incluez l'option `-edl <nomfichier>` quand vous lancez MPlayer, avec le nom du fichier EDL que vous voulez appliquer à la vidéo.

### 3.9.2. Faire un fichier EDL

Le format de fichier actuel EDL est:

    [seconde de départ] [seconde de fin] [action]

Où les secondes sont des nombres à virgule et l'action est soit `0` pour sauter, soit `1` pour couper le son. Exemple:

    5.3   7.1    0
    15    16.7   1
    420   422    0

Cela va sauter de la seconde 5.3 à la seconde 7.1 de la vidéo, puis va couper le son à 15 secondes, le remettre à 16.7 secondes et sauter de la seconde 420 à la seconde 422 de la vidéo. Ces actions seront appliquées quand le temps de lecture aura atteint le temps indiqué dans le fichier.

Pour créer un fichier EDL à partir duquel travailler, utilisez l'option `-edlout <nomfichier>`. Durant la lecture, pressez la touche i pour marquer le début et la fin du passage à sauter. Une entrée correspondante sera ajoutée au fichier pour cette fois-ci. Vous pouvez ensuite ajuster de manière plus précise le fichier EDL ainsi que changer l'opération par défaut qui est de sauter le passage décrit par chaque ligne.

## 3.10. Audio Avancé

### 3.10.1. Lecture Surround/Multi-canal

#### 3.10.1.1. DVDs

La plupart des DVDs et beaucoup d'autres fichiers incluent le son surround. MPlayer supporte la lecture surround mais ne les activent pas par défaut parce que les équipement stéréos sont de loin plus communs. Pour jouer un fichier qui ont plus de deux canaux audio utilisez `-channels`. Par exemple, pour jouer un DVD avec l'audio 5.1:

    mplayer dvd://1 -channels 6

Notez que en dépit du nom "5.1" il y a couramment six canaux discret. Si vous avez l'équipement pour le son surround il est de précaution de mettre l'option `channels` dans votre fichier de configuration de MPlayer `~/.mplayer/config`. Par exemple, pour faire une lecture quadriphonique par défaut, ajoutez cette ligne:

    channels=4

MPlayer sortira alors l'audio en quatre canaux quand les quatres canaux sont tous disponibles.

#### 3.10.1.2. Lire des fichiers stéréo sur quatre haut-parleurs

MPlayer ne duplique aucun canal par défaut, et la plupart des pilotes audio ne le font pas non plus. Si vous voulez le faire manuellement:

    mplayer filename -af channels=2:2:0:1:0:0

Voir la section sur canal en copie pour une explication.

#### 3.10.1.3. AC-3/DTS Passthrough

Les DVDs ont habituellement l'audio surround encodé en format AC-3 (Dolby Digital) ou DTS (Digital Theater System). Certains équipements audio moderne sont capables de décoder ces formats de façon interne. MPlayer peut être configuré pour relayer les données audio sans les décoder. Cela ne marchera que si vous avez une connectique S/PDIF (Sony/Philips Digital Interface) sur votre carte son.

Si votre équipement audio peux décoder AC-3 et DTS, vous pouvez sans risque activer le passthrough pour les deux formats. Autrement, activez le passthrough pour le seul format que votre équipement supporte.

Pour activer le passthrough en ligne de commande:

- Pour l'AC-3 seul, utilisez `-ac hwac3`

- Pour le DTS seul, utilisez `-ac hwdts`

- Pour l'ensemble AC-3 et DTS, utilisez `-afm hwac3`

Pour activer le passthrough dans le fichier de configuration de MPlayer:

- Pour l'AC-3 seul, utilisez `ac=hwac3,`

- Pour le DTS seul, utilisez `ac=hwdts,`

- Pour l'ensemble AC-3 et DTS, utilisez `afm=hwac3`

Notez qu'il y a une virgule (",") à la fin de `ac=hwac3,` et `ac=hwdts,`. Cela permettra à MPlayer de retomber sur les codecs qu'il utilise normalement lors de la lecture d'un fichier qui n'a pas l'audio en AC-3 ou DTS. `afm=hwac3` n'a pas besoin d'une virgule; de toute façon MPlayer reviendra en arrière lorsqu'une famille d'audio est spécifiée.

#### 3.10.1.4. PasseBande audio MPEG

Les transmissions TV numérique (comme DVB et ATSC) et certains DVD ont habituellement des flux audio MPEG (en particulier MP2). Certains décodeurs matériels MPEG comme les cartes DVB complètes et les adaptateurs DXR2 peuvent décoder nativement ce format. MPlayer peut être configuré pour relayer les données audio sans les décoder.

Pour utiliser ce codec:

     mplayer -ac hwmpa

#### 3.10.1.5. Audio à encodage matriciel

***TODO***

Cette section doit encore être écrite et ne peut être complétée tant que personne ne nous a fourni des fichiers d'exemple à tester. Si vous avez quelconques fichiers audio à encodage matriciel en votre possession,que savez où en trouver, ou avez quelconques informations qui pourraient être utiles, veuillez envoyer un message à la liste de diffusion MPlayer-DOCS. Mettez "[matrix-encoded audio]" en sujet du mail.

Si aucuns fichiers ou de plus amples informations ne sont reçues cette section sera enlevée.

Liens Bon:

- http://electronics.howstuffworks.com/surround-sound5.htm

- http://www.extremetech.com/article2/0,1697,1016875,00.asp

#### 3.10.1.6. Emulation Surround dans les écouteurs

MPlayer inclu un filtre HRTF (Head Related Transfer Function) basé sur un projet MIT où des mesures ont été prises depuis des microphones montés sur une tête humaine factice.

Bien que il ne soit pas possible de reproduire exactement un système surround, le filtre HRTF de MPlayer fourni une immersion audio plus spatiale avec les systèmes d'écoute stéréo. La plupart des techniques de mixage consistent à simplement fusionner tous les canaux en deux; En plus de cette fusion, `hrtf` génére de subtils échos, augmente un peu la séparation stéréo, et altère le volume de certaines fréquences. Si HRTF sonne mieux gardez à l'esprit que tout ceci est dépendant de la source audio et est une question de goût personnel, mais cela vaut vraiment le coup d'essayer.

Pour jouer un DVD avec le HRTF:

    mplayer dvd://1 -channels 6 -af hrtf

`hrtf` ne marche bien que avec 5 ou 6 canaux. Aussi, `hrtf` requière de l'audio en 48 kHz. L'audio DVD est déjà en 48 kHz, mais si vous avez un fichier avec un taux d'échantillonnage différent que celui que vous voulez jouer en utilisant `hrtf` vous devez le ré-échantillonner:

    mplayer filename -channels 6 -af resample=48000,hrtf

#### 3.10.1.7. Dépannage

Si vous n'entendez aucun son provenant de vos canaux surround, controler vos paramètres de mixeur avec un programme de mixeur comme alsamixer; les sorties audio sont souvent muettes et le volume réglé à zéro par défaut.

### 3.10.2. Manipulation de Canal

#### 3.10.2.1. Information Générale

Malheureusement, il n'y a pas de standard qui montrent comment les canaux sont ordonnés. Les ordres listés ci-dessous sont ceux de l'AC-3 et sont assez typiques; essayez-les et voyez si votre source correspond. Les canaux sont numérotés à partir de par 0.

mono

1. centre

stéréo

1. gauche

2. droite

quadraphonique

1. devant gauche

2. devant droite

3. arrière gauche

4. arrière droite

surround 4.0

1. devant gauche

2. devant droite

3. arrière centre

4. devant centre

surround 5.0

1. devant gauche

2. devant droite

3. arrière gauche

4. arrière droite

5. devant centre

surround 5.1

1. devant gauche

2. devant droite

3. arrière gauche

4. arrière droite

5. devant centre

6. caisson de basse

L'option `-channels` est utilisée pour demander le nombre de canaux depuis le décodeur audio. Certains codecs audio utilisent le nombre de canaux spécifiés pour décider si le mixage (downmixing) de la source est nécessaire. Notez que cela n'affecte pas toujours le nombre de canaux de sortie. Par exemple, utiliser `-channels 4` pour jouer un fichier stéréo MP3 résultera quand même en une sortie en 2-canaux à partir du moment où le codec MP3 ne produira pas de canaux suplémentaires.

Le filtre audio `channels` peut être utilisé pour créer ou enléver des canaux et, est utile pour contrôler le nombre de canaux envoyés à la carte son. Voir les sections suivantes pour plus d'informations sur la manipulation de canaux.

#### 3.10.2.2. Jouer en mono avec deux enceintes

Mono sonne beaucoup mieux quand il est joué au travers de deux enceintes - particulièrement quand des écouteurs sont utilisés. Les fichiers Audio qui ont vraiment un canal sont automatiquement joués au travers de deux enceintes; malheureusement, la plupart des filtres avec le son mono sont couramment encodés comme stéréo avec un canal silencieux. La façon la plus facile et la plus fidèle de faire sortir des enceintes le même audio est le filtre `extrastereo`:

    mplayer filename -af extrastereo=0

Ceci fait la moyenne des deux canaux, ayant pour résultat que les deux canaux ont leur volume réduit de moitié par rapport à l'original. Les sections suivantes ont des exemples sur les autres manières de faire ceci sans une diminution du volume, mais ils sont plus compliqués et requièrent différentes options dépendemment du canal à garder. Si vous voulez réellement maintenir le volume, il est peut être plus facile de tester avec le filtre `volume` et trouver la bonne valeur. Par exemple:

    mplayer nom_fichier -af extrastereo=0,volume=5

#### 3.10.2.3. Copier/Déplacer le canal

Le filtre `channels` peut déplacer n'importe lequel ou tous les canaux. Parametrer toutes les sous-options pour le filtre `channels` peut être compliqué et prend peu d'attention.

1. Décidez combien de canaux de sortie vous avez besoin. Ceci est la première sous-option.

2. Comptez combien de canaux vous devrez déplacer. Ceci est la seconde sous-option. Chaque canal peut être déplacé en plusieurs différents canaux en même temps, mais gardez en tête que quand un canal est déplacé (même si vers une seule destination) le canal source sera vidé à moins qu'un autre canal ne soit déplacé dans ce même canal. Pour copier un canal, en gardant la source intacte, simplement déplacer le canal dans les deux destination et source. Par exemple:

       canal 2 --> canal 3
       canal 2 --> canal 2

3. Écrivez les copies de canal comme paires de sous-options. Notez que le premier canal est 0, le second est 1, etc. L'ordre de ces sous-options n'importe pas aussi longtemps qu'ils sont correctement groupés en `source:destination` paires.

##### Exemple: un canal en deux enceintes

Ici un exemple d'une autre manière de jouer un canal sur les deux enceintes. On suppose pour cette exemple que le canal de gauche devra être joué et le canal de droite annulé. En suivant les étapes ci-dessus:

1. Afin de fournir un canal de sortie pour chacune des deux enceintes, la première sous-option doit être "2".

2. Le canal de gauche a besoin d'être déplacé vers le canal de droite, et doit aussi être déplacé vers lui-même pour que le canal ne se vide pas. Cela fait un total de deux déplacements, mettant la deuxième sous-option aussi à "2".

3. Pour déplacer le canal de gauche (canal 0) vers le canal de droite (canal 1), la paire sous-option est "0:1", "0:0" déplace le canal de gauche vers lui-même.

En mettant tout ça ensemble cela donne:

    mplayer filename -af channels=2:2:0:1:0:0

L'avantage de cette exemple par rapport à `extrastereo` est que le volume de chaque canal de sortie est le même que le canal d'entrée. Le désavantage étant que les sous-options doivent être changées à "2:2:1:0:1:1" quand l'audio désirée est dans le canal de droite. Il est aussi plus difficile de s'en souvenir et de le taper.

##### Exemple: canal gauche vers deux enceintes raccourci

Il y a couramment une façon plus simple d'utiliser le filtre `channels` pour jouer le canal de gauche vers les deux enceintes:

    mplayer nom_fichier -af channels=1

Le second canal est enlevé et, sans plus de sous-options, le seul canal qui reste est celui de gauche. Les pilotes de carte son jouent automatiquement l'audio d'un seul canal vers les deux enceintes. cela ne fonctionne que quand le canal voulu est sur la gauche.

##### Exemple: dupliquer les canaux frontaux sur l'arrière

Une autre opération commune est de dupliquer les canaux frontaux et de leur faire rejouer sur les enceintes arrière d'un paramètrage quadraphonique.

1. Il devrait y avoir quatre canaux de sortie. La première sous-option est "4".

2. Chacun des deux canaux avant a besoin d'être déplacé vers le canal arrière correspondant et aussi vers lui-même. Cela fait quatre déplacements, donc la seconde sous-option est "4".

3. L'avant gauche (canal 0) a besoin d'être déplacé vers l'arrière gauche (canl 2): "0:2". L'avant gauche a aussi besoin d'être déplacé vers lui-même: "0:0". L'avant droit (canal 1) est déplacé vers l'arrière droite (canl 3): "1:3", et aussi vers lui- même: "1:1".

Combinez toutes les sous-options pour obtenir:

    mplayer nom_fichier -af channels=4:4:0:2:0:0:1:3:1:1

#### 3.10.2.4. Mixage de canal

Le filtre `pan` peut mixer les canaux selon des proportions spécifiées par l'utilisateur. Ceci tient compte de tout que le filtre de `channels` peut faire et plus. Malheureusement, les sous-options sont beaucoup plus complexes.

1. Décidez avec combien de canaux vous voulez travailler. Vous aurez peut-être besoin de spécifier cela avec `-channels` et/ou `-af channels`. Des exemples plus loin montreront quand et laquelle il faut utiliser.

2. Décidez combien de canaux à introduire dans `pan` (les canaux suplémentaires décodés sont rejetés). Ceci est la première sous-option, et elle contrôle aussi combien de canaux à employer pour la sortie.

3. Les sous-options restantes spécifient quelle quantité de chaque canal sont mixés l'un dans l'autre. Ceci est la partie compliquée. Pour décomposer la tâche, découpez les sous-options en plusieurs ensembles, un ensemlbe pour chaque canal de sortie. Chaque sous-option d'un ensemble correspond à un canal d'entrée. Le nombre que vous spécifiez sera le pourcentage de canal d'entrée qui sont mixés dans le canal de sortie.

   `pan` accepte des valeurs de 0 à 512, rendement de 0% à 51200% du volume original. Faites attention quand en utilisant des valeurs plus grande que 1. Non seulement cela peut vous donner un volume tres haut, mais si vous dépassez la marge d'échantillon de votre carte son vous pourriez entendre des pops et clics désagréables. Si vous le voulez vous pouvez faire suivre `pan` avec `,volume` pour activer la coupure, mais c'est mieux de garder les valeurs de `pan` suffisamment basses pour que la coupure ne soit pas nécessaire.

##### Exemple: un canal dans deux enceintes

Voici encore un autre exemple pour jouer le canal gauche dans deux enceintes. Suivez les étapes ci-dessus:

1. `pan` devrait sortir deux canaux, donc la première sous-option est "2".

2. Puisque nous avons deux canaux d'entrée, il y aura deux ensembles de sous-options. Puisqu'il y a également deux canaux de sortie, il y aura deux sous-options par ensemble. Le canal gauche à partir du fichier devrait aller au volume maxi aux les nouveaux canaux gauche et droite. Ainsi le premier ensemble de sous-options est "1:1". Le canal de droite devrait être rejeté, donc le second serait "0:0". N'importe quelles valeurs à 0 à la fin peuvent être omises, mais pour une facilité de compréhension nous les garderons.

Mettre ces options ensemble donne:

    mplayer nom_fichier -af pan=2:1:1:0:0

Si le canal de droite est préféré à la place du gauche, les sous-options pour `pan` seront "2:0:0:1:1".

##### Exemple: canal de gauche dans deux enceintes raccourci

Comme avec `channels`, il y a un raccourci qui ne fonctionne que avec le canal de gauche:

    mplayer nom_fichier -af pan=1:1

Puisque `pan` a seulement un canal d'entrée (l'autre canal étant rejeté), il n'y a seulement qu'un ensemble avec une sous-option, qui indique que le seul canal obtient 100% de lui-même.

##### Exemple: Mixage (downmixing) PCM 6-canaux

Le décodeur de MPlayer pour le PCM 6-canaux n'est pas capable de le mixer (downmixing). Voici une façon de mixager (downmixing) PCM en utilisant `pan`:

1. Le nombre de canaux de sortie est 2, donc la première sous-option est "2".

2. Avec six canaux d'entrée il y aura six ensembles d'options. Heureusement, puisque nous nous inquiétons seulement de la sortir des deux premiers canaux, nous devons seulement faire deux ensembles; les quatres ensembles restants peuvent être omis. Prenez garde que tous les fichiers audio multi-canaux n'aient le même ordre de canaux! Cette exemple démontre le mixage (downmixing) d'un fichier avec les même canaux que l'AC-3 5.1:

       0 - avant gauche
       1 - avant droit
       2 - arrière gauche
       3 - arrière droit
       4 - avant centre
       5 - caisson de basse (subwoofer)

   Le premier ensemble de sous-options liste les pourcentages du volume original, dans l'ordre, de ce que chaque canal de sortie devrait recevoir du canal gauche avant: "1:0". Le canal avant droit devrait aller vers la bonne sortie: "0:1". De même pour les canaux arrières: "1:0" et "0:1". Le canal centre va vers les deux canaux de sortie avec moitié de volume: "0.5:0.5", et le caisson de basse (subwoofer) va vers les deux avec le volume maxi: "1:1".

Mettez tout ça ensemble, pour:

    mplayer 6-canaux.wav -af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1

Les pourcentages listés ci-dessus sont seulement un exemple approximatif. Vous êtes libres de les ajuster.

##### Exemple: Jouer de l'audio 5.1 sur de grosses enceintes sans un caisson de basse (subwoofer)

Si vous avez une paire d'enceintes frontales énormes, vous ne voudriez pas gaspiller de l'argent sur l'achat d'un caisson de basse (subwoofer) pour un système son 5.1 complet. Si vous utilisez `-channels 5` pour demander que liba52 décode l'audio 5.1 en 5.0, le canal du caisson de basse (subwoofer) est simplement rejeté. Si vous voulez distribuer le canal du caisson de basse (subwoofer) vous-même vous avez besoin de mixer (downmix) manuellement avec `pan`:

1. Puisque `pan` a besoin d'examiner chacun des six canaux, spécifiez `-channels 6` ainsi liba52 les décode tous.

2. `pan` sort vers seulement cinq canaux, la première sous-option est 5.

3. Six canaux d'entrées et cinq de sortie signifient six ensembles de cinq sous-options.

   - Le canal avant gauche ne se réplique que vers lui-même: "1:0:0:0:0"

   - Pareil pour le canal avant droit: "0:1:0:0:0"

   - Pareil pour le canal arrière gauche: "0:0:1:0:0"

   - et aussi de même pour le canal arrière droit: "0:0:0:1:0"

   - Avant centre, aussi: "0:0:0:0:1"

   - Et maintenant que nous avons décidé quoi faire avec le caisson de basse, e.g. moitié vers l'avant droit et l autre vers l'avant gauche: "0.5:0.5:0:0:0"

Combinez toutes ces options pour obtenir:

    mplayer dvd://1 -channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0

### 3.10.3. Ajustement Logiciel du Volume

Certaines pistes audio sont trop silencieuses pour être entendues confortablement sans amplification. Cela devient un problème quand votre équipement audio ne peut amplifier le signal à votre place. L'option `-softvol` oblige MPlayer à utiliser un mixeur interne. Vous pouvez alors utiliser les touches d'ajustement du volume (par défaut 9 et 0) pour atteindre des niveaux de volume plus important. Notez que cela ne dévie pas votre mixeur de carte son; MPlayer amplifie seulement le signal avant de l'envoyer vers votre carte son. L'exemple suivant est un bien pour débuter:

    mplayer quiet-file -softvol -softvol-max 300

L'option `-softvol-max` spécifie le volume maximum de sortie permis en tant que pourcentage du volume original. Par exemple, `-softvol-max 200` devra permettre l'ajustement du volume jusqu'à deux fois son niveau d'origine. Il est sûr d'indiquer une valeur importante avec `-softvol-max`; un volume plus important ne sera utilisé qu'à partir du moment où les touches d'ajustement du volume sont utilisées. Le seul désavantage d'une valeur large est que, puisque MPlayer ajuste le volume par un pourcentage du maximum, vous n'aurez pas un contrôle aussi précis en utilisant les touches d'ajustement du volume. Utilisez une valeur plus basse avec `-softvol-max` et/ou indiquez `-volstep 1` si vous désirez une précision plus importante.

L'option `-softvol` fonmctionne en contrôlant le filtre audio `volume`. Si vous voulez jouer un fichier à un certain volume depuis le début vous pouvez spécifier `volume` manuellement:

    mplayer fichier-tranquil -af volume=10

Cela jouera le fichier avec un gain de 10 décibel. Soyez prudent lors de l'utilisation du filtre `volume` - vous pourriez facilement abimer votre appareil auditif si vous utilisez un valeur trop grande. Commencez bas et travaillez de façon graduelle vers le haut jusqu'à être à même d'apprécier de combien il est nécessaire d'ajuster le volume. Aussi, si vous indiquez des valeurs excessivement haute, `volume` pourra avoir besoin de couper le signal pour éviter d'envoyer vos données de carte son qui sont en dehors de la bande permise; cela résultera en une distorsion de l'audio.

## 3.11. Entrée TV

Cette section concerne l'activation de la lecture/enregistrement à partir d'un tuner TV compatible V4L. Voir la page de man pour une description des options TV et des contrôles clavier.

### 3.11.1. Compilation

1. D'abord, vous devez recompiler. `./configure` autodétectera les entêtes v4l du noyau et l'existence des entrées `/dev/video*`. Si elles existent, le support TV sera activé (voir le résultat de `./configure`).

2. Assurez-vous que votre tuner fonctionne avec d'autres logiciels TV pour Linux. Par exemple avec XawTV.

### 3.11.2. Astuces d'utilisation

La liste complète des options est disponible sur la page de man. Voici juste quelques astuces :

- Utilisez l'option `channels`. Exemple :

      -tv channels=26-MTV1,23-TV2

  Explication : En utilisant cette option, seuls les canaux 26 et 23 seront utilisables, et il y a un joli texte OSD lors des changements de canaux affichant le nom du nouveau. Les espaces dans le nom du canal doivent être remplacés par le caractère "_".

- Choisissez des dimensions d'images sensées. Les dimensions de l'image de destination devraient être divisible par 16.

- Si vous capturez la vidéo avec une résolution verticale supérieure à la moitié de la pleine résolution (c-a-d. 288 pour PAL ou 240 pour NTSC), alors les trames que vous obtenez seront en réalité des paires de champs entrelacées. En fonction de ce que vous voulez faire avec la vidéo, vous pourriez la laisser sous cette forme, malheureusement désentrelacé, ou séparer les paires en champs individuels.

  Autrement vous aurez un film qui a des distorsion durant les scènes à mouvements rapides et le contrôleur de bitrate ne sera probablement même pas capable de garder le bitrate demandé car les artefacts de désentrelacement produisent beaucoup de détails et donc consomment plus de bande passante. Vous pouvez désactiver l'entrelacement avec `-vf pp=DEINT_TYPE`. Généralement `pp=lb` peut faire du bon travail, mais c'est une histoire de préférence personnelle. Voyez les autres algorithmes de désentrelacement dans le manuel et essayez-les.

- Coupez les espaces morts. Quand vous capturez la vidéo, les bords sont généralement noirs ou contiennent du "bruit". De nouveau cela consomme de la bande passante inutilement. Plus précisément ce ne sont pas les zones noires elles-mêmes mais les transitions nettes entre le noir et la vidéo plus claire qui jouent, mais ce n'est pas très important pour le moment. Avant que vous commenciez la capture, ajustez les arguments de l'option `crop` pour que toutes les saletés des bords soient coupées. De nouveau, n'oubliez pas de garder des dimensions sensées.

- Regardez la charge CPU. Elle ne devrait pas dépasser la limite des 90% la plupart du temps. Si vous avez un gros tampon, MEncoder peut survivre à une surcharge pendant quelques secondes mais pas plus. Il vaut mieux désactiver les économiseurs d'écran 3D OpenGL et les trucs similaires.

- Ne jouez pas avec l'horloge système. MEncoder l'utilise pour la synchro A/V. Si vous réglez l'horloge système (surtout en arrière dans le temps), MEncoder va se sentir perdu et va perdre des trames. C'est un problème important lorsque vous êtes en réseau et que vous utilisez certains logiciels de synchronisation comme NTP. Vous devrez désactiver NTP pendant le processus de capture si vous voulez capturer correctement.

- Ne changez pas le `outfmt` à moins que vous sachiez ce que vous faites ou votre si votre carte/pilote ne supporte pas la valeur par défaut (palette YV12). Dans les versions précédentes de MPlayer/ MEncoder il était nécessaire de spécifier le format de sortie. Ce problème devrait être résolu dans les versions actuelles et `outfmt` n'est plus requis, et la valeur par défaut convient dans la plupart des cas. Par exemple, si vous capturez en DivX en utilisant `libavcodec` et que vous spécifiez `outfmt=RGB24` de façon à augmenter la qualité de l'image capturée, l'image capturée sera reconvertie plus tard en YV12; donc la seule chose que vous obtiendrez est un gaspillage massif de puissance CPU.

- Pour spécifier la palette I420 (`outfmt=i420`), vous devez ajouter une option `-vc rawi420` à cause d'un conflit de fourcc avec un codec vidéo Intel Indeo.

- Il y a plusieurs façons de capturer l'audio. Vous pouvez attraper le son soit avec votre carte son via un câble externe entre la carte vidéo et l'entrée ligne, soit en utilisant le DAC intégré à la puce bt878. Dans ce dernier cas, vous devrez charger le pilote btaudio. Lisez le fichier `linux/Documentation/sound/btaudio` (dans l'arborescence du noyau, pas celle de MPlayer) pour les instructions d'utilisations de ce pilote.

- Si MEncoder ne peut pas ouvrir le périphérique audio, assurez-vous qu'il soit réellement disponible. Il peut y avoir des ennuis avec certains serveurs de son comme aRts (KDE) ou ESD (GNOME). Si vous avez une carte son full duplex (presque toutes les cartes décentes le supportent aujourd'hui), et que vous utilisez KDE, essayez d'activer l'option "full duplex" dans le menu des préférences du serveur de son.

### 3.11.3. Exemples

Sortie muette, vers AAlib :)

    mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://

Entrée depuis V4L standard :

    mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 \
      -vo xv tv://

Un exemple plus élaboré. Ici MEncoder capture l'image PAL entière, coupe les marges, et désentrelace l'image en utilisant un algorithme de mélange linéaire. L'audio est compressée à un débit constant de 64kbps, en utilisant le codec LAME. Cette combinaison est adaptée pour capturer des films.

    mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
      -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
      -vf crop=720:544:24:16,pp=lb \
      -o output.avi tv://

Cela dimensionne également l'image en 384x288 et compresse la vidéo avec un débit de 350kbps en mode haute qualité. L'option vqmax perd le quantizer et permet au compresseur vidéo d'atteindre un débit plus bas au détriment de la qualité. Cela peut être utilisé pour capturer des longues séries TV, quand la qualité n'est pas très importante.

    mencoder -tv driver=v4l:width=768:height=576 \
      -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
      -oac mp3lame -lameopts cbr:br=48 -sws 1 \
      -o output.avi\
      -vf crop=720:540:24:18,pp=lb,scale=384:288 tv://

Il est également possible de spécifier des dimensions d'images plus petites dans l'option `-tv` et d'omettre le zoom logiciel mais cette approche utilise le maximum d'informations disponibles et, est un peu plus résistant au bruit. Les chipsets bt8x8 peuvent faire une moyenne de pixels uniquement dans la direction horizontale à cause d'une limitation matérielle.

## 3.12. Télétexte

Le Télétexte n'est actuellement disponible dans MPlayer que pour les drivers v4l et v4l2.

### 3.12.1. Notes d'implantation

MPlayer gère les textes, graphiques et liens classiquess. Malheureusement, les pages colorisées ne sont pas encore complètement gérées : toutes les pages sont affichées en niveau de gris. Les sous-titres (dénommés Closed Captions (CC)) sont aussi supportées.

MPlayer commence à mettre en cache toutes les pages Télétexte dès qu'il commence à recevoir du signal TV. Ainsi, vous n'avez pas besoin d'attendre jusqu'à ce que la page requise soit chargée.

Note : Utiliser le Télétexte avec l'option `-vo xv` génère des couleurs bizarres.

### 3.12.2. Using teletext

Pour pouvoir décoder le tététexte, vous devez spécifier le périphérique VBI d'où vous souhaitez extraire les données (normalement `/dev/vbi0` pour Linux). Ceci peut être fait en spécifiant `tdevice` dans votre fichier de configuration comme indiqué ci-dessous :

    tv=tdevice=/dev/vbi0

Vous pouvez avoir besoin de spécifier le code de la langue pour le Télétexte dans votre pays. La liste des codes est disponible avec l'option :

    tv=tdevice=/dev/vbi0:tlang=-1

Voici un exemple pour du Russe :

    tv=tdevice=/dev/vbi0:tlang=33

## 3.13. Radio

### 3.13.1. Entrée Radio

Cette section a pour but de vous expliquer comment écouter la radio depuis un tuner compatible V4L (Video For Linux). Reportez-vous à la page de manuel pour la description des options controlant la radio ainsi que pour la liste des raccourcis clavier.

#### 3.13.1.1. Compilation

1. Tout d'abord, vous devez recompiler MPlayer. Invoquez `./configure` avec l'option `--enable-radio` et si vous désirez pouvoir enregister la radio, ajoutez `--enable-radio-capture`.

2. Vérifiez que votre tuner fonctionne avec un autre logiciel d'écoute radio comme XawTV par exemple.

#### 3.13.1.2. Astuces d'utilisation

La liste complète des options est disponible dans la page de manuel. En voici une sélection des plus pratiques :

- L'option `channels`. Un exemple :

      -radio channels=104.4-Sibir,103.9-Maximum

  Avec cette option, seules les fréquences 104.4 et 103.9 pourront être écoutées. Lors d'un changement de station, le nom de la radio apparaitra à l'écran (OSD). Les caractères espace " " dans le nom de la station doivent être remplacés par le caractère underscore "_".

- Il y a plusieurs façons d'enregistrer la radio. Vous pouvez soit utiliser votre carte son via un cable externe reliant votre carte vidéo et le line-in de la carte son ou utiliser l'ADC integré à la puce saa7134. Dans le second cas, vous devez charger le pilote `saa7134-alsa` ou `saa7134-oss` selon votre configuration.

- MEncoder ne peut pas être utilisé pour enregistrer la radio car il doit necessairement travailler sur un flux vidéo. Vous pouvez soit utiliser le logiciel arecord du projet ALSA ou utiliser l'option `-ao pcm:file=fichier.wav`. Dans ce cas, vous n'entenderez rien, sauf si vous utilisez un cable branché au line-in et que le volume du line-in n'est pas nul).

#### 3.13.1.3. Exemples

Ecoute depuis un périphérique V4L standard (cable relié au line-in, enregistrement désactivé) :

    mplayer radio://104.4

Ecoute depuis un périphérique V4L standard (cable relié au line-in, enregistrement désactivé, interface V4Lv1) :

    mplayer -radio driver=v4l radio://104.4

Ecoute de la seconde fréquence dans la liste.

    mplayer -radio channels=104.4=Sibir,103.9=Maximm radio://2

Transfert du son par le bus PCI depuis l'ADC interne de la carte son. Dans cet exemple, le tuner radio est utilisé comme une seconde carte son (périphérique ALSA hw:1,0). Pour les cartes son basées sur la puce saa7134, le module `saa7134-alsa` ou `saa7134-oss` doit être chargé.

    mplayer -rawaudio rate=32000 radio://2/capture \
    -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm

### Note

Dans les noms de périphérique ALSA, les point-virgules ";" doivent être remplacés par des signes égal "=" et les virgules "," par des points ".".

# Chapitre 4. Sorties vidéo

## 4.1. Réglage MTRR

Il est FORTEMENT recommandé de bien ajuster ses registres MTRR, qui apportent un gain important de performances.

Faites un cat /proc/mtrr :

    --($:~)-- cat /proc/mtrr
    reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
    reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

C'est bon, il montre ma Matrox G400 avec 16Mo de mémoire. J'ai fais cela avec XFree 4.x.x, qui ajuste les registres MTRR automatiquement.

Si rien n'a fonctionné, vous devrez procéder manuellement. D'abord, vous devez trouver l'adresse de base. Vous pouvez la trouver de trois façons :

1. à partir des messages au démarrage de X11, par exemple :

       (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
       (--) SVGA: Linear framebuffer at 0xD8000000

2. à partir de `/proc/pci` (utilisez la commande lspci -v) :

       01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
       Memory at d8000000 (32-bit, prefetchable)

3. à partir des messages noyau du pilote mga_vid (utilisez dmesg) :

       mga_mem_base = d8000000

Trouvons maintenant la taille mémoire. Simplement, convertissez la taille de la mémoire vidéo en hexadécimal, ou utilisez cette table :

1 Mo | 0x100000
2 Mo | 0x200000
4 Mo | 0x400000
8 Mo | 0x800000
16 Mo | 0x1000000
32 Mo | 0x2000000

Vous connaissez l'adresse de base ainsi que la taille, ajustons vos registres MTRR ! Par exemple, pour la carte Matrox utilisée ci-dessus (`base=0xd8000000`) avec 32Mo de ram (`size=0x2000000`) faites simplement :

    echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Tous les processeurs ne supportent pas les MTRR. Les anciens K6-2 par exemple (vers 266Mhz, stepping 0) ne sont pas compatibles avec les MTRR, mais les stepping 12 le sont (cat /proc/cpuinfo pour le vérifier).

## 4.2. Xv

Sous XFree86 4.0.2 ou plus récent, vous pouvez utiliser les routines YUV matérielles de votre carte en utilisant l'extension XVideo. C'est ce qu'utilise l'option `-vo xv`. De plus, ce pilote supporte le réglage de luminosité/contraste/saturation/etc. (à moins que vous n'utilisiez le vieux, lent codec Divx DirectShow, qui le supporte partout), voir la page de man.

Pour que cela fonctionne, vérifiez ceci :

1. Vous devez utiliser XFree86 4.0.2 ou plus récent (les versions précédentes n'ont pas XVideo)

2. Votre carte supporte l'accélération matérielle (les cartes modernes le font)

3. X charge l'extension XVideo, qui doit faire apparaître quelque chose comme :

       (II) Loading extension XVideo

   dans `/var/log/XFree86.0.log`

   ### Note

   NOTE : ceci charge seulement l'extension de XFree86. Dans une installation correcte, celle ci est toujours chargée, et ne signifie pas que le support XVideo spécifique à votre carte est chargée !

4. Votre carte a le support Xv sous Linux. Pour le vérifier, essayez xvinfo, inclus dans XFree86. Cela doit afficher un long message, similaire à :

       X-Video Extension version 2.2
       screen #0
         Adaptor #0: "Savage Streams Engine"
           number of ports: 1
           port base: 43
           operations supported: PutImage
           supported visuals:
             depth 16, visualID 0x22
             depth 16, visualID 0x23
           number of attributes: 5
       (...)
           Number of image formats: 7
             id: 0x32595559 (YUY2)
               guid: 59555932-0000-0010-8000-00aa00389b71
               bits per pixel: 16
               number of planes: 1
               type: YUV (packed)
             id: 0x32315659 (YV12)
               guid: 59563132-0000-0010-8000-00aa00389b71
               bits per pixel: 12
               number of planes: 3
               type: YUV (planar)
       (...etc...)

   Cela doit supporter les formats de pixels YUY2 packed et YV12 planar pour pouvoir être utilisés avec MPlayer.

5. Finalement, vérifiez si MPlayer a été compilé avec le support 'xv'. Faites un mplayer -vo help | grep xv Si le support 'xv' à été compilé une ligne similaire à celle-ci devrait apparaitre :

         xv      X11/Xv

### 4.2.1. Cartes 3dfx

Les anciens pilotes 3dfx avaient des problèmes avec l'accélération XVideo, et ne supportaient ni YUY2 ni YV12. Vérifiez que vous avez bien XFree86 version 4.2.0 ou plus, il fonctionne correctement avec YV12 et YUY2. Les versions précédentes, incluant 4.1.0, plantent avec YV12. Si des problèmes apparaissent en utilisant `-vo xv`, essayez SDL (qui utilise également XVideo) et voyez si cela passe mieux. Lisez la section SDL pour plus de détails.

OU, essayez le NOUVEAU pilote `-vo tdfxfb`! Voir la section tdfxfb.

### 4.2.2. Cartes S3

Les cartes S3 Savage3D doivent fonctionner correctement, mais pour les Savage4, utilisez XFree86 version 4.0.3 ou plus (en cas de problèmes d'image, essayez 16bpp). Comme pour les S3 Virge : il y a un support xv, mais la carte elle-même est très lente, donc vous feriez mieux de la vendre.

Il y a maintenant un pilote framebuffer natif pour les cartes S3 Virge ou similaires à tdfxfb. Activez votre framebuffer (c-à-d ajoutez "`vga=792 video=vesa:mtrr`" en paramètre à votre noyau) et utilisez `-vo s3fb` (`-vf yuy2` et `-dr` peuvent aider aussi).

### Note

Il n'est actuellement pas facile de savoir quels modèles de Savage manquent de support YV12, et de le convertir par un pilote (lent). Si vous suspectez votre carte, prenez un pilote plus récent, ou demandez poliment un pilote qui gère MMX/3DNow sur la liste de diffusion MPlayer-users.

### 4.2.3. Cartes nVidia

nVidia n'est pas un très bon choix sous Linux ... Les pilotes open-source de XFree86 supportent la plupart de ces cartes, mais dans certains cas, vous devrez utiliser les pilotes binaires closed-source de nVidia, disponibles sur le site web de nVidia. Vous aurez toujours besoin de ce pilote si vous voulez l'accélération 3D.

Les cartes Riva128 n'ont pas de support XVideo même avec le pilote nVidia :( Plaignez-vous en à nVidia.

Cependant, MPlayer contient un pilote VIDIX pour la plupart des cartes nVidia. Actuellement il est en phase béta, et a quelques inconvénients. Pour plus d'informations, voir la section VIDIX nVidia.

### 4.2.4. Cartes ATI

Le pilote GATOS (que vous devriez utiliser, à moins d'avoir une Rage128 ou une Radeon) utilise VSYNC par défaut. Cela signifie que la vitesse de décodage (!) est synchronisée à la vitesse de rafraîchissement du moniteur. Si la lecture semble lente, essayez d'enlever VSYNC, ou passez la vitesse de rafraîchissement à n*(fps du film) Hz.

Radeon VE - si vous avez besoin de X, utilisez 4.2.0 ou supérieur pour cette carte. Pas de support TV-out. Bien sûr avec MPlayer vous pouvez heureusement avoir un affichage accéléré, avec ou sans sortie TV, et aucune librairie ou X ne sont requis. Lire la section VIDIX.

### 4.2.5. Cartes NeoMagic

Ces cartes sont utilisées sur de nombreux portables. Vous devez utiliser XFree86 4.3.0 ou supérieur, ou utiliser les pilotes Xv de Stefan Seyfried. Choisissez juste celui qui s'applique à votre version de XFree86.

XFree86 4.3.0 inclut le support Xv, mais Bohdan Horst a envoyé un petit patch pour les sources XFree86 qui accélère les opérations framebuffer (et donc XVideo) jusqu'à quatre fois. Ce patch a été inclus dans le CVS de XFree86 et devrait être dans la prochaine version suivant 4.3.0.

Pour permettre la lecture de contenu de taille DVD changez votre XF86Config comme ceci :

    Section "Device"
        [...]
        pilote "neomagic"
        Option "OverlayMem" "829440"
        [...]
    EndSection

### 4.2.6. Cartes Trident

Si vous voulez utiliser Xv avec une carte Trident, puisque son support ne fonctionne pas avec 4.1.0, installez XFree 4.2.0. Celui-ci ajoute le support Xv plein-écran avec la carte Cyberblade XP.

MPlayer contient également un pilote VIDIX pour la carte Cyberblade/i1.

### 4.2.7. Cartes Kyro/PowerVR

Si vous voulez utiliser Xv avec une carte Kyro (par exemple la Hercules Prophet 4000XT), vous devriez télécharger les pilotes depuis le site de PowerVR.

### 4.2.8. Cartes Intel

Ces cartes sont présentes sur de nombreux portables. Un Xorg récent est recommendé.

Pour permettre la lecture de vidéo de la résolution d'un DVD (voir plus), modifiez le fichier XF86Config/xorg.conf comme tel :

          Section "Device"
          [...]
          pilote "intel"
          Option "LinearAlloc" "6144"
          [...]
          EndSection

L'absence de cette option se caractérise généralement par une erreur du genre

          X11 error: BadAlloc (insufficient resources for operation)

lorsque l'on tente d'utiliser l'option `-vo xv`.

## 4.3. DGA

PRÉAMBULE. Ce document tente d'expliquer en quelques mots ce qu'est le DGA en général et ce que peut faire le pilote de sortie DGA pour MPlayer (et ce qu'il ne peut pas faire).

QU'EST CE QUE LE DGA. DGA est l'abréviation de Direct Graphics Access et permet aux programmes de passer outre le serveur X et de modifier directement la mémoire dans le framebuffer. Techniquement parlant, cela fonctionne en mappant la mémoire du framebuffer dans les adresses mémoire de votre process. Cela est autorisé par le noyau uniquement si vous avez les privilèges super-utilisateur. Vous pouvez les obtenir soit en vous loggant en `root` ou en plaçant le bit suid sur l'exécutable MPlayer (non recommandé).

Il existe deux versions de DGA : DGA1 est utilisé par XFree 3.x.x et DGA2 a été introduit par XFree 4.0.1.

DGA1 propose uniquement un accès direct au framebuffer comme décrit ci-dessus. Pour changer la résolution de votre signal vidéo vous devez utiliser les extensions XVidMode.

DGA2 incorpore les fonctions de XVidMode et permet également de changer le nombre de couleurs de l'affichage. Donc vous pouvez, en exécutant depuis un serveur X 32 bits, passer en 15 bits et vice-versa.

Cependant DGA a quelques défauts. Il semble qu'il reste dépendant de la carte graphique utilisée et de la mise en place du pilote de votre serveur X contrôlant cette carte. Cela peut donc ne pas fonctionner sur tous les systèmes...

INSTALLER LE SUPPORT DGA POUR MPLAYER. Assurez vous d'abord que X charge l'extension DGA, regardez dans `/var/log/XFree86.0.log` :

    (II) Loading extension XFree86-DGA

XFree86 4.0.x ou plus est hautement recommandé! Le pilote DGA de MPlayer est automatiquement détecté par `./configure`, ou vous pouvez le forcer avec l'option `--enable-dga`.

Si le pilote ne peut pas passer en résolution inférieure, essayez les options `-vm` (uniquement avec X 3.3.x), `-fs`, `-bpp`, `-zoom` pour trouver un mode vidéo qui convienne à la vidéo. Il n'existe pas de convertisseur actuellement :(

Passez en `root`. DGA nécessite un accès root pour écrire directement dans la mémoire vidéo. Si vous voulez rester en utilisateur, installez MPlayer SUID root :

    chown root /usr/local/bin/mplayer
    chmod 750 /usr/local/bin/mplayer
    chmod +s /usr/local/bin/mplayer

Maintenant cela fonctionne aussi avec les droits d'un simple utilisateur.

### Faille de sécurité

Cela présente une grosse faille de sécurité ! Ne faites jamais ceci sur un serveur ou un ordinateur accessible par d'autres personnes que vous, ils pourraient obtenir les privilèges root par l'exécutable MPlayer.

Utilisez maintenant l'option `-vo dga` et c'est parti ! (Enfin on peut l'espérer :)) Vous pouvez alors essayer l'option `-vo sdl:pilote=dga`! C'est beaucoup plus rapide !

CHANGEMENT DE RÉSOLUTION. Le pilote DGA vous permet de changer la résolution du signal de sortie. Cela permet d'éviter un redimensionnement logiciel, beaucoup plus lent, et offre une image plein écran. Idéalement il doit passer à la résolution exacte de la vidéo (excepté pour respecter le rapport hauteur/largeur), mais le serveur X permet uniquement le passage à des résolutions définies dans `/etc/X11/XF86Config` (`/etc/X11/XF86Config-4` pour XFree 4.X.X respectivement). Ceux-ci sont définis par des modelines dépendantes des capacités de votre matériel. Le serveur X scanne ce fichier de configuration au démarrage et élimine les modelines ne correspondant pas au matériel. Vous pouvez retrouver dans les logs de X quelles modelines sont acceptables. Elles peuvent être trouvées dans : `/var/log/XFree86.0.log`.

Ces entrées doivent fonctionner correctement avec un chip Riva128, en utilisant le module pilote nv.o du serveur X.

    Section "Modes"
      Identifier "Modes[0]"
      Modeline "800x600"  40     800 840 968 1056  600 601 605 628
      Modeline "712x600"  35.0   712 740 850 900   400 410 412 425
      Modeline "640x480"  25.175 640 664 760 800   480 491 493 525
      Modeline "400x300"  20     400 416 480 528   300 301 303 314 Doublescan
      Modeline "352x288"  25.10  352 368 416 432   288 296 290 310
      Modeline "352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
      Modeline "320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
    EndSection

DGA & MPLAYER. DGA est utilisé en deux endroits par MPlayer : Le pilote SDL peut se compiler pour en faire usage (`-vo sdl:pilote=dga`) et dans le pilote DGA (`-vo dga`). Dans les sections suivantes je vous expliquerai comment fonctionne le pilote DGA pour MPlayer.

FONCTIONNALITÉS. Le pilote DGA s'invoque en spécifiant `-vo dga` en ligne de commande. L'action par défaut consiste à passer dans une résolution s'approchant au mieux de la résolution de la vidéo. Il ignore volontairement les options `-vm` et `-fs` (autorisant le changement de résolution et le plein écran) - il essaie toujours de couvrir le plus large espace possible de votre écran en changeant les modes vidéo, tout en utilisant un seul cycle CPU additionnel pour agrandir l'image. Si vous voulez utiliser un autre mode que celui qu'il a choisi, vous pouvez le forcer par les options `-x` et `-y`. Avec l'option `-v`, le pilote DGA affichera, entre autres choses, une liste de toutes les résolutions supportées par votre fichier `XF86Config`. Avec DGA2 vous pouvez également le forcer a utiliser un certain nombre de couleurs en utilisant l'option `-bpp`. Les nombres de couleurs autorisées sont 15, 16, 24 et 32. Cela dépend de votre matériel, soit ces modes sont nativement supportés, ou si une conversion logicielle doit être appliquée (ce qui peut ralentir la lecture).

Si par chance vous avez assez de mémoire vidéo libre pour y placer une image entière, le pilote DGA utilisera le double buffering, qui améliore considérablement la qualité de lecture. Il doit vous afficher si le double buffering est utilisé ou non.

Double buffering signifie que la prochaine trame de votre vidéo est dessinée dans une partie non affichée de la mémoire graphique tandis que s'affiche la trame en cours. Quand la trame suivante est prête, la puce graphique reçoit simplement l'adresse de celle-ci et récupère les données a afficher depuis cette partie de la mémoire. Pendant ce temps l'autre buffer se remplit avec l'image suivante.

Le double buffering peut s'activer avec l'option `-double` et se désactiver avec `-nodouble`. Actuellement l'option par défaut est de désactiver le double buffering. En utilisant le pilote DGA, l'on-screen display (OSD) fonctionne uniquement avec le doublebuffering activé. Cependant, activer le double buffering peut demander des calculs supplémentaires au processeur (sur mon K6-II+ 525 il utilisait 20% de temps CPU en plus !), ceci dépendant de l'implémentation du DGA pour votre matériel.

PROBLÈMES DE VITESSE. Généralement, l'accès au framebuffer DGA peut s'avérer aussi rapide que le pilote X11, apportant en plus l'avantage de bénéficier d'une image plein écran. Les pourcentages affichés par MPlayer doivent être interprétés avec précaution, comme par exemple avec le pilote X11 où ils n'incluent pas le temps utilisé par le serveur X pour l'affichage. Pour des résultats exacts, branchez un terminal sur le port série de votre machine et lancez un top pour savoir ce qui se passe réellement lors de la lecture...

D'une manière générale, l'accélération acquise en utilisant le DGA au lieu de l'affichage X11 classique dépend fortement de votre carte graphique et des optimisations effectuées sur le module DGA du serveur X.

Si votre système s'avère trop lent, utilisez plutôt une profondeur de couleurs de 15 or 16bits, qui ne demandent que la moitié de la bande passante d'un affichage 32 bits.

Utiliser une profondeur de 24 bits peut s'avérer une bonne solution si votre carte ne supporte nativement que le 32 bits, le transfert se réduisant de 25% par rapport à un mode 32/32.

J'ai vu certains fichiers AVI passer sur des Pentium MMX 266. Les processeurs AMD K6-2 s'avèrent utilisables à partir de 400 MHz.

BOGUES CONNUS. A vrai dire, selon certains développeurs de XFree, DGA est une usine à gaz. Ils recommandent d'éviter son utilisation. Son implémentation n'est pas parfaite avec chaque chipset pour XFree.

- Avec XFree 4.0.3 et `nv.o` un bogue affiche des couleurs étranges.

- Les pilotes ATI requièrent de changer plusieurs fois de mode après l'utilisation du DGA.

- Certains pilotes échouent à revenir à la résolution normale (utilisez Ctrl+Alt+Keypad + et Ctrl+Alt+Keypad - pour y retourner manuellement).

- Certains pilotes affichent simplement des couleurs étranges.

- Certains pilotes mentent a propos de la quantité de mémoire allouée dans l'espace d'adressage du processus, empêchant vo_dga d'utiliser le doublebuffering (SIS ?)

- Certains pilotes semblent ne pas pouvoir reporter ne serait-ce qu'un seul mode valide. Dans ce cas le pilote DGA plantera en vous affichant un mode 100000x100000 ou quelque chose comme ça.

- L'OSD fonctionne uniquement avec le doublebuffering activé (sinon il clignote).

## 4.4. SDL

SDL (Simple Directmedia Layer) est fondamentalement une interface vidéo/audio unifiée. Les programmes qui l'utilisent connaissent uniquement SDL, et pas quels pilotes vidéo ou audio SDL utilise lui-même. Par exemple, un portage de Doom utilisant SDL peut tourner avec svgalib, aalib, X, fbdev et autres, vous devez seulement spécifier (par exemple) le pilote vidéo à utiliser avec la variable d'environnement `SDL_VIDEOpilote`. Enfin, en théorie.

Avec MPlayer, nous avons utilisé le redimensionnement logiciel de ses pilotes X11 pour les cartes qui ne supportent pas XVideo, jusqu'à ce que nous fassions notre propre "dimensionneur" logiciel (plus rapide, plus agréable). Nous avons également utilisé sa sortie aalib, mais maintenant nous avons la nôtre qui est plus confortable. Son support DGA était meilleur que le nôtre, jusqu'à récemment. Vous comprenez maintenant? :)

Cela aide également avec certains pilotes/cartes boguées si la vidéo est saccadée (pas de problème de lenteur du système), ou si l'audio est retardé.

La sortie vidéo de SDL supporte l'affichage des sous-titres sous le film, dans les bandes noires (si elles sont présentes).

## 4.5. SVGAlib

INSTALLATION. Vous devrez installer svgalib et ses paquets de développement afin que MPlayer construise son pilote SVGAlib (autodetecté, mais peut être forcé), et n'oubliez pas d'éditer `/etc/vga/libvga.config` pour l'ajuster à votre carte et votre moniteur.

### Note

Assurez-vous de ne pas utiliser l'option `-fs`, car elle active l'utilisation du redimensionneur logiciel, et c'est lent. Si vous en avez réellement besoin, utilisez l'option `-sws 4` qui donnera une qualité mauvaise, mais qui est un peu plus rapide.

SUPPORT EGA (4BPP). SVGAlib incorpore EGAlib, et MPlayer a la possibilité d'afficher n'importe quel film en 16 couleurs, donc utilisable avec les configurations suivantes :

- carte EGA avec moniteur EGA: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp

- carte EGA avec moniteur CGA: 320x200x4bpp, 640x200x4bpp

La valeur des bpp (bits par pixel) doit être fixé à 4 manuellement : `-bpp 4`

Le film doit probablement être redimensionné pour tenir dans le mode EGA :

    -vf scale=640:350

ou

    -vf scale=320:200

Pour cela nous avons besoin de la routine de redimensionnement rapide mais de mauvaise qualité :

    -sws 4

Peut-être que la correction d'aspect automatique doit être coupée :

    -noaspect

### Note

D'après mon expérience, la meilleur qualité d'image sur les écrans EGA peut être obtenue en diminuant légèrement la luminosité : `-vf eq=-20:0`. J'ai également besoin de diminuer la fréquence d'échantillonnage sur ma machine, car le son est endommagé en 44kHz : `-srate 22050`.

Vous pouvez activer l'OSD et les sous-titres uniquement avec le filtre `expand`, voir la page de man pour les paramètres exacts.

## 4.6. Sortie Framebuffer (FBdev)

La compilation de le sortie FBdev est autodétectée durant `./configure`. Lisez la documentation sur le framebuffer dans le sources du noyau (`Documentation/fb/*`) pour avoir plus d'infos.

Si votre carte ne supporte pas le standard VBE 2.0 (anciennes cartes ISA/PCI, comme les S3 Trio64), et uniquement VBE 1.2 (ou plus ancien ?) : Dans ce cas, VESAfb reste disponible, mais vous devrez charger SciTech Display Doctor (anciennement nommé UniVBE) avant de booter Linux. Utilisez une disquette de boot DOS ou similaire. Et n'oubliez pas d'enregistrer votre copie d'UniVBE ;))

La sortie FBdev accepte certains paramètres additionnels :

`-fb`

  spécifie le device framebuffer a utiliser (par défaut : `/dev/fb0`)

`-fbmode`

  mode a utiliser (d'après le fichier `/etc/fb.modes`)

`-fbmodeconfig`

  fichier de configuration des modes (par défaut : `/etc/fb.modes`)

`-monitor-hfreq`, `-monitor-vfreq`, `-monitor-dotclock`

  valeurs importantes, voir `example.conf`

Si vous désirez passer dans un mode particulier, alors utilisez

    mplayer -vm -fbmode nom_du_mode
    nomfichier

- `-vm` seul choisira le mode le mieux adapté dans votre fichier `/etc/fb.modes`. Peut s'utiliser avec les options `-x` et `-y`. L'option `-flip` est supportée uniquement si le format de pixels de la vidéo correspond au format de pixel du mode framebuffer. Faites attention à la valeur bpp, le pilote fbdev essaie par défaut d'utiliser la valeur courante, ou bien celle spécifiée par l'option `-bpp`.

- l'option `-zoom` n'est pas supportée (Utilisez l'option `-fs`). Vous ne pouvez pas utiliser de modes 8bpp (ou moins).

- vous pouvez vouloir désactiver le curseur :

      echo -e '\033[?25l'

  ou

      setterm -cursor off

  et l'économiseur d'écran :

      setterm -blank 0

  Pour afficher de nouveau le curseur :

      echo -e '\033[?25h'

  ou

      setterm -cursor on

### Note

Le changement de mode vidéo avec FBdev ne fonctionne pas avec le framebuffer VESA, et ne nous le demandez pas, il ne s'agit pas d'une limitation de MPlayer.

## 4.7. Framebuffer Matrox (mga_vid)

`mga_vid` est la combinaison d'un pilote de sortie vidéo et d'un module du noyau Linux qui utilise le module vidéo de mise à l'échelle et de sur-impression des Matrox G200/G400/G450/G550. pour effectuer la conversion YUV->RGB et le redimentionnement arbitraire de la vidéo.

Pour le pilote compatible avec les noyaux Linux 2.6.x, allez sur +http://attila.kinali.ch/mga/ ou regardez sur le dépot externe Subversion de mga_vid qui peut être consulté avec

        svn checkout svn://svn.mplayerhq.hu/mga_vid

Installation :

1. Pour l'utiliser, vous devez au préalable compiler `pilotes/mga_vid.o` :

       make pilotes

2. Puis lancez (sous le compte `root`)

       make install-pilotes

   qui devrait installer le module et créer le noeud de périphérique pour vous. Chargez le pilote avec

       insmod mga_vid.o

3. Vous pouvez vérifier si la détection de la taille mémoire est correcte en utilisant la commande dmesg. Si elle s'avère incorrecte, utilisez l'option `mga_ram_size` (rmmod mga_vid avant), en spécifiant la mémoire de la carte en Mo :

       insmod mga_vid.o mga_ram_size=16

4. Pour le charger/décharger automatiquement, insérez d'abord cette ligne a la fin du fichier `/etc/modules.conf` :

       alias char-major-178 mga_vid

5. Vous devez ensuite (re)compiler MPlayer, ./configure détectera `/dev/mga_vid` et construira le pilote 'mga'. Pour l'utiliser dans MPlayer, lancez-le avec l'option `-vo mga` si vous êtes en console matroxfb, ou `-vo xmga` sous XFree86 3.x.x ou 4.x.x.

Le pilote mga_vid coopère avec Xv.

Le périphérique `/dev/mga_vid` peut être lu (par exemple par

    cat /dev/mga_vid

) pour avoir des infos, et écrit pour changer la luminosité :

    echo "brightness=120" > /dev/mga_vid

Une application de test appelée mga_vid_testest présente dans le même répertoire. Elle devrait afficher des images 256x256 sur l'écran si tout fonctionne bien.

## 4.8. Support YUV 3Dfx

Ce pilote utilise le pilote framebuffer tdfx du noyau pour lire des films avec accélération YUV. Vous aurez besoin d'un noyau avec support tdfxfb, et de recompiler avec

    ./configure --enable-tdfxfb

## 4.9. tdfx_vid

Il s'agit de la combinaison d'un module du noyau Linux et d'un pilote de sortie vidéo similaire à mga_vid. Vous aurez besoin d'un noyau 2.4.x avec le pilote `agpgart` puisque `tdfx_vid` utilise AGP. Ajoutez l'option `--enable-tdfxfb` lors du configure pour compiler le pilote de la sortie vidéo puis compilez le module noyau avec les instructions suivantes.

Installation du module noyau tdfx_vid.o :

1. Compilez `pilotes/tdfx_vid.o` :

                 make pilotes

2. Puis lancez (avec le compte `root`)

       make install-pilotes

   qui devrait installer le module et créer le noeud de périphérique pour vous. Chargez le pilote avec

       insmod tdfx_vid.o

3. Pour automatiser le chargement/déchargement quand nécessaire, commencez par inclure la ligne suivante à la fin du fichier `/etc/modules.conf` :

       alias char-major-178 tdfx_vid

Une application de test appelée tdfx_vid_test est disponible dans le même répertoire Elle devrait afficher des informations utiles si tout fonctionne bien.

## 4.10. Sortie OpenGL

MPlayer supporte l'affichage de films en utilisant OpenGL, mais si votre plateforme/pilote supporte xv comme ça devrait être le cas sur un PC avec Linux, utilisez xv à la place, les performances d'OpenGL sont bien pires. Si vous avez une implémentation X11 sans support xv, OpenGL est alors une alternative viable.

Malheureusement tous les pilotes ne supportent pas cette fonction. Le pilote Utah-GLX (pour XFree86 3.3.6) le supporte pour toutes les cartes. Voir http://utah-glx.sf.net pour son téléchargement et les infos d'installation.

XFree86(DRI) 4.0.3 et supérieur supporte OpenGL avec les cartes Matrox et Radeon, 4.2.0 ou supérieur supporte la Rage128. Voir http://dri.sf.net pour son téléchargement et les infos d'installation.

Une astuce d'un de nos utilisateurs : la sortie vidéo GL peut être utilisée pour obtenir une sortie TV synchronisée verticalement. Vous devrez définir une variable d'environnement (au moins sur nVidia) : export __GL_SYNC_TO_VBLANK=1

## 4.11. AAlib – affichage en mode texte

AAlib est une librairie affichant des graphismes en mode texte, en utilisant un puissant moteur de rendu ASCII. De nombreux programmes le supportent déjà, comme Doom, Quake, etc. MPlayer possède pour cela un pilote parfaitement utilisable. Si `./configure` détecte une installation de aalib, le pilote aalib libvo sera compilé.

Vous pouvez utiliser certains raccourcis clavier dans le fenêtre AA pour changer les options de rendu :

Touche | Action
--- | ---
1 | diminue le contraste
2 | augmente le contraste
3 | diminue la luminosité
4 | augmente la luminosité
5 | active/désactive le rendu rapide
6 | change le mode de dithering (none, error distribution, Floyd Steinberg)
7 | inverse l'image
8 | passe des contrôles de aa vers ceux de MPlayer et vice-versa

Vous pouvez utiliser les lignes de commande suivantes :

`-aaosdcolor=`V``

  change la couleur de l'OSD

`-aasubcolor=`V``

  Change la couleur des sous-titres

  where `V` peut être : `0` (normal), `1` (noir), `2` (gras), `3` (fontes grasses), `4` (inversé), `5` (spécial).

AAlib elle-même propose de nombreuses options. En voici les principales :

`-aapilote`

  Choisit le pilote aa (X11, curses, Linux)

`-aaextended`

  Utilise les 256 caractères

`-aaeight`

  Utilise l'ASCII 8 bits

`-aahelp`

  Affiche toutes les options de AAlib

### Note

Le rendu prend beaucoup de temps CPU, spécialement en utilisant AA-on-X (AAlib sur X), et prend moins de CPU sur une console standard, sans framebuffer. Utilisez SVGATextMode pour passer en mode texte large, et appréciez ! (une carte hercules en second écran, c'est génial :)) (mais à mon humble avis vous pouvez utiliser l'option `-vf 1bpp` pour avoir des graphismes sur hgafb :)).

Utilisez l'option `-framedrop` si votre machine n'est pas suffisamment rapide pour afficher toutes les trames !

Sur un terminal vous obtiendrez de meilleures performances en utilisant le pilote linux, et pas curses (`-aapilote linux`). Cependant vous devez avoir un accès en écriture sur `/dev/vcsa`<terminal>``. Ce n'est pas autodétecté par aalib, mais vo_aa essaie de déterminer le meilleur mode. Voir http://aa-project.sf.net/tune pour une meilleure optimisation.

## 4.12. `libcaca` – Librairie ASCII Art en couleur

La `libcaca` est une librairie graphique qui affiche du text à la place des pixels, et qui peut donc fonctionner sur des cartes graphiques anciennes ou sur des terminaux texte. Elle n'est pas très différente de la célèbre librairie `AAlib`. `libcaca` nécessite un terminal pour fonctionner, et devrait ainsi fonctionner sur tous les systèmes Unix (dont Mac OS X) en utilisant soit la librairie `slang` soit la librairie `ncurses`, sous DOS en utilisant la librairie `conio.h`, et sous les systèmes Windows en utilisant soit `slang`, soit `ncurses` (via émulation Cygwin), ou soit `conio.h`. Si `./configure` détecte `libcaca`, le pilote libvo caca sera compilé.

Les différences avec `AAlib` sont les suivantes :

- 16 couleurs disponible pour l'affichage des caractères (256 paires de couleur)

- tramage des images en couleur

Mais `libcaca` à également les limitations suivantes :

- aucun support pour la luminosité, le contraste, le gamma

Vous pouvez utiliser certaines touches dans la fenêtre caca pour changer les options de rendu :

Key | Action
--- | ---
d | Change de méthode de tramage.
a | Change de méthode d'anticrénelage.
b | Change le fond.

`libcaca` regarde également la présence de certaines variables d'environnement :

`CACA_pilote`

  Définie le pilote caca recommandé, c-a-d. ncurses, slang, x11.

`CACA_GEOMETRY (X11 uniquement)`

  Spécifie le nombre de lignes de collones. par ex. 128x50.

`CACA_FONT (X11 uniquement)`

  Spécifie la police à utiliser. par ex. fixed, nexus.

Use the `-framedrop` option if your computer is not fast enough to render all frames.

## 4.13. VESA - sortie sur BIOS VESA

Ce pilote à été conçu et présenté comme un pilote générique pour n'importe quelle carte ayant un BIOS compatible VESA VBE 2.0. Un autre avantage de ce pilote est qu'il force l'ouverture de la sortie TV. dixit VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16, 1998 (Page 70) :

> Conceptions des contrôleurs doubles. VBE 3.0 supporte la conception de contrôleur double en assumant que comme les deux contrôleurs sont typiquement fournis par le même OEM, sous le contrôle d'un seul ROM BIOS sur la même carte graphique, il est possible de cacher le fait que deux contrôleurs sont présent dans l'application. Cela a la limitation d'interdire l'utilisation simultanée de chacun des contrôleurs, mais permet aux applications avant VBE 3.0 de fonctionner normalement. La fonction VBE 00h (Return Controller Information) retourne l'information combinée des deux contrôleurs, incluant la liste combinée des modes disponibles. Quand une application sélectionne un mode, le contrôleur approprié est activé. Chacune des fonctions VBE restantes s'appliquent ensuite sur le contrôleur actif.

Donc vous avez des chances de faire fonctionner la sortie TV avec ce pilote (Je suppose que la sortie TV est souvent un affichage indépendant ou au moins une sortie indépendante).

AVANTAGES

- Vous avez la possibilité de voir des films même si Linux ne connaît pas votre matériel vidéo.

- Vous n'avez pas besoin d'avoir de logiciels graphiques installés sur votre Linux (comme X11 (alias XFree86), fbdev et autres). Ce pilote peut fonctionner en mode texte.

- Vous avez des chances de faire fonctionner la sortie TV (C'est le cas au moins pour les cartes ATI).

- Ce pilote appelle le gestionnaire `int 10h` ainsi ce n'est pas un émulateur - il appelle des choses réelles dans le BIOS réel en mode réel (pour l'instant en mode vm86).

- Vous pouvez l'utiliser avec VIDIX, accélérant ainsi l'affichage vidéo et la sortie TV en même temps (recommandé pour les cartes ATI) !

- si vous avez un BIOS VESA VBE 3.0+, et que vous avez spécifié `monitor-hfreq, monitor-vfreq, monitor-dotclock` quelque part (fichier de config, ou ligne de commande) vous aurez le plus haut taux de rafraîchissement possible (en utilisant la Formule Générale de Timing). Pour activer cette fonctionnalité vous devrez spécifier toutes les options de votre moniteur.

DÉSAVANTAGES

- Il ne fonctionne que sur les systèmes x86.

- Il ne peut être utilisé qu'en `root`.

- Pour l'instant il n'est disponible que pour Linux.

### Important

N'utilisez pas ce pilote avec GCC 2.96! Cela ne fonctionnera pas !

OPTIONS EN LIGNE DE COMMANDE POUR VESA

`-vo vesa:`opts``

  actuellement reconnu : `dga` pour forcer le mode dga et `nodga`pour le désactiver. En mode dga vous pouvez activer le double buffering via l'option `-double`. Note : vous pouvez omettre ces paramètres pour activer l' autodétection du mode dga.

PROBLÈMES CONNUS ET CONTOURNEMENTS

- Si vous avez installé des polices NLS sur votre Linux box et que vous lancez le pilote VESA depuis le mode texte alors après la fermeture de MPlayer vous aurez la police de la ROM chargée à la place de la nationale. Vous pouvez recharger la police nationale en utilisant l'utilitaire setsysfont de la distribution Mandrake/Mandriva par exemple. (Astuce : Le même utilitaire peut être utilisé pour la localisation de fbdev).

- Certains pilotes graphiques Linux de mettent pas à jour le mode BIOS actif en mémoire DOS. Donc si vous avez un tel problème - utilisez toujours le pilote VESA uniquement depuis le mode texte. Sinon le mode texte (#03) sera activé de toute façon et vous devrez redémarrer votre ordinateur.

- Souvent après la fin du pilote VESA vous avez un écran noir. Pour retourner à l'état original de votre écran - passez simplement sur une autre console (en tapant Alt+F<x>) et revenez à la première de la même façon.

- Pour faire fonctionner la sortie TV vous devez avoir branché le connecteur TV avant le démarrage de votre PC car le BIOS vidéo s'initialise uniquement à ce moment-là.

## 4.14. X11

À éviter si possible. Sort sur X11 (utilise l'extension de mémoire partagée), sans aucune accélération matérielle du tout. Supporte le redimensionnement logiciel (accéléré par MMX/3DNow/SSE, mais toujours lent), utilisez les options `-fs -zoom`. La plupart des cartes possèdent un redimensionnement matériel, pour elles utilisez la sortie `-vo xv` ou `-vo xmga` pour les Matrox.

Le problème est que la plupart des pilotes de carte ne supportent pas l'accélération sur la seconde tête/TV. Dans ce cas, vous voyez une fenêtre verte/bleue à la place du film. C'est ici que ce pilote entre en jeu, mais vous aurez besoin d'un CPU puissant pour utiliser le redimensionnement logiciel. N'utilisez pas le pilote SDL de sortie+dimensionnement logiciel, la qualité d'image est pire !

Le redimensionnement logiciel est très lent, vous devriez essayer de changer de mode vidéo à la place. C'est très simple. Voyez la section des modelines DGA, et insérez-les dans votre `XF86Config`.

- Si vous avez XFree86 4.x.x : utilisez l'option `-vm`. Elle changera de résolution pour s'adapter à celle de votre film. Si non :

- Avec XFree86 3.x.x : Vous devrez parcourir les résolutions possibles avec les touches Ctrl+Alt+Keypad + et Ctrl+Alt+Keypad -.

Si vous n'arrivez pas à trouver les mode que vous avez inséré, regardez dans la sortie de XFree86. Certains pilotes ne peuvent utiliser les pixelclocks bas qui sont requis pour les basses résolutions.

## 4.15. VIDIX

PRÉAMBULE. VIDIX est l'abréviation de VIDéo Interface for *niX. VIDIX a été conçu et présenté comme une interface pour les pilotes espace-utilisateur rapides fournissant des performances égales à celles de mga_vid pour les cartes Matrox. Il est aussi très portable.

Cette interface à été conçue comme une tentative de regrouper les interfaces d'accélération existantes (connues sous les noms mga_vid, rage128_vid, radeon_vid, pm3_vid) dans un schéma uniforme. Il fournit une interface de haut niveau aux chipsets connus sous les noms de BES (BackEnd scalers) ou OV (Video Overlays). Il ne fournit pas une interface de bas niveau pour les choses connues sous le nom de serveurs graphiques. (Je ne veux pas concourir avec l'équipe X11 en changement de mode graphique). C'est à dire que le but principal de cette interface est de maximiser la vitesse de la lecture vidéo.

UTILISATION

- Vous pouvez utiliser le pilote de sortie vidéo autonome : `-vo xvidix`. Ce pilote à été développé comme un front end X11 pour la technologie VIDIX. Il requiert un serveur X et ne peut fonctionner que sous X. Notez que, comme il accède directement au matériel et contourne le pilote X, les pixmaps mis en cache dans la mémoire de la carte graphique peuvent être corrompus. Vous pouvez éviter cela en limitant la quantité de mémoire utilisée par X avec l'option "VideoRam" dans la section "device" de XFree86Config. Vous devriez fixer cette valeur avec la quantité de mémoire installée sur votre carte moins 4Mo. Si vous avez moins de 8Mo de mémoire vidéo, vous pouvez utiliser l'option "XaaNoPixmapCache" dans la section "screen" à la place.

- Il existe un pilote console VIDIX : `-vo cvidix`. Celui-ci requiert un framebuffer fonctionnel et initialisé pour la plupart des cartes (ou sinon vous brouillerez simplement l'écran), et vous aurez un effet similaire à `-vo mga` ou `-vo fbdev`. Les cartes nVidia par contre sont capables d'afficher de la vidéo graphique dans une console texte. Voir la section nvidia_vid pour plus d'informations. Pour vous débarrasser du texte sur les bords et du curseur clignotant essayez

      setterm -cursor off > /dev/tty9

  (en supposant que le terminal `tty9`n'est pas utilisé), puis basculez sur `tty9`. Sinon, l'option `-colorkey 0`devrait lire la vidéo en arrière-plan, un tant soit peu que la fonctionnalité de `-colorkey` soit opérationelle.

- Vous pouvez utiliser le sous-périphérique VIDIX qui à été appliqué à de nombreux pilotes de sortie vidéo, tels que : `-vo vesa:vidix` (Linux uniquement) et `-vo fbdev:vidix`.

De plus le pilote de sortie vidéo utilisé avec VIDIX n'a pas d'importance.

BESOINS

- La carte graphique devrait être en mode graphique (excepté les cartes nVidia avec le pilote `-vo cvidix`).

- Le pilote de sortie vidéo de MPlayer devrait connaître les modes vidéos actifs et être capable de donner au sous-périphérique VIDIX quelques caractéristiques du serveur.

MÉTHODES D'UTILISATION. Quand VIDIX est utilisé en temps que sous-périphérique (`-vo vesa:vidix`), alors la configuration du mode vidéo est faite par le périphérique de sortie vidéo (vo_server en bref). Par conséquent vous pouvez passer en ligne de commande les mêmes touches que pour vo_server. De plus il comprends l'option `-double` comme un paramètre global (je recommande l'utilisation de cette option au moins pour les cartes ATI). Comme pour `-vo xvidix`, il reconnaît actuellement les options suivantes : `-fs -zoom -x -y -double`.

Vous pouvez aussi spécifier le pilote VIDIX directement en troisième sous-argument en ligne de commande :

    mplayer -vo xvidix:mga_vid.so -fs -zoom -double
    fichier.avi

ou

      mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32
    fichier.avi

Mais c'est dangereux, et vous ne devriez pas faire ça. Dans ce cas le pilote indiqué sera forcé et le résultat sera imprévisible (cela peut bloquer votre ordinateur). Vous ne devriez le faire UNIQUEMENT si vous êtes absolument sûr que cela va fonctionner, et MPlayer ne le fait pas automatiquement. Dites-le aux développeurs, SVP. La bonne façon est d'utiliser VIDIX sans argument pour activer l'autodétection du pilote.

### 4.15.1. svgalib_helper

Comme VIDIX requiert l'accès direct au matériel, vous avez le choix entre le lançer en tant que root ou définir le bit SUID du binaire MPlayer (Attention : c'est une faille de sécurité !). Sinon, si vous utilisez un noyau Linux 2.4.x, vous pouvez utiliser un module noyau spécial, comme ceci :

1. Téléchargez la version de développement de svgalib (par exemple 1.9.17), OU téléchargez une version faite par Alex spécialement pour utilisation avec MPlayer (elle ne nécessite pas les sources de svgalib pour compiler) ici.

2. Compilez le module dans le répertoire `svgalib_helper` (il peut être trouvé à l'intérieur du répertoire `svgalib-1.9.17/kernel/` si vous avez téléchargé les sources depuis le site de svgalib) et faire un insmod.

3. Pour créer les périphériques nécessaires dans le répertoire `/dev`, faites un

       make device

   dans le répertoire `svgalib_helper`, en root.

4. Puis lancez de nouveau `configure` en passant les paramètres `--enable-svgalib_helper` et `--extra-cflags=/path/to/svgalib_helper/sources`, ajustés à l'emplacement où vous avez décompressé les sources.

5. Recompilez.

### 4.15.2. Cartes ATI

Actuellement la plupart des cartes ATI sont supportés nativement, de la Mach64 jusqu'aux nouvelles Radeons.

Il y a deux binaires compilés : `radeon_vid` pour les cartes Radeon et `rage128_vid` pour les Rage 128. Vous pouvez en forcer un ou laisser le système VIDIX le détecter parmis les pilotes disponibles.

### 4.15.3. Cartes Matrox

Les Matrox G200, G400, G450 et G550 doivent normalement fonctionner.

Le pilote supporte les égaliseurs vidéo et devrait être presque aussi rapide que le framebuffer Matrox

### 4.15.4. Cartes Trident

Il y a un pilote disponible pour les chipsets Trident Cyberblade/i1, qui peuvent être trouvés sur les cartes-mère VIA Epia.

Le pilote a été écrit et est maintenu par Alastair M. Robinson.

### 4.15.5. Cartes 3DLabs

Bien qu'il y ai un pilote pour les chips 3DLabs GLINT R3 et Permedia3, personne ne l'a testé, donc les rapports sont les bienvenus.

### 4.15.6. Cartes nVidia

Une fonction unique du pilote nvidia_vid est la capacité d'afficher de la vidéo dans un console uniquemnent textuelle - avec aucun framebuffer ou X. Pour ce faire, nous aurons besoin d'utiliser la sortie `cvidix`, comme le montre l'exemple suivant :

        mplayer -vo cvidix exemple.avi

### 4.15.7. Cartes SiS

C'est du code très expérimental, comme nvidia_vid.

Testé sur SiS 650/651/740 (les chipsets les plus couramment utilisés dans les versions SiS des barebones "Shuttle XPC")

Rapports attendus !

## 4.16. DirectFB

> "DirectFB est une librairie graphique conçue pour les systèmes embarqués. Il offre des performances d'accélération matérielle maximum pour un minimum d'utilisation des ressources et de charge." - citation de http://www.directfb.org

J'exclurai les fonctionnalités de DirectFB dans cette section.

Bien que MPlayer ne soit pas supporté en tant que "fournisseur vidéo" dans DirectFB, ce pilote de sortie activera la lecture vidéo au travers de DirectFB. Il sera - bien sûr - accéléré, sur ma Matrox G400 la vitesse de DirectFB était la même que celle de XVideo.

Essayez toujours d'utiliser la dernière version de DirectFB. Vous pouvez utiliser les options DirectFB en ligne de commande, en utilisant l'option `-dfbopts`. La sélection de couche peut être faite par la méthode sous-périphérique, par exemple : `-vo directfb:2` (couche -1 par défaut : autodétection)

## 4.17. DirectFB/Matrox (dfbmga)

Veuillez lire la section DirectFB principale pour avoir les informations générales.

Ce pilote de sortie vidéo activera CRTC2 (sur la seconde tête) sur les cartes Matrox G400/G450/G550, affichant la vidéo indépendemment de la première tête.

Ville Syrjala a un fichier README et un HOWTO sur sa page web qui explique comment faire fonctionner la sortie TV DirectFB avec les cartes Matrox.

### Note

La première version de DirectFB que nous avons pu faire fonctionner était la 0.9.17. (elle est boguée, nécessite le patch `surfacemanager` disponible sur l'URL ci-dessus). Le portage du code CRTC2 dans mga_vid est prévu depuis des années, les patches sont les bienvenus.

## 4.18. Décodeurs MPEG

### 4.18.1. sorties et entrées DVB

MPlayer supporte les cartes équipées du chipset DVB Siemens des vendeurs tels que Siemens, Technotrend, Galaxis ou Hauppauge. Les derniers pilotes DVB sont disponibles sur le site Linux TV. Si vous voulez faire du transcodage logiciel vous aurez besoin d'un CPU d'au moins 1Ghz.

Configure devrait détecter votre carte DVB. Si ce n'est pas le cas, forcez la détection avec

    ./configure --enable-dvb

Si vous avez des entêtes ost dans un chemin non-standard, corrigez ce chemin avec

    ./configure --extra-cflags=
    répertoire source DVB/ost/include

Ensuite compilez et installez comme d'habitude.

UTILISATION. Le décodage matériel de flux contenants des vidéos MPEG-1/2 et/ou du son MPEG peut être fait avec cette commande :

    mplayer -ao mpegpes -vo mpegpes
    fichier.mpg|vob

Décoder n'importe quel autre type de flux vidéo nécessite le recodage en MPEG-1, donc c'est lent et peut ne pas valoir la chandelle, surtout si votre ordinateur est lent. Cela peut être obtenu en utilisant une commande comme celle-ci :

    mplayer -ao mpegpes -vo mpegpes votrefichier.ext
    mplayer -ao mpegpes -vo mpegpes -vf expand
    votrefichier.ext

Notez que les cartes DVB ne supportent que les tailles 288 par 576 pour le PAL ou 240 par 480 pour le NTSC. Vous devez redimensionner vers d'autres tailles en ajoutant `scale=largeur:hauteur` avec la largeur et la hauteur que vous voulez à l'option `-vf`. Les cartes DVB acceptent des largeurs variées, comme 720, 704, 640, 512, 480, 352 etc et font un redimensionnement matériel dans le sens horizontal, vous n'avez donc pas besoin de redimensionner horizontalement dans la plupart des cas. Pour un DivX en 512x384 (aspect 4:3) essayez :

    mplayer -ao mpegpes -vo mpegpes -vf scale=512:576

Si vous avez un film plein-écran et que vous ne voulez pas l'afficher à sa taille complète, vous pouvez utiliser le filtre `expand=l:h` pour ajouter des bandes noires. Pour voir un MPEG-4 (DivX) en 640x384, essayez :

    mplayer -ao mpegpes -vo mpegpes -vf expand=640:576
    fichier.avi

Si votre CPU est trop lent pour un MPEG-4 (DivX) en taille complète 720x576, essayez de diminuer la taille :

    mplayer -ao mpegpes -vo mpegpes -vf scale=352:576
    fichier.avi

Si la vitesse ne s'améliore pas, essayez également la diminution verticale :

    mplayer -ao mpegpes -vo mpegpes -vf scale=352:288
    fichier.avi

Pour l'OSD et les sous-titres utilisez la fonction expand du plugin OSD. Donc, au lieu de `expand=l:h` ou `expand=l:h:x:y`, utilisez `expand=l:h:x:y:1` (le 5ème paramètre `:1` à la fin activera le rendu OSD). Vous pouvez aussi vouloir monter un peu l'image pour obtenir plus de surface noire pour les sous-titres. Vous pouvez aussi monter les sous-titres , si ils sont en dehors de l'écran, utilisez l'option `-subpos <0-100>` pour l'ajuster (`-subpos 80` est un bon choix).

Pour pouvoir lire des films non-25fps sur une TV PAL ou avec un CPU lent, ajoutez l'option `-framedrop`.

Pour garder les dimensions des fichiers MPEG-4 (DivX) et obtenir les paramètres de zoom optimaux (zoom matériel horizontal et zoom logiciel vertical en gardant l'aspect original), utilisez le nouveau filtre dvbscale :

    pour une TV 4:3:  -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
    pour une TV 16:9: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1

TV numérique (module d'entrée DVB). Vous pouvez utiliser votre carte DVB pour regarder la TV numérique.

Vous devriez également avoir les programmes scan et szap/tzap/czap/azap installés; ils sont inclus dans le paquet de pilotes.

Vérifiez que vos pilotes fonctionnent correctement avec un programme tel que dvbstream (c'est la base du module d'entrée DVB).

Maintenant vous devriez compiler un fichier `~/.mplayer/channels.conf`, avec la syntaxe acceptée par szap/tzap/czap/azap, ou le faire compiler par scan.

Si vous avez plus d'un type de carte (c-a-d. Satellite, Terrestre, Cable et ATSC) vous pouvez sauvegarder vos fichiers de canaux en tant que `~/.mplayer/channels.conf.sat`, `~/.mplayer/channels.conf.ter`, `~/.mplayer/channels.conf.cbl`, et `~/.mplayer/channels.conf.atsc`, respectivement, pour qu'implicitement MPlayer les utilise à la place de `~/.mplayer/channels.conf`, et vous n'avez qu'à spécifier la carte à utiliser.

Assurez-vous de n'avoir que des canaux réellement disponibles dans votre fichier `channels.conf`, ou MPlayer attendra pour un programme non-cryptée.

Dans vos champs audio et vidéo vous pouvez utiliser la syntaxe suivante : `...:pid[+pid]:...` (avec un maximum de 6 pids pour chaque); dans ce cas MPlayer inclura dans le flux les pids indiqués, plus le pid 0 (qui contient le PAT). Vous devriez toujours inclure dans chaque ligne le pid PMT et PCR du canal correspondant (si vous le connaissez). Vous pouvez aussi mettre 8192, ce qui sélectionnera tous les pids de cette fréquence, puis vous pourrez basculer entre les programmes avec TAB. Ceci risque de nécessiter plus de bande passante bien que les cartes à bas coût transfèrent toujours tous les canaux au moins vers le noyau si bien que cela ne fait pas beaucoup de différence pour elles. Autres utilisations possibles : pid televideo, seconde piste audio,...

Si MPlayer se plain souvent avec le message suivant :

    Too many video/audio packets in the buffer

ou si vous remarquez une désynchronisation grandissante entre le son et la vidéo, vérifiez la présence du pid PCR dans votre flux (nécessaire pour se conformer au model de tampon de votre émetteur) et/ou essayez d'utiliser le démultiplexeur MPEG-TS de libavformat en ajoutant à votre ligne de commande : `-demuxer lavf -lavfdopts probesize=128` .

Pour afficher le premier des canaux présents dans votre liste, tapez

    mplayer dvb://

Si vous voulez regarder un canal spécifique, tel que R1, tapez

    mplayer dvb://R1

Si vous avez plus d'une carte vous pouvez aussi spécifier le numéro de la carte où le canal est visible (par ex. 2) avec la syntaxe :

    mplayer dvb://2@R1

Pour changer de canal tapez sur les touches h (suivant) et k (précédent), ou utilisez le menu OSD.

Pour désactiver temporairement un flus audio ou vidéo, copiez les lignes suivantes dans le fichier `~/.mplayer/input.conf` :

        % set_property  switch_video -2
        & step_property switch_video
        ? set_property  switch_audio -2
        ^ step_property switch_audio

(Ceci modifie les préférences des raccourcis claviers) En appuyant sur la touche correspondant à

    switch_x -2

, le flux associé sera fermé. En appuyant sur la touche correspondant à

    step_x

, le flux sera réouvert. Notez que ce mécanisme ne fonctionnera pas comme attendu si il y a de multiples flux audio et vidéo dans le média.

Pour éviter les saccadements et les messages d'erreurs comme "Votre système est trop LENT pour jouer ce fichier !" lors de la lecture (pas en enregistrement), il est conseillé d'ajouter

    -mc 10 -speed 0.97 -af scaletempo

sur la ligne de commande, en ajustant le paramètre `scaletempo` à vos resources.

Si votre `~/.mplayer/menu.conf` contient une entrée `<dvbsel>`, comme celle du fichier d'exemple `etc/dvb-menu.conf` (que vous pouvez utiliser pour outrepasser `~/.mplayer/menu.conf`), le menu principal affichera un sous-menu qui vous permettra de choisir les canaux présents dans votre `channels.conf`, peut-être précédé d'un menu des cartes disponibles si il y en a plus d'une utilisable par MPlayer.

Si vous voulez sauvegarder un programme sur le disque vous pouvez utiliser

      mplayer -dumpfile r1.ts -dumpstream dvb://R1

Si vous voulez l'enregistrer dans un format différent (le ré-enregistrer) vous pouvez lancer une commande comme

      mencoder -o r1.avi -ovc xvid -xvidencopts
    bitrate=800 \
        -oac mp3lame -lameopts cbr:br=128 -pp=ci
    dvb://R1

Lisez la page de man pour avoir une liste des options que vous pouvez passer au module d'entrée DVB.

FUTUR. Si vous avez des questions ou voulez entendre les annonces de fonctionnalités et participer aux discussions sur ce sujet, rejoignez notre liste de diffusion MPlayer-DVB . SVP, rappelez-vous que la langue de la liste est l'anglais.

Dans le futur vous pouvez vous attendre à pouvoir afficher l'OSD et les sous-titres en utilisant la fonction OSD native des cartes DVB.

### 4.18.2. DXR2

MPlayer supporte l'affichage accéléré avec la carte Creative DXR2.

Tout d'abord vous devrez avoir les pilotes correctement installés. Vous pouvez trouver les pilotes et les instructions d'installation sur le site DXR2 Resource Center.

UTILISATION

`-vo dxr2`

  Active la sortie TV

`-vo dxr2:x11` ou `-vo dxr2:xv`

  Active la sortie Overlay sous X11

`-dxr2 <option1:option2:...>`

  Cette option est utilisée pour contrôler le pilote DXR2.

Le chipset overlay utilisé sur la DXR2 est d'assez mauvaise qualité mais les paramètres par défaut devraient suffire pour tout le monde. L'OSD peut être utilisable avec l'overlay (pas sur une télé) en la dessinant avec une couleur-clé. Avec les paramètres de couleur-clé par défaut vous obtiendrez des résultats variables, généralement vous vérez la couleur-clé autour des personnages et autres effets amusants. Mais si vous ajustez correctement les paramètres de couleur-clé vous devriez pouvoir obtenir des résultats acceptables.

Veuillez lire la page de man pour les options disponibles.

### 4.18.3. DXR3/Hollywood+

MPlayer supporte l'accélération matérielle avec les cartes Creative DXR3 et Sigma Designs Hollywood Plus. Ces cartes ont toutes deux le chip de décodage MPEG em8300 de Sigma Designs.

Tout d'abord vous aurez besoin de pilotes DXR3/H+ correctement installés, version 0.12.0 ou supérieure. Vous pouvez trouver les pilotes et les instructions d'installation sur le site DXR3 & Hollywood Plus for Linux. `configure` devrait détecter votre carte automatiquement, la compilation devrait se faire sans problèmes.

UTILISATION

`-vo dxr3:prebuf:sync:norm=x:`périph.``

  `overlay` active l'overlay à la place de TV-Out. Cela requiert que vous ayez correctement configuré l'overlay. La manière la plus facile de configurer l'overlay est de d'abord lancer autocal. Ensuite lancez MPlayer avec la sortie dxr3 et sans overlay activé, lancez dxr3view. Dans dxr3view vous pouvez régler les paramètres overlay et en voir les effets en temps réel, peut-être cette fonction sera supporté par la GUI de MPlayer dans le futur. Quand l'overlay est correctement configuré, vous n'avez plus besoin d'utiliser dxr3view. `prebuf` active le prebuffering. C'est une fonction du chip em8300 qui l'active pour garder plus d'une trame de vidéo à la fois. Cela signifie que quand vous utilisez le prebuffering MPlayer essaiera de garder le buffer vidéo rempli de données à tout moment. Si vous êtes sur une machine lente MPlayer utilisera près de, voir exactement 100% du CPU. C'est particulièrement courant si vous lisez de purs flux MPEG (comme les DVDs, SVCDs et ainsi de suite) car comme MPlayer n'aura pas besoin de le ré-encoder en MPEG, il remplira le buffer très rapidement. Avec le prebuffering la lecture est beaucoup moins sensible aux autres programmes monopolisant le CPU, il ne sautera pas d'images à moins que des programmes monopolisent le CPU pour une longue durée. En l'utilisant sans doublebuffering, l'em8300 est bien plus sensible à la charge CPU, il est donc hautement recommandé d'activer l'option `-framedrop` pour éviter les éventuelles pertes de synchro. `sync` activera le nouveau moteur de synchro. C'est actuellement une fonction expérimentale. Avec la fonction sync activé l'horloge interne de l'em8300 sera contrôlée à tout moment, si elle commence à dévier de l'horloge de MPlayer elle sera réajustée, obligeant l'em8300 à sauter les éventuelles trames en retard. `norm=x` fixera la norme TV de la carte DXR3 sans avoir besoin d'utiliser des outils externes comme em8300setup. Les normes valides sont 5 = NTSC, 4 = PAL-60, 3 = PAL. Les normes spéciales sont 2 (ajustement auto utilisant PAL/PAL-60) et 1 (ajustement auto utilisant PAL/NTSC) parce qu'elles décident quelle norme utiliser en regardant le frame rate du film. norm = 0 (par défaut) ne change pas la norme courante. ``périph.`` = numéro de périphérique à utiliser si vous avez plus d'une carte em8300. Chacune de ces options peut être laissé de côté. `:prebuf:sync` semble fonctionner à merveille en lisant des DivX. Des gens ont signalé des problèmes en utilisant l'option prebuf pendant la lecture de fichiers MPEG1/2. Vous pourriez vouloir essayer sans aucune option en premier, si vous avez des problèmes de synchro, ou des problèmes de sous-titres avec les DVDs, essayez avec `:sync`.

`-ao oss:/dev/em8300_ma-`X``

  Pour la sortie audio, où `X` est le numéro de périphérique (0 si une carte).

`-af resample=`xxxxx``

  L'em8300 ne peut jouer de taux d'échantillonage inférieur à 44100 Hz. Si le taux d'échantillonage est en dessous de 44100Hz, sélectionnez soit 44100Hz, soit 48000Hz en fonction de ce qui est le plus proche. C-a-d si le film utilise 22050 utilisez 44100Hz car 44100 / 2 = 22050, si c'est 24000Hz utilisez 48000Hhz car 48000 / 2 = 24000 et ainsi de suite. Cela ne fonctionne pas avec la sortie audio numérique (`-ac hwac3`).

`-vf lavc/fame`

  Pour voir du contenu non-MPEG sur l'em8300 (c-a-d. MPEG-4 (DivX) ou RealVideo), vous devrez spécifier un filtre vidéo MPEG-1 tel que `libavcodec` (lavc). Voir le manuel pour de plus amples infos à propos de `-vf lavc/fame`. Actuellement il n'est pas possible de régler les fps de l'em8300 ce qui veut dire qu'il est fixé à 30000/1001 fps. À cause de cela il est hautement recommandé d'utiliser `-vf lavc=`qualité`:25`, surtout si vous utilisez le prebuffering. Alors pourquoi 25 et pas 30000/1001? Hé bien, le truc est que si vous utilisez 30000/1001, l'image devient un peu sautante. Nous n'en connaissons pas la raison. Si vous le réglez quelque part entre 25 et 27 l'image devient stable. Pour l'instant tous ce que nous pouvons faire est de l'accepter.

`-vf expand=-1:-1:-1:-1:1`

  Bien que le pilote DXR3 puisse placer quelques OSD sur de la vidéo MPEG1/2/4, il est de bien plus basse qualité que l'OSD traditionnel de MPlayer, et de plus soufre de nombreux problèmes de rafraîchissement. La ligne de commande ci-dessus va d'abord convertir l'entrée vidéo en MPEG4 (c'est obligatoire, désolé), ensuite appliquer un filtre expand qui ne va rien étendre du tout (-1: défaut), mais afficher l'OSD dans l'image (c'est ce que fait le "1" à la fin).

`-ac hwac3`

  L'em8300 supporte la lecture audio AC-3 (son surround) au travers de la sortie audio numérique de la carte. Voir l'option `-ao oss` plus haut, elle doit être utilisé pour spécifier la sortie DXR3 au lieu d'une carte son.

## 4.19. Autres matériels de visualisation

### 4.19.1. Zr

C'est un pilote d'affichage (`-vo zr`) pour certaines cartes de capture/lecture (testé pour DC10+ et Buz, et cela devrait fonctionner pour la LML33 et la DC10). Ce pilote fonctionne en encodant la trame en JPEG et en l'envoyant à la carte. Pour l'encodage JPEG `libavcodec` est utilisé, et requis. Avec le mode spécial cinerama, vous pouvez voir les films en vrai écran large si vous avez deux moniteurs et deux cartes MJPEG. Selon la résolution et les réglages, ce pilote requiert beaucoup de puissance CPU, rappelez-vous de spécifier `-framedrop` si votre machine est trop lente. Note : Mon AMD K6-2 350Mhz est (avec `-framedrop`) très adapté pour voir des vidéos de taille VCD et les films dont la taille est réduite.

Ce pilote parle au module noyau disponible sur http://mjpeg.sf.net, donc vous devez d'abord faire fonctionner ce dernier. la présence d'une carte MJPEG est autodétectée par le script `configure`, si l'autodétection échoue, forcez la détection avec

    ./configure --enable-zr

La sortie peut être contrôlée par de nombreuses options, une longue description des options peut être trouvée sur la page de man, une courte liste des options peut être obtenue en exécutant

    mplayer -zrhelp

Les choses comme le zoom ou l'OSD (on screen display) ne sont pas gérés par ce pilote mais peuvent être obtenus en utilisant les filtres vidéo. Par exemple, supposons que vos avez un film d'une résolution de 512x272 et que vous voulez le voir en plein-écran sur votre DC10+. Il y a trois possibilités principales, vous pouvez redimmensionner le film à une largeur de 768, 384 ou 192. Pour des raisons de performances et de qualité, vous pouvez choisir de redimmensionner le film en 384x204 en utilisant le zoom logiciel bilinéaire rapide. La ligne de commande est

    mplayer -vo zr -sws 0 -vf scale=384:204
    film.avi

Le découpage peut être fait avec le filtre `crop` et par ce pilote lui-même. Supposons qu'un film soit trop large pour s'afficher sur votre Buz et que vous vouliez utiliser `-zrcrop` pour rendre le film moins large, alors vous taperez la commande suivante

    mplayer -vo zr -zrcrop 720x320+80+0
    benhur.avi

Si vous voulez utiliser le filtre `crop`, vous feriez

    mplayer -vo zr -vf crop=720:320:80:0
    benhur.avi

Des occurrences supplémentaires de `-zrcrop` invoquent le mode cinerama, c-a-d. que vous pouvez distribuer l'affichage sur plusieurs TV ou moniteurs pour créer un écran plus large. Supposons que vous ayez deux moniteurs. Celui de gauche est connecté à votre Buz sur `/dev/video1` et celui de droite est connecté à votre DC10+ sur `/dev/video0`. Le film a une résolution de 704x288. Supposons maintenant que vous voulez le moniteur de droite en noir et blanc et que le moniteur de gauche ait des trames jpeg de qualité 10, alors vous taperez la commande suivante

    mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
        -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10
    film.avi

Vous voyez que les options apparaissant avant le second `-zrcrop` ne s'appliquent qu'a la DC10+ et que les options après le second `-zrcrop` s'appliquent à la Buz. Le nombre maximum de cartes MJPEG participant au cinerama est quatre, vous pouvez donc construire un mur vidéo de 2x2.

Pour finir une remarque importante : Ne lancez ou n'arrêtez pas XawTV sur le périphérique en cours de lecture, cela planterait votre ordinateur. Il est, cependant, sans risque de lancer D'ABORD XawTV, ENSUITE de lancer MPlayer, d'attendre que MPlayer se termine et ENSUITE de stopper XawTV.

### 4.19.2. Blinkenlights

Ce pilote est capable de lire en utilisant le protocole UPD Blinkenlights. Si vous ne savez pas ce qu'est Blinkenlights, vous n'avez pas besoin de ce pilote.

## 4.20. Sortie TV

### 4.20.1. Cartes Matrox G400

Sous Linux vous avez 2 méthodes pour faire fonctionner la sortie TV :

### Important

pour les instructions sur la sortie TV des Matrox G450/G550, voir la prochaine section SVP !

XFree86

  en utilisant le pilote et le module HAL, disponible sur le site de Matrox. Cela vous donnera X sur la TV.

  Cette méthode ne vous donne pas la lecture accélérée comme sous Windows ! La seconde tête n'a qu'un framebuffer YUV, le BES (Back End Scaler, le redimensionneur YUV des cartes G200/G400/G450/G550) ne fonctionne pas dessus ! Le pilote Windows contourne cela, probablement en utilisant le moteur 3D pour zoomer, et le framebuffer YUV pour afficher l'image zoomée. Si vous voulez vraiment utiliser X, utilisez les options `-vo x11 -fs -zoom`, mais ce sera LENT, et aura la protection anticopie Macrovision activée (vous pouvez "contourner" Macrovision en utilisant ce script perl).

Framebuffer

  En utilisant les modules matroxfb dans les noyaux 2.4. Les noyaux 2.2 n'ont pas de fonction TV-out incluse, et sont donc inutilisables pour cela. Vous devez activer TOUTES les fonctions spécifiques à matroxfb durant la compilation (excepté MultiHead), et les compiler en modules! Vous aurez également besoin que I2C soit activé et mettre les outils matroxset, fbset et con2fb dans votre path.

  1. Puis chargez les modules `matroxfb_Ti3026, matroxfb_maven, i2c-matroxfb,matroxfb_crtc2` dans votre noyau. Votre console en mode texte va entrer en mode framebuffer (sans retour possible !).

  2. Ensuite, réglez votre moniteur et votre TV à votre convenance avec les outils ci-dessus.

  3. Yoh. La prochaine tâche est de faire disparaître le curseur sur tty1 (ou n'importe quelle autre), et de désactiver l'économiseur d'écran. Exécutez les commandes suivantes :

         echo -e '\033[?25l'
         setterm -blank 0

     ou

         setterm -cursor off
         setterm -blank 0

     Vous pouvez mettre ceci dans un script, et également effacer l'écran. Pour réactiver le curseur :

         echo -e '\033[?25h'

     ou

         setterm -cursor on

  4. Yeah kewl. Démarrez le film avec

         mplayer -vo mga -fs -screenw 640 -screenh 512
         nomfichier

     (si vous utilisez X, maintenant changez pour matroxfb avec par exemple Ctrl+Alt+F1.) Changez `640` et `512` si vous voulez spécifier une résolution différente...

  5. Appréciez la sortie TV Matrox ultra-rapide ultra-fonctionnelle (meilleure que Xv) !

### 4.20.2. Cartes Matrox G450/G550

Le support de la sortie TV pour ces cartes n'a été introduit que récemment, et n'est pas encore dans le noyau officiel. Actuellement le module mga_vid ne peut être utilisé à ma connaissance, parce que le pilote G450/G550 ne fonctionne que dans une configuration : le premier chip CRTC (qui a le plus de fonctions) sur le premier affichage (sur le moniteur), et le second CRTC (pas de BES, veuillez voir la section G400 plus haut) sur la TV. Vous ne pouvez donc utiliser que le pilote de sortie fbdev de MPlayer pour le moment.

Le premier CRTC ne peut pas être relié à la seconde tête actuellement. L'auteur du pilote noyau matroxfb - Petr Vandrovec - fera certainement un support pour cela, en affichant la sortie du premier CRTC sur les deux têtes à la fois, comme actuellement recommandé pour la G400, voir la section ci-dessus.

Le patch noyau nécessaire et le HOWTO détaillé sont téléchargeables sur http://www.bglug.ca/matrox_tvout/

### 4.20.3. Construire un câble de sortie TV Matrox

Personne ne prends de responsabilités, ni n'offre de garanties quant aux éventuels dommages causés par cette documentation.

Cable pour G400. La quatrième broche du connecteur CRTC2 transmet le signal vidéo composite. La terre (ground) est sur les sixième, septième et huitième broches (info donnée par Balázs Rácz).

Cable pour G450. La première broche du connecteur CRTC2 transmet le signal vidéo composite. La terre (ground) est sur les cinquième, sixième, septième, et quinzième (5, 6, 7, 15) broches (info donnée par Balázs Kerekes).

### 4.20.4. Cartes ATI

PRÉAMBULE. Actuellement ATI ne veut supporter aucun de ces chips TV-out sous Linux, à cause de leur technologie Macrovision sous licence.

ÉTAT DE LA SORTIE TV ATI SUR LINUX

- ATI Mach64 : supporté par GATOS.

- ASIC Radeon VIVO : supporté par GATOS.

- Radeon et Rage128 : supporté par MPlayer! Vérifiez les sections pilote VESA et VIDIX.

- Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4 : supporté par atitvout .

Sur les autres cartes, utilisez juste le pilote VESA, sans VIDIX. Un CPU puissant est cependant requis.

La seule chose que vous ayez à faire - avoir le connecteur TV branché avant de booter votre PC car le BIOS vidéo s'initialise uniquement durant cette phase.

### 4.20.5. nVidia

D'abord, vous DEVEZ télécharger les pilotes closed-source depuis http://nvidia.com. Je ne décrirai pas le processus d'installation et de configuration car il sort du cadre de cette documentation.

Après que l'accélération XFree86, XVideo, et 3D fonctionnent correctement, éditez la section Device de votre carte dans le fichier `XF86Config`, selon l'exemple suivant (adaptez à votre carte/TV) :

    Section "Device"
            Identifier      "GeForce"
            VendorName      "ASUS"
            BoardName       "nVidia GeForce2/MX 400"
            pilote          "nvidia"
            #Option         "NvAGP" "1"
            Option          "NoLogo"
            Option          "CursorShadow"  "on"

            Option          "TwinView"
            Option          "TwinViewOrientation" "Clone"
            Option          "MetaModes" "1024x768,640x480"
            Option          "ConnectedMonitor" "CRT, TV"
            Option          "TVStandard" "PAL-B"
            Option          "TVOutFormat" "Composite"

    EndSection

Bien sûr l'élément le plus important est la partie TwinView.

### 4.20.6. Neomagic

Le chip NeoMagic peut être trouvé sur de nombreux portables, certains équipés d'un encodeur TV analogique simple, certains en ont un plus avancé.

- Analog encoder chip : Il a été reporté qu'une sortie TV fiable pouvait être obtenue en utilisant `-vo fbdev` ou `-vo fbdev2`. Vous avez besoin d'avoir vesafb compilé dans votre noyau et de passer les paramètres suivants sur la ligne de commande du noyau : `append="video=vesafb:ywrap,mtrr" vga=791`. Vous devriez lancer X, puis passer en mode console avec par exemple CTRL+ALT+F1. Si vous échouez en lancant X depuis la console, la vidéo devient lente et saccadé (toute explication de ce phénomène est bienvenue). Identifiez-vous dans votre console, puis lancez la commande suivante :

      clear; mplayer -vo fbdev -zoom -cache 8192 dvd://

  Maintenant vous devriez voir le film lancé en mode console remplir à peu près la moitié de votre écran LCD de portable. Pour switcher vers la TV tapez Fn+F5 trois fois. Testé sur un Tecra 8000, noyau 2.6.15 avec vesafb, ALSA v1.0.10.

- chip Chrontel 70xx encoder : Présent dans l'IBM Thinkpad 390E et probablement dans d'autres Thinkpads ou portables.

  Vous devez utiliser `-vo vesa:neotv_pal` pour PAL ou `-vo vesa:neotv_ntsc` pour NTSC. Cela fournira la sortie TV dans les modes 16 bpp et 8 bpp suivants :

  - NTSC 320x240, 640x480 et peut être aussi 800x600.

  - PAL 320x240, 400x300, 640x480, 800x600.

  le mode 512x384 n'est pas supporté par le BIOS. Vous devez redimmensionner l'image à une résolution différente pour activer la sortie TV. Si vous voyez une image sur l'écran en 640x480 ou en 800x600 mais pas en 320x240 ou autre résolution plus faible, vous devez remplacer deux tables dans `vbelib.c`. Voir la fonction vbeSetTV pour plus de détails. Veuillez contacter l'auteur dans ce cas.

  Problèmes connus : VESA uniquement, aucun autre contrôle tel que luminosité, contraste, blacklevel, flickfilter n'est implémenté.

# Chapitre 5. Ports

## 5.1. Linux

La plateforme principale de développement est Linux sur x86, bien que MPlayer fonctionne sur de nombreux autres ports Linux. Des binaires de MPlayer sont disponibles depuis de nombreuses sources. Par contre, aucun de ces paquets n'est supporté. Rapportez les problèmes à leurs auteurs, pas à nous.

### 5.1.1. Paquets Debian

Pour construire le paquet Debian, lancez la commande suivante dans le répertoire source de MPlayer :

    fakeroot debian/rules binary

Si vous voulez passer des options particulières à configure, vous pouvez définir la variable d'environnement `DEB_BUILD_OPTIONS`. Par exemple, si vous voulez le support de la GUI et de l'OSD, faites :

    DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary

Vous pouvez aussi passer quelques variables au Makefile. Par exemple, si vous voulez compiler avec gcc 3.4 même si ce n'est pas celui par défaut :

    CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary

Pour nettoyer l'arborescence des sources, exécutez la commande suivante :

    fakeroot debian/rules clean

En tant que root installez le paquet `.deb` comme d'habitude :

    dpkg -i ../mplayer_version.deb

Christian Marillat a construit des paquets Debian non-officiels pour MPlayer, MEncoder et les polices depuis un certain temps, vous pouvez les obtenir (apt-get) depuis sa page web.

### 5.1.2. Paquets RPM

Dominik Mierzejewski maintient les paquets RPM officiels de MPlayer pour Fedora Core. Ils sont disponibles sur le dépôt Livna.

Les paquets RPM pour Mandrake/Mandriva sont disponibles sur le P.L.F., SuSE incluait une version limitée de MPlayer dans sa distribution. Ils l'ont retiré dans leurs dernières versions. Vous pouvez obtenir des RPMs fonctionnels sur links2linux.de.

### 5.1.3. ARM

MPlayer fonctionne sur les PDAs Linux avec un CPU ARM c-a-d Sharp Zaurus, Compaq Ipaq. La manière la plus facile d'obtenir MPlayer est de récupérer un des paquets OpenZaurus. Si vous voulez le compiler vous-même, vous devriez regarder les répertoires mplayer et libavcodec du répertoire raçine de la distribution OpenZaurus. Ils ont toujours les derniers Makefile et patchs utilisés pour contruire la version SVN de MPlayer. Si vous avez besoin d'une GUI, vous pouvez utiliser xmms-embedded.

## 5.2. *BSD

MPlayer fonctionne sur toutes les variations de BSD connues. Il y a des versions ports/pkgsrc/fink/etc de MPlayer disponibles qui sont probablement plus faciles à utiliser que nos sources brutes.

Pour construire MPlayer vous aurez besoin de GNU make (gmake - le make natif de BSD ne fonctionnera pas) et une version récente des binutils.

Si MPlayer se plaint de ne pas trouver `/dev/cdrom` ou `/dev/dvd`, créez le lien symbolique approprié :

    ln -s /dev/votre_périphérique_cdrom /dev/cdrom

Pour utiliser les DLLs Win32 avec MPlayer vous devrez recompiler le noyau avec "`option USER_LDT`" (à moins d'utiliser FreeBSD-CURRENT, où c'est le cas par défaut).

### 5.2.1. FreeBSD

Si votre CPU à SSE, recompilez votre noyau avec "`options CPU_ENABLE_SSE`" (FreeBSD-STABLE ou patches noyau requis).

### 5.2.2. OpenBSD

À cause des limitations dans les différentes versions de gas (relocation contre MMX), vous aurez besoin de compiler en deux étapes : D'abord assurez-vous que le non-natif est en premier dans votre `$PATH` et faites un gmake -k, ensuite assurez-vous que la version native est utilisée et faites gmake.

Depuis OpenBSD 3.4 le hack ci-dessus n'est plus nécessaire.

### 5.2.3. Darwin

Voir la section Mac OS.

## 5.3. Unix Commercial

MPlayer a été porté sur un grand nombre d'Unix commerciaux. Étant donné que les environements de dévelopement sur ces systèmes ont tendances à être différent de ceux trouvé sur les Unix libres, vous devrez peut-être faire quelques ajustements manuels pour que le build fonctionne.

### 5.3.1. Solaris

MPlayer devrait fonctionner sous Solaris 2.6 ou supérieur. Utilisez le pilote audio de SUN avec l'option `-ao sun` pour le son.

Sur les UltraSPARCs, MPlayer profite des avantages de leurs extensions VIS (équivalentes au MMX), actuellement uniquement dans `libmpeg2`, `libvo` et `libavcodec`, mais pas dans `mp3lib`. Vous pouvez regarder un fichier VOB sur un CPU à 400MHz. Vous aurez besoin d'avoir `mLib` installé.

Attention :

- mediaLib est actuellement désactivé par défaut dans MPlayer pour cause d'inconsistance. Les utilisateurs SPARC qui ont construit MPlayer avec le support mediaLib ont reporté une forte coloration verte sur les vidéo encodées et décodées avec libavcodec. Si vous le désirez, vous pouvez activer mediaLib avec :

      ./configure --enable-mlib

  Ceci est à vos risques et périls. Les utilisateurs x86 ne doivent jamais utiliser mediaLib, puisque cela déteriorerait les performances de MPlayer de manière importante.

Pour construire ce paquetage vous aurez besoin de GNU make (`gmake`, `/opt/sfw/gmake`), le make natif de Solaris ne fonctionnera pas. Message d'erreur typique si vous utilisez le make de Solaris au lieu de celui de GNU :

    % /usr/ccs/bin/make
    make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

Sur Solaris SPARC, vous aurez besoin du compilateur C/C++ GNU; cela n'a pas d'importance que le compilateur C/C++ GNU soit configuré avec ou sans l'assembleur GNU.

Sur Solaris x86,vous aurez besoin de l'assembleur GNU et du compilateur C/C++ GNU, configuré pour l'utilisation de l'assembleur GNU ! Le code de MPlayer sur la plateforme x86 fait un usage intensif des instructions MMX, SSE et 3DNOW! qui ne peuvent pas être assemblées en utilisant l'assembleur de Sun `/usr/ccs/bin/as`.

Le script `configure` essaie de trouver quel assembleur est utilisé par votre commande "gcc" (au cas ou l'autodétection échoue, utilisez l'option `--as=`/endroit/ou/vous/avez/installe/gnu-as`` pour indiquer au script `configure` où il peut trouver GNU "as" sur votre système).

Solutions aux problèmes courants :

- Message d'erreur de `configure` sur un système Solaris x86 en utilisant GCC sans assembleur GNU :

         % configure
         ...
         Checking assembler (/usr/ccs/bin/as) ... , failed
         Please upgrade(downgrade) binutils to 2.10.1...

  (Solution : Installez et utilisez un gcc configuré avec `--with-as=gas`)

  Erreur typique obtenue en construisant avec un compilateur C GNU qui n'utilise pas GNU as :

      % gmake
      ...
      gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
           -fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
      Assembler: mplayer.c
      "(stdin)", line 3567 : Illegal mnemonic
      "(stdin)", line 3567 : Syntax error
      ... more "Illegal mnemonic" and "Syntax error" errors ...

- MPlayer est susceptible de renvoyer une erreur de segmentation (segfault) à l'encodage ou au décodage de vidéos utilisant win32codecs :

      ...
      Trying to force audio codec driver family acm...
      Opening audio decoder: [acm] Win32/ACM decoders
      sysi86(SI86DSCR): Invalid argument
      Couldn't install fs segment, expect segfault

      MPlayer interrupted by signal 11 in module: init_audio_codec
      ...

  Ceci est du à une modification de sysi86() dans Solaris 10 et dans les versions antérieures à Solaris Nevada b31. Ceci a été réparé par Sun pour Solaris Nevada b32 mais pas encore pour Solaris 10. Le Projet MPlayer a averti Sun de ce problème. Un patch pour Solaris 10 est actuellement en développement. Plus d'information sont disponibles à l'adresse suivante : http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

- A cause de bogues dans Solaris 8, il se peut que vous ne puissiez pas lire de disques DVD plus gros que 4 Go :

  - Le pilote sd(7D) de Solaris 8 x86 a un bogue quand on accède à un bloc disque >4Go sur un périphérique en utilisant une taille de bloc logique != DEV_BSIZE (c-a-d. CD-ROM et DVD). A cause d'un dépassement des entiers 32Bit, on accède à une adresse disque modulo 4 Go. (http://groups.yahoo.com/group/solarisonintel/message/22516). Ce problème n'existe pas sur la version SPARC de Solaris 8.

  - Un bogue similaire est présent dans le code du système de fichier hsfs(7FS) (alias ISO9660), il se peut que hsfs ne supporte pas les partitions/disques plus gros(ses) que 4GB, toutes les données sont accédées modulo 4Go. (http://groups.yahoo.com/group/solarisonintel/message/22592). Le problème hsfs peut être résolu en installant le patch 109764-04 (sparc) / 109765-04 (x86).

### 5.3.2. HP-UX

Joe Page héberge un HOWTO MPlayer sous HP-UX écrit par Martin Gansser sur sa page web. Avec ses instructions la compilation devrait fonctionner sans modifications. L'information qui suit a été récupéré depuis ce HOWTO.

Vous avez besoin de GCC 3.4.0 ou supérieur, GNU make 3.80 ou supérieur et SDL 1.2.7 ou supérieur. HP cc ne fournira pas un programme qui marche, les versions précedentes de GCC sont boguées. Pour la fonctionnalité OpenGL vous aurez besoin d'installer Mesa et les pilotes de sortie vidéo gl et gl2 devraient marcher, la vitesse pouvant en être très affecté, dépendamment de la vitesse du CPU. Une bonne alternative au pauvre système son natif de HP-UX est GNU esound.

Créer le périphérique DVD scanne le bus SCSI avec :

    # ioscan -fn

    Class          I            H/W   Path          Driver    S/W State    H/W Type        Description
    ...
    ext_bus 1    8/16/5      c720  CLAIMED INTERFACE  Built-in SCSI
    target  3    8/16/5.2    tgt   CLAIMED DEVICE
    disk    4    8/16/5.2.0  sdisk CLAIMED DEVICE     PIONEER DVD-ROM DVD-305
                             /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
    target  4    8/16/5.7    tgt   CLAIMED DEVICE
    ctl     1    8/16/5.7.0  sctl  CLAIMED DEVICE     Initiator
                             /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0
    ...

La sortie d'écran montre un lecteur DVD-ROM Pioneer à l'adresse SCSI 2. L'instance de la carte pour le chemin hardware 8/16 est 1.

Créer un lien depuis le prériphérique brut vers le périphérique DVD.

    ln -s /dev/rdsk/c<SCSI bus instance>t<SCSI target ID>d<LUN> /dev/<device>

Exemple :

    ln -s /dev/rdsk/c1t2d0 /dev/dvd

Ci-dessous sont exposées les solutions pour certains problèmes communs :

- Plante au démarrage avec le message d'erreur suivant :

      /usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl

  Cela signifie que la fonction `.finite().` n'est pas disponible dans la librairie standard math de HP-UX. A la place, il y a `.isfinite().`. Solution : Utiliser le dernier fichier dépôt Mesa.

- Plante à la lecture avec le message d'erreur suivant :

      /usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0

  Solution : Utiliser l'option extralibdir lors de configure `--extra-ldflags="/usr/lib -lrt"`

- MPlayer segfaults avec un message comme celui-ci :

      Pid 10166 received a SIGSEGV for stack growth failure.
      Possible causes : insufficient memory or swap space, or stack size exceeded maxssiz.
      Segmentation fault

  Solution : Le noyau HP-UX a une taille de pile par défaut de 8MO(?) par processus. (des patches 11.0 et de plus récent 10.20 vous permettront d'augmenter `maxssiz` jusqu'à 350MB pour les programmes 32-bit). Vous aurez besoin d'étendre `maxssiz` et de recompiler le noyau (et redémarrer). Vous pouvez utiliser SAM pour ce faire. (Pendant ce temps, aller voir le paramètre `maxdsiz` pour le montant maximum de données qu'un programme peut utiliser. Cela dépend de vos applications, si la valeur par défaut de 64MO est suffisante ou non.)

### 5.3.3. AIX

MPlayer se compile parfaitement sous AIX 5.1, 5.2 et 5.3, en utilisant GCC 3.3 ou plus. La compilation de MPlayer sous AIX 4.3.3 et inférieur n'a pas été testé. Il est hautement recommandé que vous compiliez MPlayer en utilisant GCC 3.4 ou plus, ou si vous êtes sous POWERS, GCC 4.0 est requis.

Assurez vous d'utiliser GNU make (`/opt/freeware/bin/gmake`) pour construire MPlayer, autrement vous rencontreriez des problèmes si vous utilisez `/usr/ccs/bin/make`.

La détection CPU est toujours un travail en cours. Les architectures suivantes ont été testé :

- 604e

- POWER3

- POWER4

Les architectures suivantes n'ont pas été testé, mais devraient quand même marcher :

- POWER

- POWER2

- POWER5

Le son à travers les Services Ultimedia n'est pas supporté, comme Ultimedia a été abondonné dans AIX 5.1; , la seule option est d'utiliser les pilotes AIX OSS de 4Front Technologies depuis http://www/opensound.com/aix/html. 4Front Technologies fourni librement les pilotes OSS pour AIX 5.1 pour un usage personnel et non-commercial. Cependant, il n'y a actuellement pas de pilote de son pour AIX 5.2 ou 5.3. Cela signifie qu'à l'heure actuelle MPlayer ne produit pas de son sous AIX 5.2 et 5.3.

Solutions aux problèmes courants :

- Si vous rencontrez ce message d'erreur de `configure` :

      $ ./configure
      ...
      Checking for iconv program ... no
      No working iconv program found, use
      --charset=US-ASCII to continue anyway.
      Messages in the GTK-2 interface will be broken then.

  Ceci est du au fait que AIX utilise un jeu de caractÃ¨re (charset) non standards. En conséquence, la conversion d'une sortie MPlayer en un autre character set et n'est pas suporté pour l'instant. La solution est d'utiliser :

      $ ./configure --charset=noconv

### 5.3.4. QNX

Vous aurez besoin de télécharger et installer SDL pour QNX. Puis de lancer MPlayer avec les options `-vo sdl:driver=photon` et `-ao sdl:nto`, cela devrait être rapide.

La sortie de `-vo x11` sera encore plus lente que sous Linux, étant donné que QNX n'a qu'une émulation X, qui est très lente.

## 5.4. Windows

Oui, MPlayer tourne sous Windows via Cygwin et MinGW. Il n'a pas encore de GUI, mais la version en ligne de commande est complètement opérationnelle. Vous devriez jeter un oeil à la liste de diffusion Mplayer-cygwin pour obtenir de l'aide et les dernières informations. Les binaires officiels de Windows peuvent être récupérés sur la page de téléchargement. Les paquetages d'installation et de simple frontends GUI sont disponibles à partir de sources externe, nous avons collecté ensuite dans la section Windows de notre page de projets.

Si vous souhaitez éviter d'utiliser la commande en ligne, une astuce toute simple est de mettre un raccourci sur votre bureau qui contient quelque chose comme ce qui suit dans la section d'execution :

    c:\chemin\vers\mplayer.exe %1

Cela va faire lire à MPlayer n'importe quel film qui est laché sur le raccourci. Ajoutez `-fs` pour le mode plein écran.

Les meilleurs résultats sont obtenus avec le codec vidéo DirectX natif (`-vo directx`). Vous pouvez aussi utiliser OpenGL et SDL, mais les performances d'OpenGL sont très variables suivant les systèmes et SDL est connu pour distordre l'image ou planter sur certains systèmes. Si l'image est distordue, essayez de désactiver l'accélération matérielle avec `-vo directx:noaccel`. Téléchargez les fichiers d'entête DirectX 7 pour compiler le pilote de sortie vidéo DirectX. De plus vous devez avoir DirectX 7 ou supérieur pour que ce pilote fonctionne.

VIDIX fonctionne maintenant sous Windows avec `-vo winvidix`, bien que ce soit toujours expérimental et que cela requiert une configuration manuelle. Téléchargez dhahelper.sys ou dhahelper.sys (avec support des MTRR) et copiez le dans le répertoire `libdha/dhahelperwin` de votre arborescence MPlayer. Ouvrez une console et tapez

    make install-dhahelperwin

en tant qu'Administrateur. Ensuite vous devez rebooter.

Pour de meilleurs résultats MPlayer devrait utiliser une palette que votre carte graphique supporte de façon matérielle. Malheureusement, de nombreux pilotes graphiques Windows renvoient certaines palettes alors que la carte ne le supporte pas. Pour le vérifier, essayez

    mplayer -benchmark -nosound -frames 100 -vf format=palette film

où `palette` peut être n'importe quelle palette affichée par l'option `-vf format=fmt=help`. Si vous trouvez une palette que votre carte gère particulièrement mal, `-vf noformat=`palette`` l'empèchera d'être utilisée. Ajouter cela à votre fichier de conf pour ne plus l'utiliser de façon permanente.

Il y a des paquetages de codec spécial pour Windows disponible sur notre page de codecs pour permettre de jouer les formats qui ne sont pas encore nativement supportés. Placez les codecs quelque part dans votre path ou passez `--codecsdir=`c:/chemin/de/vos/codecs`` (éventuellement `--codecsdir=`/chemin/de/vos/codecs`` uniquement sous Cygwin) à `configure`. Nous avons eu quelques retours indiquant que les DLLs Real doivent être accessibles en écriture pour l'utilisateur ayant lancé MPlayer, mais seulement sur certains systèmes (NT4). Essayez de les rendre accessibles en écriture si vous avez des problèmes.

Vous pouvez lire des VCDs en jouant les fichiers `.DAT` ou `.MPG` que Windows affiche sur les VCDs. Cela fonctionne tout simplement comme cela (changez la lettre de votre lecteur de CD-ROM) :

    mplayer d:/mpegav/avseq01.dat

Vous pouvez aussi lire une piste VCD directement en utilisant :

     mplayer vcd://<track> -cdrom-device d:

Les DVDs fonctionnent également, ajustez `-dvd-device` à la lettre de votre lecteur DVD-ROM :

    mplayer dvd://<titre> -dvd-device d:

La console Cygwin/MinGW est plutôt lente. Il semble que rediriger la sortie ou utiliser l'option `-quiet` améliore les performances. Le rendu direct (`-dr`) peut également aider. Si la lecture est erratique, essayez `-autosync 100`. Si certaines de ces options vous sont utiles, vous pouvez les placer dans votre fichier de config.

### Note

Si vous avez un Pentium 4 et que vous expériencez un plantage lors de l'utilisation des codecs RealPlayer vous pourriez vouloir désactiver le support hyperthreading.

### 5.4.1. Cygwin

Vous devez utiliser Cygwin 1.5.0 ou supérieur pour pouvoir compiler MPlayer.

Les fichiers d'entête DirectX doivent être décompressés dans `/usr/include/` ou dans `/usr/local/include/`.

Les instructions et les fichiers pour faire tourner SDL sous Cygwin peuvent être trouvés sur le site de libsdl.

### 5.4.2. MinGW

Installer une version de MinGW qui puisse compiler MPlayer était considéré comme compliqué, mais fonctionne désormais sans modifications. Installez simplement MinGW 3.1.0 ou plus récent et MSYS 1.0.9 ou plus récent et dites au postinstall de MSYS que MinGW est installé.

Décompressez les fichiers d'entête de DirectX dans `/mingw/include/`.

Le support des entêtes compressées MOV requiert zlib, que MinGW ne fournit pas par défaut. Configurez-le avec `--prefix=/mingw` et installez-le avant de compiler MPlayer.

De complètes instructions pour compiler MPlayer et les librairies nécessaires sont disponibles sur MPlayer MinGW HOWTO.

## 5.5. Mac OS

MPlayer ne fonctionne pas sur des versions ultérieures à Mac OS 10, mais devrait compiler sans changement sur Mac OS X 10.2 et supérieur. Le compilateur préféré étant la version Apple de GCC 3.x ou supérieure. Vous pouvez obtenir l'environement de compilation de base en installant Xcode de Apple. Si vous avez Mac OS X 10.3.9 ou supérieur et QuickTime 7 vous pouvez utiliser le pilote corevideo de sortie vidéo.

Malheureusement, cet environement de base ne vous autorise pas à profiter de toute les fonctionalités de MPlayer. Par exemple, pour compiler le support OSD, vous devez avoir les librairies fontconfig et freetype installées sur votre machine. Contrairement à d'autres Unix comme la plupart des Linux et des BSDs, OSX n'a pas un seul système de package installé par défault.

Il y en a au moins deux au choix : Fink et MacPorts. Les deux fournissent approximativement les même services (i.e. beaucoup de packages au choix, la résolution des dépendances, la possibilité d'ajouter/mêtre à jour/supprimer simplement des packages, etc...). Fink offre à la fois des packages binaires précompilés ou la possibilité de compiler tout à partir des sources, alors que MacPorts offre seulement la possibilité de compilé les sources. L'auteur de ce guide a choisi MacPorts pour la simple raison que son installation minimale occupe moins d'espace disque. Les exemples à suivre sont basés sur MacPorts.

Par exemple, pour compiler MPlayer avec le support OSD :

    sudo port install pkgconfig

Ceci va installer pkg-config, le système de gestion des flags de compilation/linking des librairies. Le script `configure` de MPlayer l'utilise pour détecter les librairies proprement. Vous pouvez ensuite installer fontconfig de la même manière :

    sudo port install fontconfig

Vous pouvez ensuite lancer le script `configure` de MPlayer (notez les variables d'environement `PKG_CONFIG_PATH` et `PATH` pour que `configure` trouve les librairies installées avec MacPorts) :

    PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure

### 5.5.1. MPlayer OS X GUI

Vous pouvez obtenir un GUI natif et un binaire pré-compilé de MPlayer pour Mac OS X depuis le projet MPlayerOSX, mais soyez averti : ce projet n'est plus du tout actif.

Heureusement, MPlayerOSX a été repris en main par un membre de l'équipe de MPlayer. Des versions preview sont disponibles sur notre page de téléchargement et une version officielle ne devrait pas tarder.

Afin de compiler MPlayerOSX depuis le source vous-même, vous avez besoin du module `mplayerosx`, du module `main` et d'une copie du module SVN `main` renommé en `main_noaltivec`. `mplayerosx` est le frontend GUI, `main` est un MPlayer et `main_noaltivec` est le MPlayer compilé sans le support AltiVec.

Pour récupérer les modules SVN utilisez :

    svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx
    svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main

Pour compiler MPlayerOSX vous aurez besoin de mettre en place quelque chose comme ceci :

    MPlayer_repertoire_source
       |
       |--->main           (source SVN de MPlayer)
       |
       |--->main_noaltivec (source SVN de MPlayer configuré avec --disable-altivec)
       |
       \--->mplayerosx     (source SVN MPlayerOSX)

Premièrement vous avez besoin de compiler main et main_noaltivec.

Pour assurer une rétro compatibilité maximum, commencez par créer la variable d'environnement suivante :

    export MACOSX_DEPLOYMENT_TARGET=10.3

Et, configurez :

Si vous configurez pour un CPU G4 (ou plus récent) avec le support AltiVec, faites comme suit :

    ./configure --disable-gl --disable-x11

Si vous configurez pour un G3 sans le support AltiVec, faites comme suit :

    ./configure --disable-gl --disable-x11 --disable-altivec

Vous pourriez avoir besoin d'éditer `config.mak` et changer le `-mcpu` et `-mtune` de `74XX` à `G3`.

Continuez avec

    make

ensuite placez vous dans le répertoire mplayerosx et tapez

    make dist

Cela créera une archive compressée `.dmg` avec le binaire prêt à l'emploi.

Vous pouvez aussi utiliser le projet Xcode 2.1; le vieux projet pour Xcode 1.x n'étant plus du tout en fonction.

# Chapitre 6. Utilisation basique de MEncoder

Pour avoir la liste complète des options disponibles de MEncoder et des exemples, voir la page du man. Pour une série d'exemples pratiques et de guides détaillés sur l'utilisation des nombreux paramètres d'encodage, lisez les encoding-tips (en anglais) qui ont été collectés d'après de nombreux sujets de la liste de diffusion mplayer-users. Cherchez dans les archives pour trouver les discussions à propos de tous les aspects et problèmes relatifs à l'encodage avec MEncoder.

## 6.1. Sélection des codecs et du format du container

Les codecs sonores et vidéos sont sélectionnés respectivement avec l'option `-oac` et l'option `-ovc`. Par exemple :

    mencoder -ovc help

permettra de lister tous les codecs vidéo supportés par la version de MEncoder sur votre machine. Les choix disponibles sont :

Codecs Audio:

Noms des codecs Audio | Description
--- | ---
mp3lame | Encode en VBR, ABR ou CBR MP3 avec LAME
lavc | Utilise un des codecs audio `libavcodec`.
faac | L'encodeur audio AAC FAAC
toolame | Encodeur Audio MPEG Layer 2
twolame | L'encodeur Audio MPEG Layer 2 basé sur tooLAME
pcm | Format PCM audio non compressé
copy | Ne réencode pas, copie simplement les trames (déjà) compressées

Codecs Vidéo :

Noms des codecs Vidéo | Description
--- | ---
lavc | Utilise un des codecs vidéo `libavcodec`.
xvid | Le Xvid, un codec ASP MPEG-4 (Advanced Simple Profile)
x264 | Le x264, un codec MPEG-4 AVC (Advanced Video Coding), aussi connu sous le nom de H.264
nuv | Le format vidéo nuppel, utilisé pour certaines applications temps réel.
raw | Frames vidéos non compressées
copy | Ne réencode pas, copie simplement les trames (déjà) compressées
frameno | Utilisé pour l'encodage en 3 passes, (non recommandé)

Les options de sorties pour le type de container sont sélectionnées grâce à l'option `-of`. Tapez:

    mencoder -of help

permettra de lister tous les codecs vidéo supportés par la version de MEncoder sur votre machine. Les choix disponibles sont :

Container formats:

Nom du format du Container | Description
--- | ---
lavf | Un des containers supporté par `libavformat`.
avi | Audio-Vidéo Interleaved
mpeg | MPEG-1 and MPEG-2 PS
rawvideo | Flux vidéo brut (un seul flux vidéo, pas de multiplexage)
rawaudio | Flux audio brut (un seul flux audio, pas de multiplexage)

Le container AVI est le container natif de MEncoder, ce qui veut dire que c'est le mieux supporté et que MEncoder a été conçu pour cela. Comme mentionné ci-dessus, d'autres formats de containers sont utilisables, mais vous risquez d'avoir certains problèmes à les utiliser.

Containers `libavformat` :

Si vous avez sélectionné `libavformat` pour le multiplexage du fichier de sortie (en utilisant l'option `-of lavf`), le choix du format du container sera déterminé en fonction de l'extention du fichier de sortie. Mais vous pouvez toujours forcer le format du container avec les options du `format` de `libavformat`.

Container `libavformat` name | Description
--- | ---
mpg | MPEG-1 and MPEG-2 PS
asf | Advanced Streaming Format : Format évolué pour le streaming
avi | Audio-Video Interleaved
wav | Pour l'Audio
swf | Macromedia Flash
flv | vidéo Macromedia Flash
rm | RealMedia
au | SUN AU
nut | le container libre NUT (expérimental et ne respectant pas encore les spécifications)
mov | QuickTime
mp4 | Format MPEG-4
dv | Container numérique des vidéos Sony (Digital Video)

Comme vous pouvez le voir, le `libavformat` permet à MEncoder de multiplexer un grand nombre de containers différents. Malheureusement, comme MEncoder n'a pas été originalement crée pour le support de format de containers autre que l'AVI, vous devez vérifier à deux fois que le résultat est correct. Pensez ben à vérifier la synchronisation de l'audio avec la vidéo et que le fichier est lisible par un autre lecteur que MPlayer.

Exemple 6.1. Encoder au format Macromedia Flash

Exemple :

Création d'une vidéo Macromedia Flash afin de la lire dans un navigateur internet ayant le plugin Macromedia Flash :

    mencoder input.avi -o
    output.flv -of lavf -oac mp3lame
    -lameopts abr:br=56 -ovc lavc \
    -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 \
    -srate 22050

## 6.2. Sélection d'un fichier d'entrée ou un périphérique

MEncoder peut encoder depuis un fichier ou directement depuis un DVD ou VCD. Il suffit simplement d'inclure le nom du fichier dans la ligne de commande pour encoder depuis un fichier ou avec l'option `dvd://``numerochapitre` ou `vcd://``numéropiste` pour encoder depuis un chapitre DVD ou une piste VCD. Si vous avez déjà copié le DVD sur votre disque dur (en utilisant par exemple un logiciel comme dvdbackup, généralement disponible sur la plupart des systèmes), et que vous souhaitez encoder depuis cette copie, vous devrez quand même utiliser la syntaxe `dvd://`, avec l'option `-dvd-device` pointant vers la racine du répertoire où se trouve le DVD copié Les options `-dvd-device` et `-cdrom-device` peuvent être aussi utilisées pour forcer le chemin vers le périphérique utilisé (ceux utilisés par défaut sont `/dev/dvd` et `/dev/cdrom`).

Pour un encodage depuis un DVD, il est souvent préférable de selectionner un ou plusieurs chapitres à encoder. Vous pouvez utiliser l'option `-chapter` prévu à cet effet. Par exemple, `-chapter` `1-4` encodera seulement les chapitres 1 à 4 du DVD. Ceci est particulièrement utile si vous voulez faire un encodage sur 2 Cds soit 1400Mo. Ceci permettant de couper votre film sur un chapitre et non au milieu d'une scène.

Si vous disposez d'une carte d'acquisition TV, vous pouvez sans soucis encoder le signal d'entrée. Utilisez l'option `tv://``NuméroChaine` comme nom de fichier et l'option `-tv` afin de configurer les nombreux paramètres de captures. Les entrées DVB marchent sur le même principe.

## 6.3. Encodage MPEG-4 deux passes ("DivX")

Le nom vient du fait que cette méthode encode le fichier deux fois. Le premier encodage (du mode deux passes) crée quelques fichiers temporaires (`*.log`) avec une taille de quelques méga-octets, ne les détruisez pas tout de suite (vous pouvez effacer l'AVI ou rediriger le flux vidéo vers `/dev/null`). Lors de la seconde passe, le fichier de sortie est créé, en utilisant les données bitrate des fichiers temporaires. Le fichier résultant aura une image de bien meilleure qualité. Si c'est la première fois que vous entendez parler de ça, vous devriez consulter les guides disponibles sur Internet.

Exemple 6.2. Copie de la piste audio

Encodage deux passes du second chapitre d'un DVD vers de l'AVI MPEG-4 ("DivX") avec la simple copie de la piste audio.

    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o
    sortie.avi
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
      -oac copy -o sortie.avi

Exemple 6.3. Encodage de la piste audio

Encodage deux passes d'un DVD en AVI MPEG-4 ("DivX") avec la conversion de la piste audio en MP3. Soyez prudent en utilisant cette méthode car elle peut mener, dans certains cas, à des désynchronisation audio/vidéo.

    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
      -oac mp3lame -lameopts vbr=3 -o /dev/null
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
      -oac mp3lame -lameopts vbr=3 -o sortie.avi

## 6.4. Encodage au format vidéo Sony PSP

MEncoder supporte l'encodage au format Sony PSP. Cependant les contraintes peuvent différer suivant la version actuelle du logiciel PSP. Le respect des contraintes suivantes devrait vous permettre d'encoder sans problème :

- Débit vidéo: il ne devrait pas être supérieur à 1500kbps. Cependant, les dernières versions supportent presque tous les débits tant que l'en-tête rapporte une valeur raisonable.

- Dimensions: la largeur et la hauteur de la video PSP doivent être multiples de 16 et le produit largeur * hauteur doit être <= 64000. Dans certaines circonstances, la PSP est capable de lire des résolutions supérieures.

- Audio: le taux d'échantillonage doit être fixé à 24kHz pour les vidéos MPEG-4 et à 48kHz pour les H.264.

Exemple 6.4. Encodage pour PSP

    mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -oac lavc \
        -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \
        -of lavf -lavfopts format=psp \
        entree.video -o sortie.psp

Vous pouvez définir le titre de la vidéo avec `-info name=`TitreDuFilm``.

## 6.5. Encodage au format MPEG

MEncoder peut créer des fichiers au format MPEG (MPEG-PS). Habituellement, vous utilisez des formats vidéos comme le MPEG-1 ou MPEG-2 pour l'encodage vers des formats avec des contraintes spécifiques comme le SVCD, VCD, ou encore le DVD. Les exigences particulières de ces formats sont expliqués dans la section du guide de création d'un VCD ou DVD.

Pour changer le format du fichier final produit par MEncoder utilisez l'option `-of mpeg`.

Exemple :

    mencoder input.avi -of mpeg -ovc lavc
    -lavcopts vcodec=mpeg1video -oac copy
    autres_options -o
    sortie.mpg

Création d'un fichier MPEG-1 lisible sur un système basique comme peu l'être un MS Windows fraîchement installé :

    mencoder entree.avi -of mpeg -mpegopts
    format=mpeg1:tsaf:muxrate=2000 -o
    output.mpg -oac lavc -ovc lavc \
    -lavcopts acodec=mp2:abitrate=224:vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3

Le même encodage, mais en utilisant le multiplexeur MPEG `libavformat` :

    mencoder entree.avi -o VCD.mpg -ofps 25 -vf scale=352:288,harddup -of lavf \
        -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
        -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0

### Astuce:

Si, pour quelques raisons, la qualité vidéo de la seconde passe n'est pas satisfaisante, vous pouvez recommencer l'encodage avec un débit cible différent, à condition que vous ayez sauvegardé le fichier de statistiques de la passe précédente. Ceci est possible car le rôle premier du fichier de statistiques est d'enregistrer la compléxité de chaque trame, ce qui ne dépend pas fortement du débit. Cependant, if faut noter que vous obtiendrez de meilleurs résultats si toutes les passes utilisent un débit cible similaire.

## 6.6. Redimensionnement des films

Souvent le besoin de redimensionner les images d'un film se fait sentir. Les raisons peuvent être multiples: diminuer la taille du fichier, la bande passante du réseau, etc. La plupart des gens redimensionnent même en convertissant des DVDs ou SVCDs en AVI DivX. Si vous désirez redimensionner, lisez la section Préserver le ratio d'aspect.

Le processus de zoom est géré par le filtre vidéo `scale`: `-vf scale=`largeur`:`hauteur``. Sa qualité peut être réglée avec l'option `-sws`. Si elle n'est pas spécifiée, MEncoder utilisera 2: bicubique.

Utilisation :

    mencoder entree.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
      -vf scale=640:480 -o sortie.avi

## 6.7. Copie de flux

MEncoder peut gérer les flux entrant de deux façons: les encoder ou les copier Cette section parle de la copie.

- Flux vidéo (option `-ovc copy`) : on peut faire des choses sympa :) comme, placer (pas convertir) de la vidéo FLI ou VIVO ou MPEG1 dans un fichier AVI ! Bien sûr seul MPlayer peut lire de tels fichiers :) et ça n'a probablement aucun intérêt. Concrètement: copier des flux vidéos peut être utile par exemple quand seul le flux audio doit être encodé (comme du PCM non-compressé en MP3).

- Flux audio (option `-oac copy`): très simple. Il est possible de prendre un fichier audio externe (MP3, WAV) et de le multiplexer dans le flux sortant. Utilisez l'option `-audiofile `nomfichier`` pour cela.

En utilisant l'option `-oac copy` pour copier d'un format de container vers un autre format, il faudrait utiliser l'option `-fafmttag` pour préserver les marqueurs originaux du format du fichier audio. Par exemple, si vous convertissez un fichier NSV avec de l'audio en ACC vers un container AVI, le format du marqueur audio sera incorrect et devra être changé. Pour visualiser la liste des marqueurs des formats audio, jetez un coup d'oeil à `codecs.conf`.

Exemple:

    mencoder entree.nsv -oac copy -fafmttag 0x706D \
      -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o sortie.avi

## 6.8. Encodage à partir de nombreux fichiers Image (JPEG, PNG, TGA, SGI)

MEncoder est capable de créer des fichiers à partir de un ou plusieurs fichiers JPEG, PNG ou TGA. Avec une simple copie de trame il peut créer des fichiers MJPEG (Motion JPEG), MPNG (Motion PNG) ou MTGA (Motion TGA).

Explication du fonctionnement :

1. MEncoder décode le(s) image(s) d'origine(s) avec `libjpeg` (pour décoder des PNGs, il utilisera `libpng`).

2. MEncoder envoie alors l'image décodée au compresseur vidéo choisi (DivX4, Xvid, ffmpeg msmpeg4, etc.).

Exemples. Une explication de l'option `-mf` peut être trouvée dans la page de man.

Créer un fichier Mpeg-4 à partir de tous les fichiers JPEG du répertoire courant:

    mencoder -mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc
    -lavcopts vcodec=mpeg4 -oac copy -o
    sortie.avi

Créer un fichier MPEG-4 à partir de quelques fichiers JPEG du répertoire courant:

    mencoder
    mf://trame001.jpg,trame002.jpg -mf
    w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell
    -oac copy -o sortie.avi

Création d'un fichier MPEG4 depuis une liste de fichiers JPEG (le fichier list.txt contenu dans le répertoire courant, liste les fichiers utilisés comme source, un par ligne):

    mencoder mf://@list.txt -mf w=800:h=600:fps=25:type=jpg \
        -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o sortie.avi

Il est possible de mélanger différents types d'images, quelque soit la méthode utilisée — fichiers individuels, joker( i.e * ) ou fichier avec liste — à condition que, bien sûr, elles soient de même dimension. De fait, vous pouvez par exemple, prendre une image de type PNG comme titre, et ensuite faire un diaporama de vos photos JPEG.

Créer un fichier Motion JPEG (MJPEG) à partir de tous les fichiers JPEG du répertoire courant:

    mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o sortie.avi

Créer un fichier non-compressé à partir de tous les fichiers PNG du répertoire courant:

    mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o sortie.avi

### Note

La largeur doit être un entier multiple de 4, c'est une limitation du format AVI RGB brut.

Créer un fichier Motion PNG (MPNG) à partir de tous les fichiers PNG du répertoire courant:

    mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o sortie.avi

Créer un fichier Motion TGA (MTGA) à partir de tous les fichiers TGA du répertoire courant:

    mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac
    copy -o sortie.avi

## 6.9. Extraction des sous-titres DVD depuis fichier Vobsub

MEncoder est capable d'extraire les sous-titres d'un DVD dans des fichiers au format VOBsub. Ils se composent de quelques fichiers ayant pour extension `.idx` et `.sub` et sont généralement compressés dans une seule archive `.rar`. MPlayer peut les lire avec les options `-vobsub` et `-vobsubid`.

Vous spécifiez le nom de base (c-à-d. sans extension `.idx` ou `.sub`) des fichiers de sortie avec `-vobsubout` et l'index pour ces sous-titres dans le fichier final avec `-vobsuboutindex`.

Si l'entrée n'est pas un DVD vous pouvez utiliser `-ifo` pour indiquer le fichier `.ifo` requis pour construire le fichier `.idx` final.

Si l'entrée n'est pas un DVD et que vous n'avez pas de fichier `.ifo` vous aurez besoin d'utiliser l'option `-vobsubid` pour lui permettre de savoir quelle langue placer dans le fichier `.idx`.

Chaque étape ajoutera les sous-titres actifs dans les fichiers `.idx` et `.sub` déjà existants. Vous devrez donc les enlever tous avant de commencer.

Exemple 6.5. Copier deux sous-titres d'un DVD pendant l'encodage deux passes

    rm soustitres.idx soustitres.sub
    mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
      -vobsubout soustitres -vobsuboutindex 0 -sid 2
    mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
      -vobsubout soustitres -vobsuboutindex 1 -sid 5

Exemple 6.6. Copier les sous-titres français depuis un fichier MPEG

    rm soustitres.idx soustitres.sub
    mencoder film.mpg -ifo film.ifo -vobsubout soustitres -vobsuboutindex 0  \
      -vobsuboutid fr -sid 1 -nosound -ovc copy

## 6.10. Préserver le ratio d'aspect

Les fichiers des DVDs et des SVCDs (c-à-d MPEG1/2) contiennent une valeur de ratio d'aspect, qui décrit comment le lecteur devrait dimensionner le flux vidéo, pour que les personnages n'aient pas des "têtes d'oeuf" (ex. 480x480 + 4:3 = 640x480). Cependant, quand vous encodez un fichier AVI (DivX), vous devez être conscients que les entêtes AVI ne stockent pas cette valeur. Redimensionner le film est assez infâme et coûteux en temps, il doit y avoir une meilleure solution !

Il y en a une.

MPEG-4 a une fonction spécifique: le flux vidéo peut contenir le ratio d'aspect requis. Oui, tout comme les fichiers MPEG-1/2 (DVD, SVCD) et H.263. Malheureusement, très peu de lecteurs vidéos en dehors de MPlayer supportent cet attribut MPEG-4. Excepté MPlayer.

Cette fonction ne peut être utilisée qu'avec le codec `mpeg4` de `libavcodec`. Gardez bien à l'esprit que même si MPlayer lit correctement le fichier créé, les autres lecteurs sont susceptibles d'utiliser un mauvais ratio.

Vous devriez vraiment couper les bandes noires au dessus et en dessous de l'image. Voir la page de man pour l'utilisation des filtres `cropdetect` et `crop`.

Utilisation

    mencoder echantillon-svcd.mpg -vf crop=714:548:0:14 -oac copy -ovc lavc \
        -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o sortie.avi

# Chapitre 7. L'encodage avec MEncoder

## 7.1. Faire un MPEG-4 ("DivX") de bonne qualité à partir d'un DVD

Il y a une question qui revient souvent :"Comment puis-je recopier un DVD avec la meilleure qualité possible pour une taille donnée ?". Ou encore : "Comment puis-je recopier un DVD sur mon disque dur avec la meilleure qualité possible ? je m'en fiche de la taille du fichier, je veux la meilleure qualité."

Cette dernière question est peut-être un peu mal posée. Après tout, si vous ne vous souciez pas de la taille du fichier, pourquoi ne pas simplement copier le flux MPEG-2 du DVD en entier ? Bien sûr, votre AVI finira par faire 5Gb, mais si vous voulez la meilleure qualité, sans vous soucier de la taille, ceci est probablement votre meilleure option.

En fait, la raison pour laquelle vous voulez convertir un DVD en MPEG-4 est que vous tenez réellement compte de la taille du fichier.

Il est difficile de proposer une recette sur la façon de créer des MPEG-4 de très haute qualité à partir de DVD. Il y a plusieurs facteurs à prendre en compte, et vous devriez comprendre ces détails ou vous serez déçus par les résultats. Ci-dessous nous allons examiner quelques-uns de ces problèmes, et voir un exemple. Nous supposerons que vous utilisez `libavcodec` pour encoder la vidéo, bien que la théorie s'applique également à d'autres codecs.

Si vous ne vous sentez pas de taille, vous devriez utiliser une des interfaces graphiques listées sur la page de notre projet dans Section MEncoder. Ainsi, vous devriez être capable de faire de encodages de DVD de haute qualité sans trop réfléchir, ces outils sont faits pour prendre les bonnes décisions à votre place.

### 7.1.1. Préparer l'encodage : identifier le matériel source et le nombre d'images par secondes

Avant même de penser à encoder un film, il est nécessaire de passer par quelques étapes préliminaires.

La première et plus importante étape avant l'encodage sera la détermination du type de contenu utilisé. Si votre matériel source provient d'un DVD ou de la télévision hertzienne/câble/satellite, il sera stocké sous l'un de ces 2 formats : NTSC pour l'Amérique du nord et le Japon, et PAL pour l'Europe, etc. Il est important de réaliser que ceci est uniquement un format adapté pour la télévision et cela ne correspond souvent pas au format original du film. L'expérience montre que le NTSC est bien plus dur à encoder car il y a plus d'éléments à identifier dans la source. Afin de produire un encodage acceptable, vous devez connaître le format original. Négliger cette étape créera divers défauts dans votre encodage, dont de hideux effets de peigne et des images dupliquées ou même perdues. De plus, ces artefacts sont mauvais pour l'efficacité d'encodage : vous obtiendriez une moins bonne qualité pour le même débit.

#### 7.1.1.1. Identification du nombre d'images par seconde de la source

Voici une liste de types de matériel source courants, où vous devriez les trouver et leurs propriétés :

- Film standard : produit pour une diffusion cinématographique en 24 images par secondes.

- Vidéo PAL : Enregistrée par une caméra à 50 trames par secondes. Une trame consiste en l'ensemble des lignes paires (ou impaires) d'une image. La télévision a été créée de façon à afficher alternativement l'une ou l'autre de ces trames créant ainsi une forme de compression analogique bon marché. L'oeil humain est censé compenser cette alternance de trames mais dès lors que vous comprenez l'entrelacement, vous apprendrez à le voir sur la télévision et vous ne la regarderez plus de la même façon. Deux trames ne font pas une image complète, car elles sont capturées avec un décalage d'1/50e de seconde et donc, à moins qu'il n'y ait pas de mouvement, elles ne s'alignent pas parfaitement.

- Vidéo NTSC : Enregistré par une caméra à 60000/1001 trames par secondes, ou 60 trames par secondes dans l'ère noir/blanc. A part cela, similaire au PAL.

- Dessins animés : Habituellement dessiné en 24 images par secondes, peut exister en mélange variés de nombre d'images par secondes.

- Infographie : peut être de n'importe quel nombre d'images par secondes mais certains sont plus communs que d'autres; 24 et 30 sont typiques du NTSC et 25 du PAL.

- Vieux films : nombre d'images par secondes généralement plus bas.

#### 7.1.1.2. Identification du matériel source

Les films composés d'images entières sont dits progressifs, alors que ceux composés de trames indépendantes sont appelés soit entrelacés soit vidéo - bien que ce dernier terme soit plutôt ambigu.

Pour compliquer le tout, certains films sont un mélange des 2.

La distinction la plus importante qui doit être faite entre ces formats est que certains utilisent des images entières alors que d'autres, des trames. Avant d'être visionnable sur un téléviseur, tout film (DVD inclus) doit être converti dans un format basé sur des trames. Les diverses méthodes par lesquelles ceci peut être fait peuvent être rassemblées sous le terme anglais "telecine", parmi lesquels l'infâme NTSC "3:2 pulldown" en est une variété. A moins que la vidéo source ne soit déjà basée sur des trames (et avec le bon nombre de trames par seconde), vous avez un film dans un format autre que celui d'origine.

Plusieurs variétés communes de pulldown :

- Pulldown PAL 2:2 : Le plus joli de tous. Chaque image est affichée pour la durée de deux trames par extraction des lignes paires et impaires, puis en les affichant par alternance. Si l'original est à 24 images par secondes, ce procédé accélère le film de 4%.

- pulldown PAL 2:2:2:2:2:2:2:2:2:2:2:3 : Toutes les 12 images, une image est affichées pour la durée de 3 trames au lieu de deux. Cela permet d'éviter le problème de l'accélération de 4% mais rend le processus bien plus difficile à inverser. Cette technique est généralement utilisée dans les productions musicales où l'accélération de 4% endommagerait sérieusement la qualité musicale.

- Téléciné NTSC 3:2 : Les images sont alternativement affichées pendant une durée de 3 ou 2 trames. Cela donne un nombre de trames par seconde de 2,5 fois le nombre d'images par seconde de l'original. Le résultat est aussi très légèrement ralenti de 60 trames par secondes à 60000/1001 trames par seconde pour maintenir la vitesse d'affichage NTSC.

- Pulldown NTSC 2:2 : Utilisé pour montrer du 30 images par secondes sur du NTSC. Joli, comme le pulldown PAL 2:2.

Il y aussi des méthodes de conversion entre vidéos NTSC et PAL mais cela sort du cadre de ce guide. Au cas où vous rencontriez un film au format NTSC ou PAL et vouliez l'encodez, le mieux serait de trouver une copie du film dans le format original. La conversion entre ces deux formats est hautement destructrice et ne peut être inversee proprement, votre encodage en souffrirait grandement s'il était fait à partir d'une source déja convertie (en NTSC ou PAL).

Quand des vidéos sont stockées sur un DVD, les paires de trames consécutives sont rassemblées en une image même si elles ne sont pas censées être affichées au même moment. Le standard MPEG-2 utilisé dans les DVDs et la télévision numérique fournit un moyen à la fois d'encoder les images progressives originales et de stocker le numéro des trames auxquelles une image doit être montrée dans l'en-tête de cette image. Si cette méthode est utilisée, on dit que le film est "soft-téléciné" puisque le procédé impose uniquement au lecteur DVD d'appliquer le pulldown sur le film plutôt que d'altérer le film lui-même. Ce cas est de loin préférable puisqu'il peut être facilement inversé (en fait, ignoré) par l'encodeur et puisqu'il préserve la qualité au maximum. Malgré cela, beaucoup de studios de production de DVD et d'émission n'utilisent pas les techniques d'encodage correctes, au lieu de cela, elles produisent des films en "hard telecine" dans lesquels des trames sont dupliquées dans l'encodage MPEG-2.

Les étapes pour gérer correctement ce genre de cas seront évoquées plus tard dans ce guide. Pour l'instant, nous allons vous donner quelques indications pour définir à quel type source vous avez à faire :

Régions NTSC :

- Si MPlayer affiche que le nombre d'image a changé en 24000/1001 quand vous regardez votre film et qu'il ne change plus après cela, c'est presque certainement un contenu progressif qui a été "soft téléciné".

- Si MPlayer affiche un nombre d'images par seconde alternant entre 24000/1001 et 30000/1001 et que vous voyez un effet de peigne par moment, alors il y a plusieurs possibilités. Les segments en 24000/1001 images par seconde sont très certainement un contenu progressif, "soft teleciné" mais les parties en 30000/1001 images par secondes peuvent être soit un contenu en 24000/1001 images par seconde "hard-telecinées", soit une vidéo NTSC en 60000/1001 trames par seconde. Utilisez les mêmes conseils que ceux pour les deux cas qui suivent pour savoir lequel.

- Si MPlayer montre un nombre d'images par seconde constant et que chacune des images des scènes de mouvement souffre d'un effet de peigne, alors votre film est une vidéo NTSC à 60000/1001 trames par seconde.

- Si MPlayer montre un nombre d'images par seconde constant et que deux images sur cinq souffrent d'un effet de peigne, votre film est "hard téléciné" en 24000/1001 images par seconde.

Régions PAL :

- Si vous ne voyez jamais d'effet de peigne, le film est en pulldown 2:2.

- Si vous voyez un effet de peigne apparaissant et disparaissant toutes les demi-secondes, alors le film a subi un pulldown 2:2:2:2:2:2:2:2:2:2:2:3.

- Si vous voyez toujours un effet de peigne dans les scènes de mouvement, alors le film est en PAL à 50 trames par secondes.

### Astuce:

MPlayer peut ralentir la lecture d'un film en utilisant l'option `-speed` ou le jouer image par image. Essayer `-speed 0.2` afin de regarder le film très lentement ou presser la touche "." répététivement pour avancer image par image et ainsi identifier la "signature" du pulldown si celle-ci n'est pas visible à vitesse normale.

### 7.1.2. Quantificateur constant contre multipasse

Il est possible d'encoder votre film à de très différentes qualités. Avec un encodeurs vidéo modernes et quelques compression pré-codec (antibruit et redimensionnement) il est possible d'obtenir une trés bonne qualité pour un film grand écran de 90-110 minutes sur 700Mb. De plus, à part les plus longs, tous les films peuvent être encodés à une qualité presque parfaite sur 1400Mb.

Il y a trois approches possibles pour encoder une vidéo : débit constant (CBR), quantification constante, et multipasse (ABR pour average bitrate ou débit moyen).

La complexité des images d'un film et donc le nombre de bits requis pour les compresser peut varier grandement d'une scène à l'autre. Les encodeurs vidéos modernes peuvent s'ajuster à ces besoins en faisant varier le débit. Cependant, dans des modes simples comme le CBR, le compresseur ne connaît pas le besoin en débit pour les scènes à venir et ne peut donc pas excéder le débit moyen requis pour de longues portions du film. Des modes plus avancés, comme l'encodage multipasse peuvent prendre en compte les statistiques des passes précédentes, ce qui règle le problème ci-dessus.

### Note :

La plupart des codecs qui supportent la compression ABR supportent seulement deux passages alors que d'autres comme le `x264`, le `Xvid` et le `libavcodec` supportent le multipasse ce qui améliore légèrement la qualité à chaque passe même si ces améliorations ne sont plus visibles ou mesurables après environ la quatrième passe. Ainsi, dans cette section, deux passes et multipasse seront utilisés indifféremment.

Dans chacun de ces modes, le codec vidéo (tel que `libavcodec`) sépare les images vidéo en macroblocs de 16x16 pixels et applique ensuite un quantificateur sur chaque macrobloc. Plus le quantificateur est bas, meilleure est la qualité et plus le débit est grand. La méthode utilisée par l'encodeur pour déterminer quel quantificateur utiliser pour un macrobloc donné varie et est très configurable. (ceci est une simplification à l'extrême du processus, mais il est utile de comprendre le principe de base).

Lorsque vous spécifiez un débit constant, le codec vidéo encode la vidéo en excluant les détails autant qu'il le faut et aussi peu que possible de façon à rester en dessous du débit spécifié. Si la taille du fichier vous est vraiment égale, vous pourriez aussi bien fixer un débit constant infini (en pratique, dela signifie une valeur assez haute pour ne pas poser de limites, tel que 10000Kbit). Sans réelle restriction de débit, le codec utilisera le plus bas quantificateur possible pour chaque macrobloc (tel que spécifié par `vqmin` pour `libavcodec`, qui vaut 2 par défaut). Dès que vous spécifiez un débit suffisament bas pour que le codec soit forcé d'utiliser un quantificateur plus grand, vous ruinez très certainement la qualité votre vidéo. Pour éviter ça, vous devriez probablement réduire la résolution de votre vidéo en suivant la méthode décrite plus tard dans ce guide.En général, vous devriez éviter le CBR si vous vous souciez de la qualité.

Avec un quantificateur constant, le codec utilise le même quantificateur (spécifié par l'option `vqscale` pour `libavcodec`) sur chaque macrobloc. Si vous voulez un encodage de la meilleure qualité possible, cette fois encore en ignorant le débit, vous pouvez utiliser `vqscale=2`. Cela donnera le même débit et le même PSNR (Peak Signal-to-Noise Ratio, rapport signal sur bruit de crête) que le CBR avec `vbitrate`=infini et la valeur par défaut de `vqmin` : 2.

Le problème avec la quantification constante est que cela utilise le quantificateur spécifié que le macrobloc en ait besoin ou non. En fait, il doit être possible d'utiliser un quantificateur plus haut sur un macrobloc sans sacrifier la qualité visuelle. Pourquoi gaspiller les bits avec un quantificateur inutilement bas ? Votre microprocesseur est sûrement a largement assez puissant, tandis que votre disque lui, a une taille limitée.

Avec l'encodage deux passes, la première passe va encoder le film comme en CBR, mais va garder un journal des propriétés de chaque image. Ces données sont ensuite utilisées pendant la seconde passe de façon à choisir intelligemment quels quantificateurs utiliser. Lors des scènes d'action rapide ou celles ayant beaucoup de détails, des quantificateurs plus élevés seront probablement utilisés. Pendant les scènes avec peu de mouvements ou avec peu de détails, ce seront des quantificateurs plus bas. Normalement, la quantité de mouvement est bien plus importante que la quantité de détail.

Si vous utilisez `vqscale=2`, alors vous gaspillez des bits. Si vous utilisez `vqscale=3`, vous n'avez pas la meilleure qualité d'encodage. Supposez que vous encodez un DVD avec `vqscale=3`, et que le résultat est 1800Kbit/s. Si vous faites un encodage en deux passes avec `vbitrate=1800`, la vidéo produite aura une meilleure qualité pour le même débit.

Maintenant que vous êtes convaincu que l'encodage deux passes est la bonne méthode, la vraie question est maintenant de savoir quel débit utiliser. Il n'y a pas de réponse toute faite. Idéalement, vous devriez choisir un débit offrant un compromis entre qualité et taille de fichier. Cette valeur varie selon la vidéo source.

Si la taille ne compte pas, un bon point de départ pour un encodage de très haute qualité est environ 2000kbit/s plus ou moins 200kbit/s. Pour les vidéos comportant beaucoup d'actions ou de détails ou si vous avez de très bon yeux, vous pouvez choisir 2400 ou 2600. Pour certains DVDs, vous pourriez ne pas voir de différence à 1400kbps. C'est une bonne idée que d'essayer sur des scènes avec différents débits pour se rendre compte.

Si vous avez fixé une taille limite, alors il faudra d'une certaine façon calculer le débit. Mais avant cela, il faudra définir l'espace que vous réservez aux piste(s) audio et vous devrez les encoder en premier. Vous pourrez alors calculer le débit souhaité avec l'équation suivante : `Débit = (taille_fichier_final_en_Mo - taille_fichier_son_en_Mo) * 1024 * 1024 / durée_en_secondes * 8 / 1000` Par exemple, pour ramener deux heures de films sur un CD de 702Mo avec une piste son de 60Mo, le débit vidéo sera alors de : `(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 = 740kbit/s`

### 7.1.3. Contraintes pour une compression efficace

De par la nature intrinsèque de la compression MPEG, de nombreux paramètres entrent en jeu afin d'obtenir une qualité maximale. Le MPEG découpe la vidéo en carré de 16x16 appelé macroblocs. Chacun d'entre eux est composé de 4 petits (8x8) blocs contenant des informations sur la luminosité (intensité) ainsi que de 2 blocs (donc à résolution moitié) contenant des informations chromatiques (pour les teintes rouge-cyan et bleu-jaune). Même si la longueur et la largeur du film ne sont pas des multiples de 16, l'encodeur utilisera des macroblocs de 16x16 pour couvrir l'image entière, l'espace restant sera alors perdu. Si votre intérêt est de conserver une très bonne qualité, utiliser des résolutions non multiples de 16 n'est pas une bonne idée.

La plupart des DVDs ont aussi des bandes noires sur les bords. Négliger ces parties peut grandement altérer la qualité de plusieurs manières.

1. La compression MPEG est aussi dépendante du domaine de transformation des fréquences, en particulier du "Discrete Cosine Transform (DCT)" (similaire à une transformée de Fourier). Ce type d'encodage est efficace pour les formes et les transitions douces, mais fonctionne moins bien avec les contours acérés. Afin d'encoder correctement, il demandera plus de bits, sinon des artefacts de compression apparaîtront, aussi connus sous le nom de "ringing".

   La transformation en fréquence (DCT) prend place séparément dans chaque macrobloc (en fait, dans chaque bloc), donc le problème n'apparaîtra que si un bord franc se situe dans ce bloc. Si vos bordures noires commencent exactement sur un multiple de 16, ce ne sera pas un problème. En pratique, les bordures ne sont jamais bien alignées, et il sera certainement nécessaire de les couper pour éviter ces défauts.

En plus des transformations au niveau des fréquences, la compression MPEG utilise des vecteurs de mouvements représentant les changements d'une image à la suivante. Ces vecteurs de mouvements voient leur utilité grandement réduite quand la prochaine image à un contenu totalement différent. Quand il y a un mouvement qui sort de la région encodée, cela ne pose pas de problème aux vecteurs. En revanche, cela peut poser des problèmes avec les bandes noires :

2. Pour chaque macrobloc, la compression MPEG stocke un vecteur identifiant quelle partie de l'image précédente devrait être copiée dans les macroblocs de l'image suivante. Seules les différences devront alors être encodées. Si le macrobloc s'étend et prend en compte une des bordures noire de l'image, alors le vecteur de mouvement écrasera la bordure noire. Cela veut dire que de nombreux bits sont gaspillés pour re-noircir la bande noire ou alors (plus probable) que le vecteur de mouvement ne sera pas du tout utilisé et que tout le macrobloc devra alors être ré-encodé. Dans tous les cas, l'efficacité de l'encodage en est grandement améliorée.

   Une fois encore, ce problème n'existe que si les lignes des bordures noires ne sont pas un multiple de 16.

3. Enfin, supposons que l'on ait un macrobloc à l'intérieur d'une image et qu'un objet se déplace dans ce bloc proche d'un bord de l'image. Malheureusement, le MPEG ne sait pas faire "copier juste la partie qui dans l'image et laisser tomber la partie noire". Donc la partie noire sera alors aussi copiée, ce qui fait encore gaspiller beaucoup de bits pour compresser un morceau d'image qui n'est pas sensé être là.

   Si l'objet en mouvement parcourt depuis le bord noir jusque dans la zone encodée, le MPEG dispose d'optimisation spéciales pour copier en répétition des pixels depuis le bord de l'image lorsque celui vient de l'extérieur de la partie encodée. Ces optimisations deviennent inutiles quand le film à des bandes noires. Contrairement aux problèmes 1 et 2, même les bordures noires multiples de 16 n'aident pas dans ce cas.

4. Malgré le fait que les bordures soient entièrement noires et quelles ne changent jamais, elles impliquent un léger surplus dû au plus grand nombre macroblocs à coder.

Pour toutes ces raisons, il est préférable de couper entièrement ces bandes noires. Dans la même optique, s'il y a une partie contenant du bruit ou de la distorsion d'image près d'une bordure, la coupure l'enlèvera et permettra d'avoir une amélioration significative de la qualité de l'encodage. Les puristes parmi les vidéophiles souhaiteront préserver l'encodage le plus proche possible de l'original, à moins qu'ils n'encodent avec un quantificateur constant, la qualité gagnée après la suppression des bandes noires améliorera grandement la qualité finale de l'encodage au regard des quelques informations perdues.

### 7.1.4. Découpage et Redimensionnement

Vous vous souvenez de la section précédente que les dimensions (à la fois largeur et hauteur) de l'image finale doivent être des multiples de 16. Cela peut être réalisé par recadrage (découpe), redimensionnement ou une combinaison des deux.

Lors du recadrage, il y a quelques règles qui doivent être respectées pour éviter d'endommager votre film. Le format YUV normal, 4:2:0, stocke la chrominance (la couleur) de manière sous-échantillonnée, c'est à dire que la chrominance est échantillonnée moitié moins souvent que la luminance (intensité). Sur le schéma suivant, L indique l'échantillonage en luminance et C en chrominance.

L | L | L | L | L | L | L | L
C | C | C | C
L | L | L | L | L | L | L | L
L | L | L | L | L | L | L | L
C | C | C | C
L | L | L | L | L | L | L | L

Comme vous pouvez le voir, les lignes et colonnes de l'image viennent naturellement par deux. Ainsi, les dimensions de votre recadrage ainsi que ses distances au bords d'origine doivent être paires. Si elles ne l'étaient pas, les chrominances et luminances ne seraient plus alignées. En théorie, il est possible d'avoir des dimensions impaires, mais cela requière un nouvel échantillonage de la chrominance, ce qui engendre potentiellement des pertes d'information et n'est pas supporté par le filtre de recadrage.

Ensuite, la vidéo entrelacée est échantillonnée de la façon suivante :

Trame impaire | Trame paire
L | L | L | L | L | L | L | L |  |  |  |  |  |  |  |
C | C | C | C |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  | L | L | L | L | L | L | L | L
L | L | L | L | L | L | L | L |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  | C | C | C | C
|  |  |  |  |  |  |  | L | L | L | L | L | L | L | L
L | L | L | L | L | L | L | L |  |  |  |  |  |  |  |
C | C | C | C |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  | L | L | L | L | L | L | L | L
L | L | L | L | L | L | L | L |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  | C | C | C | C
|  |  |  |  |  |  |  | L | L | L | L | L | L | L | L

Comme vous pouvez le voir, le plus petit motif à se répéter est sur 4 lignes. Donc, pour la vidéo entrelacée, la hauteur de votre recadrage et sa distance verticale aux bords doivent être des multiples de 4.

La résolution native pour un DVD NTSC est 720x480 et 720x576 pour un PAL, mais il y a un indicateur d'aspect qui spécifie que le mode est plein-écran (full-screen 4:3) ou bien écran large (wide-screen 16:9). Un grand nombre de DVDs (pas tous) en wide-screen ne respecte pas strictement le format 16:9, mais est plutôt en 1,85:1 ou 2,35:1 (cinémascope). Ceci signifie qu'il y aura des bandes noires à enlever sur la vidéo.

MPlayer fournit un filtre de détection qui détermine le rectangle de recadrage (`-vf cropdetect`). Lancer l'application MPlayer avec l'option `-vf cropdetect` et il affichera les options de recadrage pour enlever les bandes. Vous devez laisser tourner le film suffisamment longtemps pour que toute la zone de l'image soit vue de façon à obtenir des valeurs précises.

Ensuite, testez les valeurs obtenues avec MPlayer en utilisant la ligne de commande fournie par `cropdetect`, et éventuellement ajustez le rectangle de recadrage. Ce filtre `rectangle` offre la possibilité de le positionner de façon interactive pendant le film. N'oubliez pas de suivre les recommandations précédentes sur la divisibilité des dimensions de l'image afin de ne pas désaligner les plans de chrominance.

Dans certain cas, le redimensionnement n'est pas souhaitable. Il est délicat dans le sens vertical avec des vidéos entrelacées, si vous désirez conserver l'entrelacement, vous devrez vous abstenir de redimensionner. Sans redimensionner, pour utiliser des dimensions multiples de 16, il vous faudra recadrer plus petit que l'image. Ne pas recadrer plus grand que l'image parce que les bandes noires sont nuisibles à la compression.

Le MPEG-4 utilisant des macroblocs de 16x16, assurez-vous que les dimensions de la vidéo que vous encodez sont des multiples de 16, sinon vous dégraderez la qualité, surtout à de faibles débits. Pour ce faire, vous pouvez arrondir les dimensions du rectangle de recadrage au multiple de 16 inférieur. Comme expliqué plus haut, durant le recadrage, vous devrez augmenter le décalage en Y de la moitié de la différence entre l'ancienne et la nouvelle hauteur pour que l'image résultante se situe au milieu de l'ancienne. Et à cause de la façon dont les vidéos DVD sont échantillonnées, assurez-vous que ce décalage en Y est un nombre pair. (En fait, c'est une règle : n'utilisez jamais une valeur impaire lors d'un recadrage ou d'un redimensionnement de vidéo). Si vous ne vous faites pas à l'idée de perdre quelques pixels, alors vous devriez plutôt redimensionner la vidéo. Nous allons voir cela dans notre exemple ci-dessous. En fait, vous pouvez laisser le filtre `cropdetect` faire tout cela pour vous : il a un paramètre optionnel d'arrondi `round` qui vaut 16 par défaut.

Faites aussi attention aux pixels à "demi-noir" sur les bords. Assurez-vous qu'ils sont en dehors de votre recadrage, autrement, vous gâcherez des bits qui seraient mieux utilisés ailleurs.

Après tout ceci, vous obtiendrez une vidéo qui n'est pas tout à fait au format 1,85:1 ou 2,35:1, mais quelque chose d'assez proche. Vous pourriez alors calculer le nouveau format à la main mais MEncoder propose une option appelée `autoaspect` pour `libavcodec` qui fera cela pour vous. N'agrandissez surtout pas cette vidéo pour obtenir les dimensions standards à moins que vous n'aimiez gâcher votre espace disque. Ce changement d'échelle se fait à la lecture, le lecteur utilisera les données stockées dans le fichier AVI pour effectuer le bon rendu. Malheureusement, tous les lecteurs vidéos n'appliquent pas ce redimensionnement automatique, c'est peut-être pour cela que vous voudrez quand même procéder à ce redimensionnement.

### 7.1.5. Choix de la résolution et du débit

Si vous n'encodez pas dans un mode à quantificateur constant, vous devez sélectionner un débit. Le concept de débit (bitrate) est assez simple. C'est un nombre (moyen) de bits par seconde qui sera utilisé pour stocker votre film. Normalement, le débit est mesuré en kilobits (1000 bits) par seconde. La taille de votre film sur le disque dur correspond au débit multiplié par sa durée plus une petite quantité pour l'"en-tête" (surcoût, voir par exemple la section sur les conteneurs AVI). D'autres paramètres comme le redimensionnement, le recadrage, etc. ne modifieront pas la taille du fichier sauf si vous y changez aussi le débit.

Le débit n'est pas proportionnel à la résolution. Ce qui veut dire qu'un fichier en 320x240 à 200 kbit/sec n'aura pas la même qualité que le même film en 640x480 à 800 kbit/sec ! A cela, deux raisons :

1. Visuelle : Les artefacts de compression MPEG se remarquent plus s'il sont agrandis. Les artefacts apparaissent à l'échelle des blocs (8x8). L'oeil humain ne voit pas autant d'erreurs dans 4800 petits blocs aussi facilement que qu'il les voit dans 1200 grands blocs (en supposant une visualisation en plein écran dans les deux cas).

2. Théorique : Quand vous réduisez la taille d'une image mais que vous continuez à utiliser les mêmes tailles de bloc (8x8) pour la transformation dans le domaine fréquentiel, vous déplacez plus de données vers les hautes fréquences. Grossièrement dit : chaque pixel contient plus de détails qu'avant. Donc, même si votre image de taille réduite ne contient plus qu'un quart de l'information dans le domaine spatial, elle peut toujours contenir une grande part de l'information dans le domaine fréquentiel (en supposant que les hautes fréquences étaient sous-utilisées dans votre originale en 640x480).

Les anciens guides recommandaient de choisir un débit et une résolution basés sur "1 bit par pixel", mais ce n'est que peu justifié avec les raisons évoquées ci-dessus. Une meilleure estimation reste que le débit augmente proportionnellement à la racine carrée de la résolution, donc une image 320x240 à 400 kbit/sec sera comparable à une en 640x480 à 800 kbit/sec. Cela n'a pas été strictement vérifié par la théorie ou une quelconque méthode. De plus, pour un film donné, le résultat variera en fonction du bruit, des détails, du degré de mouvement, etc.. Il est futile de donner des recommandations générales du style : un nombre de bits par longueur de diagonale (similaire au bit par pixel, en utilisant la racine carrée).

Jusqu'à maintenant, nous avons discuté de la difficulté de choisir le débit et la résolution.

#### 7.1.5.1. Calcul de la résolution

Les étapes qui suivent vous guideront dans le calcul de la résolution de votre encodage sans trop distordre la vidéo, en prenant en compte les différents types d'information sur la source vidéo. En premier lieu, il faut calculer le format de l'encodage : `ARc = (Wc x (ARa / PRdvd )) / Hc`

Où :

- Wc et Hc sont la largeur et la hauteur de la vidéo recadrée,

- ARa est le format affiché, généralement 4/3 ou 16/9,

- PRdvd est le ratio des pixels du DVD qui normalement est égal à 1,25 (=720/576) pour le PAL et 1,5(=720/480) pour le NTSC,

Ensuite, vous pouvez calculer la résolution X et Y en tenant compte du facteur de Qualité de Compression (CQ) : `ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16` et `ResX = INT( ResY * ARc / 16) * 16`

D'accord, mais c'est quoi ce CQ ? le CQ représente le nombre de bit par pixel et par image encodée. Grosso modo, plus le CQ est grand, moins il y aura de chances de voir apparaître des artefacts de compression. En tout cas, si vous avez une limite de taille pour votre film (1 ou 2 CDs par exemple), il y a donc une limite au nombre de bits total que vous pouvez lui allouer et il est donc nécessaire de trouver le bon compromis entre compressibilité et la qualité.

Le CQ dépend du débit, de l'efficacité du codec vidéo et de la résolution du film. Une manière d'augmenter le CQ, c'est de réduire la résolution du film puisque le débit est calculé en fonction de la taille finale désirée et la longueur du film qui sont constantes. Avec les codecs ASP MPEG-4 comme le `Xvid` ou le `libavcodec`, un CQ en dessous de 0,18 donne généralement une image type mosaïque car il n'y pas assez de bits pour coder les informations de chaque macrobloc (le MPEG-4, comme les autres codecs, groupe les pixels compressés par blocs pour compresser l'image, s'il n'y a pas assez de bits, les bords de ce macrobloc deviennent alors visibles). Donc il est raisonnable de prendre un CQ entre 0,20 et 0,22 pour une copie tenant sur 1 CD, et entre 0,26 et 0,28 pour une copie sur 2 CDs avec des options d'encodage standard. Des options d'encodage plus avancées telles que celles listées ici pour le `libavcodec` et le `Xvid` devraient permettre d'obtenir la même qualité avec un CQ se situant entre 0,18 et 0,20 pour une copie sur 1 CD et 0,24 à 0,26 pour une copie sur 2 CDs. Avec les codecs MPEG-4 AVC comme `x264`, vous pouvez utiliser un CQ se situant entre 0,14 et 0,16 avec des options standards d'encodage, et même descendre entre 0,10 et 0,12 avec les options avancées de `x264` .

Notez que le CQ n'est qu'un indicateur puisqu'il dépend directement du contenu encodé, un CQ de 0,18 pourrait sembler parfait pour un film de Bergman, mais trop petit pour un film comme Matrix contenant beaucoup de scènes d'actions. A l'opposé, il est inutile d'aller au delà de 0,30 pour le CQ, vous ne feriez que gâcher de l'espace disque sans gain notable en qualité. Notez aussi, comme cela a été dit plus haut que les vidéos en plus petites résolutions auront besoin d'un plus grand CQ (comparé à la résolution d'un DVD par exemple) pour un rendu correct.

### 7.1.6. Les filtres

Apprendre à utiliser les filtres vidéos de MEncoder est essentiel pour créer des fichiers bien encodés. Toutes les transformations vidéos sont exécutées au travers de filtres, comme le recadrage (découpe), le redimensionnement, l'ajustement de couleur, la suppression du bruit, l'ajustement de la netteté, le dés-entrelacement, le téléciné, le téléciné inverse, ou l'effacement des macroblocs trop visible, pour n'en nommer que quelques un. Avec le grand nombre de formats d'entrée supporté, la variété des filtres disponibles dans MEncoder est l'un de ses principaux avantages sur d'autres programmes similaires.

Les filtres sont chargés dans la chaîne grâce à l'option -vf :

    -vf filtre1=options,filtre2=options,...

La plupart des filtres acceptent plusieurs options numériques séparées par des double-points (:), mais la syntaxe varie d'un filtre à l'autre, aussi lisez la page manuel pour avoir les détails sur les filtres que vous souhaitez utiliser.

Les filtres agissent sur la vidéo dans l'ordre de leur chargement. Par exemple, la chaîne suivante :

    -vf crop=688:464:12:4,scale=640:464

recadrera d'abord une zone de 688x464 depuis le bord supérieur gauche mais avec un décalage de (12;4), puis redimensionnera la vidéo pour obtenir du 640x464.

Certains filtres ont besoin d'être chargés au début (ou proche du début) de la chaîne pour profiter d'informations du décodeur vidéo qui seraient perdues ou invalidées par d'autres filtres. Les principaux exemples sont `pp` (postprocessing, seulement dans le cas d'un estompage des macroblocs ou des enlèvements des artefacts de compression), le `spp` (un autre post processus pour enlever les artefacts MPEG), le `pullup` (téléciné inverse), et `softpulldown` (conversion du soft téléciné en hard telecine).

En général, il vaut mieux utiliser le moins de filtres possibles afin de conserver l'encodage le plus proche possible du DVD source. Le recadrage est souvent nécessaire (comme expliqué plus haut), mais évitez de redimensionner l'image. Bien qu'il soit parfois préférable de réduire la taille de l'image plutôt que d'utiliser un quantificateur plus élevé, nous voulons éviter tout ceci. Souvenez-vous que nous avons décidé au départ d'échanger des bits pour de la qualité.

Aussi, n'ajustez pas le gamma, le contraste, la luminosité, etc. Ces réglages peuvent être bons chez vous mais pas sur un autre écran. Ils doivent être appliqués lors de la lecture uniquement.

Une chose que vous pouvez vouloir faire est de passer la vidéo à travers un filtre trés léger antibruit, comme par exemple `-vf hqdn3d=2:1:2`. Il s'agit encore une fois d'optimiser l'utilisation de l'espace disque : pourquoi le gaspiller à encoder du bruit alors qu'il sera là de toutes façons à la lecture ? Augmenter les paramètres de `hqdn3d` améliorera encore la compressibilité, mais si vous les augmentez trop, vous risquez de dégrader l'image. Les valeurs suggérées ci-dessus (`2:1:2`) sont plutôt conservatrices, n'hésitez pas à les augmenter et à regarder le résultat par vous-même.

### 7.1.7. Entrelacement et Téléciné

Presque tous les films sont tournés en 24 images par seconde. Puisque le NTSC est en 30000/1001 images par seconde, certains traitements doivent être appliqués pour l'adapter au débit NTSC. Ce procédé est appelé 3:2 pulldown, plus communément appelé téléciné (car le pulldown est souvent appliqué durant la phase de conversion en téléciné), et de façon simpliste, il fonctionne en ralentissant le film à 24000/1001 images par seconde, et en répétant une image sur 4.

Aucun traitement spécifique n'est cependant appliqué à la vidéo des DVDs PAL, qui fonctionnent à 25 images par seconde (techniquement, PAL peut être téléciné, ce qui est appelé 2:2 pulldown, mais ceci n'est pas un problème en pratique). Le film en 24 images par seconde est simplement lu en 25 images par seconde. Le résultat est que la vidéo tourne légèrement plus vite, mais à moins d'être un extra-terrestre, vous ne verrez probablement pas la différence. Le son de la plupart des DVDs PAL a été corrigé de façon à sonner correctement quand il est lu à 25 images par seconde, même si la piste audio (et donc le film entier) a une durée 4% plus courte que les DVDs NTSC.

Puisque la vidéo d'un DVD PAL n'a pas été modifiée, vous n'avez pas à vous soucier de la cadence de défilement des images. La source est en 25 images par seconde, et votre copie sera en 25 images par seconde. Cependant, si vous recopier un film d'un DVD NTSC, vous pourrez avoir besoin d'appliquer du téléciné inverse.

Pour les films tournés en 24 images par seconde, la vidéo du DVD NTSC est soit en 30000/1001 téléciné, soit en 24000/1001 progressif et prévu pour être téléciné à la volée par le lecteur DVD. D'un autre coté, les séries TV sont généralement seulement entrelacées, pas télécinées. Ce n'est pas une règle absolue : certaines séries TV sont entrelacées (comme 'Buffy contre les vampires') alors que d'autres sont un mélange de progressif et d'entrelacé (comme 'Dark Angel', ou '24 heures chrono').

Il est fortement recommandé de lire la section Comment gérer le téléciné et le dés-entrelacement avec les DVDs NTSC pour apprendre à gérer les différentes possibilités.

De toutes façons, si vous copiez principalement des films, vous rencontrerez de la vidéo 24 images par seconde progressive ou télécinée, et dans ce cas vous pouvez utiliser le filtre `pullup` avec `-vf pullup,softskip`.

### 7.1.8. Encodage de vidéos entrelacées

Si la vidéo que vous désirez encoder est entrelacée (NTSC ou PAL), vous devez décider si vous voulez la dés-entrelacer ou non. Si le dés-entrelaçage rend votre film visionable sur des appareils à balayage progressif tels que les écrans d'ordinateur ou les projecteurs, cela a un coût : le taux de 50 ou 60 000/1001 trames par secondes passera à 25 ou 30 000/1001 et en gros, la moitié de l'information de votre film sera perdue pendant les scènes avec beaucoup de mouvement.

Ainsi, si votre encodage a pour but l'archivage de haute qualité, il est recommandé de ne pas dés-entrelacer. Le film pourra toujours être dés-entrelacé lors de sa lecture sur un appareil à balayage progressif. La puissance des ordinateurs actuels oblige les lecteurs à utiliser pour ce faire des filtres de désentrelaçage qui offrent un rendu final imparfait. Mais les lecteurs du futur seront capables de mimer l'affichage entrelacé des téléviseurs.

Des précautions particulières doivent être prises lors d'un travail sur vidéo entrelacée :

1. La hauteur de recadrage et son décalage vertical doivent être des multiples de 4.

2. Tout redimensionnement vertical doit être effectué en mode entrelacé.

3. Les filtres de post-traitement et d'antibruit peuvent ne pas marcher comme souhaité si vous ne prenez pas soin de ne travailler que sur une trame à la fois et ils peuvent détériorerla video s'ils sont utilisés incorrectement.

En tenant compte de ces recommandations, voici notre premier exemple :

    mencoder capture.avi -mc 0 -oac lavc -ovc lavc -lavcopts \
        vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224

Notez l'usage des options `ilme` et `ildct`.

### 7.1.9. Remarques sur la synchronisation Audio/Vidéo

Le système de synchronisation audio/vidéo de MEncoder a été créé dans le but de pouvoir lire et restaurer même des fichiers dont la synchronisation est faussée ou été mal faite, ou des fichiers corrompus. Cependant, dans certains cas, ils peuvent créer des duplications ou des sauts d'image non désirés et peut-être une légère désynchronisation lorsqu'ils sont utilisés sur des fichiers sources propres (bien sûr, les questions de synchronisation A/V ne se posent que si vous encodez ou copiez la bande son en même temps que vous encodez la video, ce qui est fortement encouragé). Ainsi, vous devez peut-être passer à la synchronisation A/V basique grâce à l'option `-mc 0`. Vous pouvez la mettre dans votre fichier de configuration `~/.mplayer/mencoder` tant que vous ne travaillez que sur des fichiers sources propres (DVD, capture télé, encodage MPEG-4 de haute qualité, etc) et des fichiers ASF/RM/MOV non-détériorés.

Si vous désirez vous protéger encore plus contre les sauts et les duplications étranges d'images, vous pouvez utiliser à la fois `-mc 0` et `-noskip`. Cela empêche toute synchronisation A/V et copie les images une à une. Vous ne pouvez donc pas l'utiliser avec des filtres qui ajoutent ou enlèvent des image de façon imprévisible ou si votre fichier source a un nombre d'images par seconde variable ! L'option `-noskip` n'est donc généralement pas recommandée.

Il a été signalé que l'encodage audio nommé "3 passes" que MEncoder supporte provoquait des désynchronisations A/V. Cela arrive en tout cas quand il est utilisé en même temps que certains filtres, donc, il est maintenant recommandé de ne pas utiliser le mode audio "3 passes". Cette possibilité n'est conservé que pour des raisons de compatibilité et pour les utilisateurs experts qui savent quand l'utiliser. Si vous n'avez jamais entendu parler de mode "3 passes", oubliez que cela a été mentioné !

Il a été signalé des désynchronisations A/V lors d'encodage à partir de l'entrée standard avec MEncoder. Ne faites pas ça ! Utilisez toujours un fichier, un CD/DVD ou autre comme source.

### 7.1.10. Choisir le codec video

Le choix du meilleur codec video dépend de plusieurs facteurs comme la taille, la qualité, la lecture en transit (streamability), la facilité d'utilisation, la popularité qui, pour certains d'entre eux dépendent de préférences personnelles et de contraintes techniques.

- L'efficacité de la compression : Il est assez évident que les codec des toutes dernières générations sont faits pour augmenter la qualité et la compression. Donc, les auteurs de ce guide et de nombreuses autres personnes pensent que vous ne pouvez pas vous tromper [1] si vous choisissez un codec MPEG-4 AVC comme le `x264` au lieu de codecs MPEG-4 ASP tels que le `libavcodec` MPEG-4 ou le `Xvid`. (Les développeurs de codec peuvent être intéressés par la lecture de l'avis de Michael Niedermayer's sur « why MPEG4-ASP sucks ».) De la même manière, vous devriez obtenir une meilleure qualité en utilisant un codec MPEG-4 ASP plutôt que MPEG-2.

  Néanmoins, les nouveaux codecs qui sont en développement peuvent souffrir de bugs qui n'ont pas encore été repérés et qui peuvent saboter un encodage. Ceci est malheureusement parfois le prix à payer pour l'utilisation de technologies de pointe.

  De plus, commencer à utiliser un nouveau codec impose que vous passiez du temps pour vous habituer à ses options de façon à ce que vous sachiez quoi ajuster pour parvenir à la qualité désirée.

- Compatibilité du matériel : Cela prend habituellement beaucoup de temps pour que les lecteurs vidéos de salon se mettent à supporter les derniers codecs vidéos. Ainsi, la plupart ne supportent que le MPEG-1 (comme les VCD, XVCD et KVCD), le MPEG-2 (comme les DVD, SVCD and KVCD) et le MPEG-4 ASP (comme les DivX, LMP4 `libavcodec` et `Xvid`) (attention : toutes les fonctionnalités MPEG-4 ASP ne sont généralement pas supportées). Référez-vous aux spécifications techniques de votre lecteur (si elles existent), ou surfez sur le net pour plus d'infos.

- La meilleure qualité par temps d'encodage : Les codecs qui sont sortis depuis un certain temps (comme l'encodeur MPEG-4 de `libavcodec` et `Xvid`) sont habituellement largement optimisés avec toutes sortes d'algorithmes astucieux et des routines optimisées en assembleur SIMD. C'est pourquoi ils tendent à fournir la meilleure qualité par temps d'encodage. Par contre, ils peuvent avoir des options très avancées qui, si elles sont enclenchées, rendent l'encodage très lent pour des gains limités.

  Si vous recherchez la vitesse, vous devriez conserver à peu près les réglages par défaut du codec vidéo (bien que vous deviez quand même essayer les autres options qui sont mentionnées dans d'autres sections de ce guide).

  Vous pouvez aussi vouloir choisir un codec multi-threadé, bien que ce ne soit utile que pour les utilisateurs de machines avec plusieurs processeurs. Le codec MPEG-4 de `libavcodec` le permet mais les gains en temps sont limités et cela procure une légère baisse de qualité d'image. L'encodage multi-threadé du codec `Xvid`, activé par l'option `threads`, peut être utilisé pour améliorer la vitesse d'encodage — de typiquement 40-60% — avec très peu voire aucune détérioration de l'image. Le codec `x264` permet aussi l'encodage multi-threadé ce qui l'accélère pour le moment de 94% par CPU avec une baisse de PSNR comprise entre 0.005dB et 0.01dB avec un réglage classique.

- Les préférences personnelles : Là les choses deviennent presque irrationnelles : pour la même raison pour laquelle certains s'accrochaient encore à DivX 3 alors que d'autres codecs plus modernes faisaient des merveilles depuis des années, certaines personnes préfèrent `Xvid` ou le codec MPEG-4 de `libavcodec` par rapport à `x264`.

  Vous devriez vous faire votre propre opinion. Ne croyez pas ceux qui ne jurent que par un seul codec. Prenez quelques échantillons de sources brutes et comparez les différentes options et codecs pour en trouver un qui vous convienne le mieux. Le meilleur codec est celui que vous maîtrisez et qui vous semble le plus joli à vos yeux [2]!

Référez-vous à la section Sélection des codecs et du format du conteneur pour avoir une liste des codecs supportés.

### 7.1.11. Le son

Le son est un problème bien plus simple à résoudre : si la qualité vous intéresse, laissez le flux audio tel quel. Même les flux AC-3 5.1 utilisent au plus 448Kbit/s, et tous ces bits sont utiles. Vous pourriez être tenté de convertir le son en Ogg Vorbis de haute qualité, mais le fait que vous n'ayez pas d'entrée AC-3 (dolby digital) sur votre chaîne HIFI aujourd'hui ne signifie pas que vous n'en n'aurez pas demain. Pensez au futur en conservant le flux AC-3. Vous pouvez le garder en le copiant directement dans le flux vidéo pendant l'encodage. Vous pouvez aussi l'extraire avec l'intention de l'inclure dans des conteneurs tels que NUT ou Matroska.

    mplayer fichier_source.vob -aid 129 -dumpaudio -dumpfile son.ac3

mettra dans le fichier `son.ac3` la piste audio 129 du fichier `fichier_source.vob` (NB : les fichiers VOB des DVD utilisent normalement un système de numérotation différent pour les pistes audio, ainsi la piste numéro 129 est la deuxième piste du fichier).

Mais parfois vous n'aurez d'autres choix que de re-compresser le son afin de laisser plus de place à la vidéo. La plupart des gens optent alors pour le codec MP3 ou le Vorbis. Bien que ce dernier soit très efficace, le MP3 est bien mieux accepté par les lecteurs de salon même si cette tendance évolue.

N'utilisez pas l'option `-nosound` si vous avez l'intention d'ajouter du son à votre encodage vidéo, même plus tard. En effet, même s'il est probable que tout fonctionne correctement, l'utilisation de l'option `-nosound` peut cacher certains problèmes dans la ligne de commande de votre encodage. En d'autres mots, avoir une bande son pendant l'encodage vous certifie que vous pourrez avoir une synchronisation propre (en supposant que vous ne receviez pas de messages comme « Trop de paquets audio dans la mémoire tampon »)

Vous aurez besoin que MEncoder traite le son. Vous pouvez par exemple copier la bande son originale pendant l'encodage avec l'option `-oac copy` ou la convertir en "léger" 4kHz mono WAV PCM avec l'option `-oac pcm -channels 1 -srate 4000`. Autrement, dans certains cas, cela générera un fichier vidéo qui ne se synchronisera pas avec l'audio. Cela arrive quand le nombre de trames vidéos dans le fichier source ne correspond pas exactement à la longueur totale des trames audio ou lorsqu'il y a une discontinuité ou des frames audio en trop ou manquantes. La bonne façon de gérer ce type de problèmes est d'insérer un silence ou bien de couper l'audio à ces emplacements. Cependant, MPlayer ne sait pas le faire, donc si vous dé-multiplexez l'AC-3 et l'encodez avec une autre application (ou le sortez en PCM avec MPlayer), les discontinuités subsistent et la seule façon de les corriger est de supprimer ou de rajouter des trames. Tant que MEncoder voit la piste son pendant qu'il encode la vidéo, il peut faire ces suppressions/rajouts (ce qui fonctionne habituellement car cela se produit lorsque l'image est totalement noire ou lors de changement de scènes) mais si MEncoder ne voit pas la piste son, il encodera toutes les trames telles quelles et elles ne correspondront pas au fichier audio final, quand, par exemple, vous multiplexerez la piste vidéo et la piste son dans un fichier Matroska.

Dans un premier temps, il faudra convertir le son du DVD en fichier WAV que le codec audio peut utiliser en entrée. Par exemple :

    mplayer fichier_source.vob \
       -ao pcm:file=fichier_destination_son.wav \
       -vc dummy -aid 1 -vo null

aura pour effet de prendre la seconde piste audio du fichier `fichier_source.vob` pour la placer dans le fichier `fichier_destination_son.wav`. Vous voudrez ensuite peut-être normaliser le son avant l'encodage, car les pistes audio des DVDs sont généralement enregistrées à un faible volume. Vous pouvez par exemple utiliser l'outil normalize qui est normalement disponible sur la plupart des distributions. Si vous utilisez Windows, un outil comme BeSweet fera le même travail. Vous le compresserez ensuite en Vorbis ou MP3. Par exemple :

    oggenc -q1 fichier_destination_son.wav

encodera `fichier_destination_son.wav` avec une qualité de 1, ce qui est équivaut à environ 80Kb/s, soit le minimum si vous voulez de la qualité. Notez que MEncoder ne sait actuellement pas multiplexer les pistes audio Vorbis dans le fichier final car il ne supporte que les conteneurs AVI ou MPEG en sortie, chacun pouvant mener à des problèmes de synchronisation A/V avec certains lecteurs quand le fichier AVI contient des flux audio VBR comme Vorbis. Ne vous inquiétez pas, ce document vous montrera comment y arriver avec un programme tiers.

### 7.1.12. Le multiplexage

Maintenant que vous avez encodé votre vidéo, vous désirez très certainement la multiplexer avec une ou plusieurs pistes audio vers un conteneur comme l'AVI, le MPEG, le Matroska ou le NUT. MEncoder ne supporte nativement que des conteneurs AVI ou MPEG. Par exemple :

    mencoder -oac copy -ovc copy -o sortie_film.avi \
      -audiofile entrée_audio.mp2 entrée_video.avi

Cela aura pour effet de fusionner le fichier vidéo `entrée_video.avi` et le fichier audio `entrée_audio.mp2` vers un seul fichier AVI `sortie_film.avi`. Cette commande marche avec le MPEG-1 layer I, II, ou III (plus connu sous le nom de MP3), WAV et aussi quelques autres formats audio.

Une des caractéristiques expérimentales de MEncoder est le support de `libavformat`, une bibliothèque issue du projet FFmpeg qui supporte le multiplexage et dé-multiplexage vers une grande variété de conteneurs. Par exemple :

    mencoder -oac copy -ovc copy  -o sortie_film.asf \
      -audiofile entrée_audio.mp2 entrée_video.avi \
      -of lavf -lavfopts format=asf

Cela fera strictement la même chose que pour l'exemple précédent, sauf que le conteneur de sortie sera l'ASF. Souvenez-vous que ce support est encore très expérimental (mais il s'améliore de jour en jour), et ne marchera que si vous compilez MPlayer avec l'option activée `libavformat` (ce qui veut dire que les packets binaires ne marcheront peut-être pas).

#### 7.1.12.1. Améliorer la fiabilité du multiplexage et de la synchronisation Audio/Video

Vous avez peut-être fait l'expérience de sérieux problèmes de synchronisation A/V en essayant de multiplexer votre video avec la bande son, où, quelque soit le décalage audio, vous n'arrivez pas à obtenir une synchronisation correcte. Ceci peut arriver quand vous utilisez des filtres video qui dupliquent ou enlèvent des images, comme le filtre téléciné inverse. Il est vivement conseillé d'utiliser le filtre vidéo `harddup` à la fin de votre chaîne de filtres pour éviter ce type de problème.

Sans l'option `harddup`, si MEncoder veut dupliquer une image, il s'en remet au multiplexeur pour mettre une marque dans le conteneur de façon à ce que la dernière image soit affichée 2 fois pour maintenir la synchronisation sans avoir à écrire une nouvelle image. Avec l'option `harddup`, MEncoder va simplement passer une deuxième fois la dernière image dans la chaîne de filtres. Ce qui veut dire que l'encodeur recevra exactement la même image 2 fois, puis les compressera. Il en résultera un fichier légèrement plus grand, mais cela ne posera plus de problèmes quand vous démultiplexerez ou remultiplexerez vers un autre conteneur.

Il se peut aussi que vous n'ayiez pas d'autres choix que d'utiliser l'option `harddup` avec certains conteneurs peu liés à MEncoder comme ceux supportés par `libavformat`, qui peuvent ne pas supporter la duplication d'image au niveau du conteneur.

#### 7.1.12.2. Limitations du conteneur AVI

Bien que ce soit le format de conteneur le plus largement supporté après le MPEG-1, l'AVI a des inconvénients majeurs. Le plus évident d'entre eux est peut-être l'entête. Pour chaque morceau (chunk) du fichier AVI, 24 octets sont gâchés en entête et index. Ce qui se traduit par environ 5Mo par heure, soit entre 1 et 2,5% du volume du fichier pour un film de 700Mo. Cela peut ne pas sembler important, mais cela peut représenter la différence entre pouvoir utiliser un débit de 700 kbits/sec au lieu de 714 kbits/sec pour une même video. Et pour la qualité, chaque bit compte.

En plus de cette grosse inefficacité, l'AVI a aussi d'autres limitations majeures :

1. Seuls les contenus à nombre d'images par seconde constant peuvent être stockés. Ceci est particulièrement limitant si vous voulez stocker des fichiers aux contenus hétérogènes (par exemple un mélange de vidéo NTSC et de films sur pellicule). En fait, il existe des astuces qui permettent de stocker des contenus à nombre d'images par seconde variable dans un AVI, mais cela multiplie par au moins 5 la taille (déjà énorme) des entêtes et ce n'est donc pas réellement applicable.

2. L'audio dans un fichier AVI doit soit avoir un débit constant (CBR), soit une taille de trame constante (i.e. toutes les trames décodent le même nombre d'échantillons). Malheureusement, le codec le plus efficace, Vorbis, ne satisfait aucun de ces critères. Donc, si vous envisagez de stocker un fichier en AVI, vous devrez utiliser un codec moins performant comme le MP3 ou l'AC-3.

Ceci dit, MEncoder ne supporte actuellement pas l'encodage à images par seconde variable ou le Vorbis; Donc vous n'allez peut-être pas considérer les 2 points précédents commes des limitations si vous n'utilisez que MEncoder pour encoder. Pourtant, il est possible d'utiliser MEncoder uniquement pour l'encodage vidéo, puis d'utiliser des outils externes pour l'encodage de l'audio et multiplexer le tout vers un conteneur différent.

#### 7.1.12.3. Le multiplexage dans le conteneur Matroska

Matroska est un conteneur libre, ouvert, qui vise à offrir de nombreuses fonctionnalités avancées que des conteneurs plus anciens comme l'AVI ne peut gérer. Par exemple, le Matroska supporte le débit vidéo variable (VBR), un framerate variable (VFR), chapitres, attachement de fichiers, code de détection d'erreur (EDC) et des codecs A/V modernes comme le "Advanced Audio Coding" (AAC), le "Vorbis" ou le "MPEG-4 AVC" (H.264), presque tous n'étant pas supportés par l'AVI.

Les outils nécessaires à la création de fichier Matroska sont appelés collectivement mkvtoolnix, et sont disponibles pour la plupart des systèmes Unix mais aussi pour Windows. Puisque Matroska est un standard ouvert, vous trouverez peut-être d'autres outils qui vous conviendront mieux, mais comme mkvtoolnix est le plus connu, et qu'il est supporté par Matroska lui même, nous allons parler de son utilisation.

La façon la plus simple de démarrer avec Matroska, c'est probablement d'utiliser MMG, l'interface graphique livrée avec mkvtoolnix, et de suivre le guide de l'interface graphique de mkvmerge (mmg).

Vous pouvez aussi multiplexer des fichiers vidéo et audio en utilisant la ligne de commande :

    mkvmerge -o sortie.mkv entree_video.avi \
      entree_audio1.mp3 entree_audio2.ac3

Ceci aura pour effet de multiplexer le fichier vidéo `entree_video.avi` avec les deux fichiers audio `entre_audio1.mp3` et `entree_audio2.ac3` dans un fichier Matroska `sortie.mkv`. Matroska, comme mentionné ci-dessus, est capable de faire bien plus que ça, comme plusieurs pistes audio (avec un réglage précis de la synchronisation audio/video), chapitres, sous titres, coupures, etc... Merci de bien vouloir vous reporter à la documentation de cette application pour plus d'informations.

## 7.2. Comment gérer le téléciné et l'entrelacement des DVDs NTSC

### 7.2.1. Introduction

Qu'est ce que le téléciné ? Si vous ne comprenez pas grand-chose à ce qui est écrit dans le document présent, je vous suggère de visiter cette page (en anglais) : http://en.wikipedia.org/wiki/Telecine Ce lien pointe vers une documentation relativement claire et compréhensible sur ce qu'est le téléciné.

Une note à propos des nombres. Beaucoup de documents, incluant l'article pointé par le lien précédent, renvoient à un nombre de trames par secondes pour la vidéo NTSC de 59.94 ce qui correspond à 29.97 images complètes par secondes (pour le télécine et l'entrelacé) et à 23.976 (pour le progressif). Pour simplifier, certains documents arrondissent même à 60, 30 et 24.

En toute rigueur, tous ces nombres sont des approximations. Les vidéos NTSC en noir et blanc avaient exactement 60 trames par secondes, mais 60000/1001 a été choisi par la suite pour s'accomoder de la couleur en conservant la compatibilité avec les téléviseurs noir et blanc de l'époque. La vidéo numérique NTSC (par exemple sur un DVD) est aussi en 60000/1001 trames par seconde. A partir de là, la vidéo entrelacée et télécinée est faite pour être en 30000/1001 images par seconde; les vidéos progressives en 24000/1001 images par secondes.

De plus anciennes versions de la documentation MEncoder et plusieurs e-mails archivés de liste de diffusion font référence à 59.94, 29.97, et 23.976. Toute la documentation de MEncoder a été mise à jour pour utiliser les valeurs fractionnaires, et vous devriez aussi les utiliser.

`-ofps 23.976` est incorrect. `-ofps 24000/1001` doit être utilisé à la place.

Comment le téléciné est-il utilisé ? Toutes les vidéos qui sont censées être affichées sur des téléviseurs NTSC doivent être en 60000/1001 trames par secondes. Les téléfilms sont souvent filmés directement en 60000/1001 trames par secondes, alors que la majorité des films pour le cinéma est en 24000/1001 images par seconde. Quand les DVD contenant des films faits pour le cinéma sont masterisés, la vidéo est alors convertie pour la télévision par un processus appelé le téléciné.

Sur un DVD, la vidéo n'est jamais vraiment stockée à 60000/1001 trames par seconde. Si la vidéo est d'origine en 60000/1001, chaque paire de trames est alors combinée pour former une image, ce qui donne 30000/1001 images par seconde. Les lecteurs de DVD de salon lisent alors les drapeaux incorporés au flux vidéo pour déterminer si la première ligne à afficher doit être paire ou impaire.

Normalement, les contenus à 24000/1001 images par seconde restent comme cela lorsqu'ils sont encodés pour un DVD, et le lecteur DVD doit alors faire la conversion du téléciné à la volée. Parfois, la vidéo est télécinée avant d'être stockée sur le DVD, même si c'était originalement du 24000/1001 images par seconde, cela devient du 60000/1001 trames par seconde. Quand elles sont stockées sur le DVD, les trames sont combinées par paires pour former 30000/1001 images par seconde.

Quand on regarde les images formées individuellement à partir de la vidéo en 60000/1001 trames par seconde, téléciné ou autre, l'entrelacement est clairement visible et ce, qu'il y ait un mouvement ou non car l'une des trames (disons les lignes impaires) représente un moment dans le temps 1/(60000/1001) seconde plus tard que les autres. Regarder une vidéo entrelacée sur un ordinateur semble laid parce que l'écran a une résolution plus élevée et parce que la vidéo est affichée image après image au lieu de trame après trame.

Notes :

- Cette section ne s'appliquent qu'aux DVDs NTSC, pas aux PAL.

- Les lignes de commande MEncoder données en exemple au long de ce document ne sont pas à utiliser tel quels. Elles représentent juste le minimum requis pour encoder la vidéo qui s'y rapportent. La meilleure méthode pour faire un bon encodage de DVD ou procéder à des réglages avancés de `libavcodec` pour atteindre une qualité optimum sont des questions en dehors des propos de cette section. Référez-vous aux autres sections contenues dans L'encodage avec MPlayer.

- Il y a quelques notes en bas de page spécifiques à ce guide, elles sont liées comme ceci : [1]

### 7.2.2. Comment savoir quel type de vidéo vous avez ?

#### 7.2.2.1. Progressive

Les vidéos progressives ont été filmées initialement à 24000/1001 images par seconde et stockées sur le DVD sans altération.

Quand vous lisez un DVD en progressif dans MPlayer, la ligne suivante sera affichée dès le début de la lecture :

     demux_mpg: 24000/1001 images par seconde progressive NTSC content detected, switching framerate.

Dorénavent, demux_mpg ne devrait jamais dire qu'il trouve "une vidéo NTSC à 30000/1001 images par secondes."

Quand vous regardez une vidéo progressive, vous ne devriez jamais voir d'entrelacement. Mais soyez attentif, il arrive parfois qu'un peu de téléciné se glisse sans prévenir. Il m'est arrivé de tomber sur des émissions de télévisions en DVD avec une seconde de téléciné à chaque changement de scène ou à d'autres emplacements au hasard. Une autre fois, la première moitié du DVD était en progressif et la seconde en téléciné. Si vous voulez en être vraiment sûr, vous pouvez scanner le film entier :

    mplayer dvd://1 -nosound -vo null -benchmark

L'utilisation de l'option `-benchmark` fait lire MPlayer aussi vite qu'il le peut - en fonction du matériel, cela peut prendre un certain temps. Chaque fois que demux_mpg signale un changement, la ligne immédiatement au dessus vous donnera le temps auquel ce changement est arrivé.

Parfois, la vidéo progressive sur les DVDs est signalée en tant que "soft-telecine" parce qu'elle est censée être télécinée par le lecteur DVD.

#### 7.2.2.2. Téléciné

Les vidéos télécinées ont été filmées en 24000/1001 et sont télécinées avant d'être gravées sur DVD.

MPlayer ne signale jamais une variation d'images par secondes quand il lit une vidéo télécinée.

Au visionnage d'une vidéo télécinée, vous verrez des artefacts d'entrelacement qui semblent "clignoter": ils apparaissent et disparaissent répététivement. Vous pouvez le voir plus précisément en suivant les indications ci-dessous :

1.     mplayer dvd://1

2. Chercher une scène avec beaucoup de mouvements.

3. Utiliser la touche . pour avancer image par image.

4. Observer le schéma de répétition des images entrelacées et progressives. Si vous obtenez PPPII, PPPII, PPPII,... alors la vidéo est télécinée. Si vous observez d'autres schémas de répétition, alors la vidéo a peut-être été télécinée avec une méthode non-standard; MEncoder ne sait pas convertir un téléciné non-standard en progressif sans dégradation. Si aucun schéma n'est visible, c'est alors sûrement une vidéo entrelacée.

Parfois, la vidéo progressive sur les DVDs est signalée en tant que "soft-telecine" parce qu'elle est censée être télécinée par le lecteur DVD. Parfois, la vidéo télécinée sur les DVDs est signalée "hard-telecine". Le hard-teleciné étant à 60000/1001 images par seconde, le lecteur DVD lit la vidéo sans manipulation.

Une autre façon de savoir si la source est télécinée ou non, est de la lire avec l'option `-vf pullup` et `-v` depuis une ligne de commande et de voir comment l'option `pullup` combine les trames. Si la source est télécinée, vous devriez voir sur la console un schéma de répétition 3:2 avec des alternances de `0+.1.+2` et `0++1`. L'avantage de cette technique est que vous n'avez pas besoin de visionner la source pour l'identifier, ce qui peut être utile pour automatiser la procédure d'encodage, ou pour effectuer cette procédure à distance à travers une connexion lente.

#### 7.2.2.3. Entrelacée

Les vidéos entrelacées ont été filmées en 60000/1001 trames par seconde, puis stockées sur le DVD en tant que 30000/1001 images par seconde. L'effet est le résultat de la combinaison de paires de trames dans une image. Chaque trame est censée être décalée de 1/(60000/1001) de seconde les unes des autres. Quand elles sont affichées simultanément, la différence devient visible.

Comme pour la vidéo télécinée, MPlayer ne signale jamais une variation d'images par secondes quand il lit une vidéo entrelacée.

Si vous regardez attentivement une vidéo entrelacée image par image avec la touche ., vous verrez l'entrelacement de chaque trame.

#### 7.2.2.4. Mélange de progressive et télécinée

Toutes les vidéos qui mélangent progressif et téléciné ont été filmées en 24000/1001 images par seconde, puis certaines parties ont été converties en téléciné.

Quand MPlayer lit ce type de fichier, il doit jongler (souvent répététivement) entre "le 30000/1001 images par seconde NTSC" et "le 24000/1001 images par secondes NTSC progressif". Regardez les messages de MPlayer pour voir ces messages.

Vous devriez aller voir la section "30000/1001 images par seconde NTSC" afin d'être sûr que c'est vraiment du téléciné, et pas seulement de l'entrelacé.

#### 7.2.2.5. Mélange de vidéo progressive et entrelacée

Dans les vidéos qui mélangent le progressif et le téléciné, les flux vidéos progressifs et entrelacés sont combinés l'un à l'autre.

Cette catégorie ressemble au "mélange de progressive et télécinée" jusqu'à ce que vous examiniez la partie en 30000/1001 images par seconde et que vous vous aperceviez qu'il n'y a pas de trace de téléciné.

### 7.2.3. Comment encoder chaque catégorie ?

Comme évoqué au départ, les exemples de lignes de commande MEncoder ne doivent pas être utilisés tels quels; ils fournissent uniquement les paramètres minimum pour encoder chaque catégorie.

#### 7.2.3.1. Progressive

La vidéo progressive ne nécessite pas de filtrage particulier pour l'encodage. Le seul paramètre qui ne doit pas être omis est : `-ofps 24000/1001`. Sinon, MEncoder essayera d'encoder en 30000/1001 images par seconde et dupliquera certaines images.

    mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001

Il n'est pas rare de se trouver avec une vidéo qui semble progressive mais qui contient en fait quelques courts passages en téléciné. A moins d'être vraiment sûr l'état de la vidéo, il est préférable de traiter la vidéo comme un mélange de progressive et télécinée. La perte en performance est faible [3].

#### 7.2.3.2. Téléciné

A partir d'une video télécinée, il est possible de retrouver le format original en 24000/1001 avec un processus appelé téléciné-inverse. Plusieurs filtres de MPlayer permettent ce processus; le meilleur d'entre eux, `pullup`, est décrit à la section Mélange de progressif et téléciné.

#### 7.2.3.3. Entrelacée

Dans la plupart des cas pratiques, il n'est pas possible de récupérer complètement une vidéo progressive depuis une entrelacée. Pour ce faire, la seule manière sans perdre la moitié de la résolution verticale est de doubler le nombre d'images par seconde et d'essayer de "deviner" ce que devraient être les lignes manquantes pour chacune des trames (ce qui a des inconvénients, voir méthode 3).

1. Encodez la vidéo sous forme entrelacée. Normalement, l'entrelacement ruine la capacité de compression de l'encodeur, mais `libavcodec` possède deux paramètres spécialement définis pour gérer le stockage de la vidéo entrelacée de manière plus satisfaisante : `ildct` et `ilme`. Aussi, l'utilisation de `mbd=2` est-elle fortement recommandée [2] car cela encodera les macroblocs non-entrelacés à des endroits où il n'y a pas de mouvements. Notez que `-ofps` n'est pas nécessaire ici.

       mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2

2. Utilisez un filtre de désentrelacement avant l'encodage. Plusieurs de ces filtres sont disponibles, chacun avec ses avantages et inconvénients. Consultez `mplayer -pphelp` et `mplayer -vf help` pour voir lesquels sont disponibles (selectionnez les lignes contenant "deint" avec grep), lisez comparaison des filtres de désentrelacement de Michael Niedermayer, et fouillez dans les listes de diffusion MPlayer, vous trouverez nombres de discussions sur les différents filtres. Encore une fois, le nombre d'images par seconde ne change pas, donc l'option `-ofps` n'est pas nécessaire. Une dernière chose : le désentrelacement doit être fait après recadrage [1] et avant redimensionnement.

       mencoder dvd://1 -oac copy -vf pp=lb -ovc lavc

3. Malheureusement, cette option est boguée dans MEncoder ; cela devrait bien marcher avec MEncoder G2, mais on n'en est pas encore là. Vous risquez de subir des plantages. Peu importe, l'option `-vf tfields` est de créer une image complète à partir de chaque trame, ce qui donne le débit de 60000/1001 images par seconde. L'avantage de cette approche est qu'aucune donnée n'est jamais perdue. Cependant, vu que chaque image vient avec seulement une trame, les lignes manquantes doivent être interpolées d'une façon ou d'une autre. Il n'y a pas de très bonne méthode générant les données manquantes, et donc le résultat sera un peu similaire à celui obtenu en utilisant des filtres de désentrelacement. Générer les lignes manquantes crée aussi d'autres problèmes, simplement parce que la quantité de données double. Ainsi, de plus haut débit (en kbit/s) d'encodage sont nécessaires pour conserver la qualité, et plus de puissance CPU est utilisée pour l'encodage et le décodage. `tfields` a plusieurs options pour gérer la création des lignes manquantes de chaque image. Si vous utilisez cette méthode, alors regardez le manuel, et prenez l'option qui semble la meilleure pour votre matériel. Notez que lors de l'utilisation de `tfields` vous devez définir les deux options `-fps` et `-ofps` à deux fois le nombre d'image par seconde de votre source originale.

       mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \
         -fps 60000/1001 -ofps 60000/1001

4. Si vous avez prévu de beaucoup réduire la taille, vous pouvez n'extraire et n'encoder qu'une des deux trames. Bien sûr, vous perdrez la moitié de la résolution verticale, mais si vous avez prévu la réduire au moins de moitié par rapport à l'original, cette perte n'aura que peu d'importance. Le résultat sera un fichier progressif à 30000/1001 images par seconde. La procédure est d'utiliser l'option `-vf field`, puis de recadrer [1] et de redimensionner de manière appropriée. Souvenez-vous que vous devrez ajuster la dimension pour compenser la réduction de moitié de la résolution verticale.

       mencoder dvd://1 -oac copy -vf field=0 -ovc lavc

#### 7.2.3.4. Mélange de progressive et télécinée

Afin de convertir une vidéo composée de passages progressifs et de télécinés en vidéo entièrement progressive, les parties en téléciné doivent être télécinées-inverse. Il y a trois moyens d'accomplir cela, comme décrit ci-dessous. Notez que vous devez toujours téléciner-inverse avant tout redimensionnement et aussi (sauf si vous savez vraiment ce que vous faites) avant tout découpage [1]. L'option `-ofps 24000/1001` est nécessaire ici parce que la sortie vidéo sera en 24000/1001 images par seconde.

- L'option `-vf pullup` est faite pour téléciner-inverse la source vidéo télécinée tandis que les données progressives sont laissées intactes. Afin de fonctionner correctement, `pullup` doit être suivi par le filtre `softskip` ou MEncoder plantera. `pullup` est, cependant, la méthode la plus propre et la plus précise disponible pour encoder le téléciné et le "Mélange de progressive et télécinée".

      mencoder dvd://1 -oac copy -vf pullup,softskip \
        -ovc lavc -ofps 24000/1001

- `-vf filmdint` est similaire à `-vf pullup` : les deux filtres tentent d'appairer deux demi-trames pour construire une trame complète. Néanmoins, `filmdint` desentrelacera les demi-trames orphelines tandis que `pullup` les éliminera. De plus, les deux filtres ont des codes de détection différents et `filmdint` peut avoir tendence à faire correspondre les demi-trames un peu moins souvent. Le contenu video à traiter et votre sensibilité personnelle fera qu'un filtre fonctionnera mieux qu'un autre. Sentez-vous libre d'ajuster les options des filtres si vous rencontrez des problèmes avec l'un d'eux (consultez le manuel pour plus de détails). Pour la plupart des supports vidéo de qualité, les deux filtres fonctionnent plutôt bien : débuter avec l'un ou l'autre ne fera pas grande différence.

      mencoder dvd://1 -oac copy -vf filmdint \
        -ovc lavc -ofps 24000/1001

- Une méthode plus ancienne consiste à, au lieu de téléciner-inverse les passages télécinés, téléciner les parties non-télécinées et ensuite téléciner-inverse la vidéo entière. Cela semble confus ? softpulldown est un filtre qui parcours une vidéo et rend téléciné le fichier entier. Si nous faisons suivre softpulldown par soit `detc` ou soit `ivtc`, le résultat final sera entièrement progressif. L'option `-ofps 24000/1001` est nécessaire.

      mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 \
        -ovc lavc -ofps 24000/1001

#### 7.2.3.5. Mélange de progressive et d'entrelacée

Il y a deux façons de gérer cette catégorie, chacune étant un compromis. Vous devez faire votre choix en vous basant sur la durée/localisation de chaque type.

- Traitez-le comme une vidéo progressive. Les parties entrelacées sembleront entrelacées, et certaines des trames entrelacées devront être jetées, ayant pour résultat un peu de sautillement irrégulier. Vous pouvez utiliser un filtre de post-traitement si vous le voulez, mais cela peut sensiblement dégrader les parties progressives.

  Cette option ne devrait surtout pas être utilisée si vous prévoyez afficher la vidéo finale sur un appareil entrelacé (avec une carte TV, par exemple). Si vous avez des images entrelacées dans une vidéo en 24000/1001 images par seconde, elles seront télécinées en même temps que les images progressives. La moitié des "images" entrelacées sera affichée pour une durée de trois trames (3/(60000/1001) secondes), ce qui a pour résultat un effet pichenette de "retour en arrière" ce qui est du plus mauvais effet. Si vous tentez quand même ceci, vous devez utiliser un filtre désentrelaçant comme `lb` ou `l5`.

  Cela peut aussi être une mauvaise idée pour l'affichage progressif. Cela laissera tomber des paires de trames entrelacées consécutives, résultant en une discontinuité qui peut être plus visible qu'avec la seconde méthode, ce qui affichera certaines images progressives en double. Une vidéo entrelacée à 30000/1001 images par seconde est déjà un peu hachée parce qu'elle devrait en réalité être projetée à 60000/1001 trames par seconde, pour que les images dupliquées ne se voient pas trop.

  De toutes façons, il vaut mieux analyser votre contenu et voir comment vous voulez l'afficher. Si votre vidéo est à 90% progressive et que vous ne pensez pas la regarder sur une TV, vous devriez favoriser une approche progressive. Si elle est seulement à moitié progressive, vous voudrez probablement l'encoder comme si elle était entièrement entrelacée.

- Traitez-le comme entrelacée. Certaines images des parties progressives auront besoin d'être dupliquées, ce qui entraînera un sautillement irrégulier. Encore une fois, les filtres désentrelaçant peuvent légèrement dégrader les parties progressives.

### 7.2.4. Notes de bas de pages

1. A propos de recadrage : Les données vidéo d'un DVD sont stockées dans un format appelé YUV 4:2:0. Dans la vidéo YUV, la luminance ("luminosité") et la chrominance ("couleur") sont stockés séparément. Parce que l'oeil humain est d'une certaine façon moins sensible à la couleur qu'à la luminosité, dans une image YUV 4:2:0 il n'y a qu'un pixel de chrominance pour 4 pixels de luminance. Dans une image progressive, chaque carré de quatre pixels de luminance (deux de chaque coté) a un pixel de chrominance commun. Vous devez recadrer le YUV 4:2:0 progressif à des résolutions paires, et utiliser un décalage pair. Par exemple, `crop=716:380:2:26` est correct mais `crop=716:380:3:26` ne l'est pas.

   Quand vous avez à faire à un YUV 4:2:0 entrelacé, la situation devient un peu plus compliquée. Au lieu d'avoir chaque série de quatre pixels de luminance se partager un pixel de chrominance dans une image, chaque série de quatre pixels de luminance dans chaque champs se partage un pixel de chrominance. Quand les trames sont entrelacées pour former une image, chaque ligne de scan fait un pixel de haut. Maintenant, au lieu d'avoir la série de quatre pixels de luminance dans un carré, il y a deux pixels côte à côte sur une ligne et les deux autres pixels de la série sont côte à côte deux lignes de scan plus bas. Les deux pixels de luminance dans la ligne de scan intermédiaire appartiennent à une autre trame, et donc partage un pixel de chrominance différent avec deux pixels de luminance deux lignes de scan plus loin. Toute cette confusion rend nécessaire d'avoir des dimensions de recadrage et de décalage verticales multiples de quatre. Dans le sens horizontal, il suffit que les dimensions restent paires.

   Pour la vidéo télécinée, il est recommandé que le recadrage se fasse après le téléciné-inverse. Une fois que la vidéo est progressive, il vous suffit de recadrer par nombres pairs. Si vous voulez accélérer légèrement la vitesse d'encodage, en jouant sur les dimensions de recadrage, vous devez recadrer verticalement par multiples de quatre ou bien le filtre de téléciné-inverse n'aura pas les données adéquates.

   Pour la vidéo entrelacée (pas télécinée), vous devez toujours recadrer verticalement par multiples de quatre à moins que vous n'utilisiez l'option `-vf field` avant.

2. A propos des paramètres d'encodage et de la qualité : Le fait que l'option `mbd=2` soit recommandée ici ne veut pas dire qu'elle ne devrait pas être utilisée autre part. Avec `trell`, `mbd=2` est l'une des deux options de `libavcodec` qui augmente le plus la qualité, et vous devriez toujours les utiliser à moins que la baisse de vitesse d'encodage ne soit prohibitive (ex : encodage en temps réel). Il y a bien d'autres options de `libavcodec` qui augmentent la qualité d'encodage (et réduisent sa rapidité) mais ceci est au delà du propos de ce document.

3. A propos de la performance de pullup : Utiliser l'option `pullup` (avec `softskip`) sur une vidéo progressive est sans danger, et c'est généralement une bonne idée à moins qu'il soit certain que la source est entièrement progressive. La perte de performance est faible dans la plupart des cas. Sur un encodage minimal, `pullup` ralentit MEncoder de 50%. L'ajout du traitement du son et d'options avancées de `lavcopts` masquent cette différence, en limitant la perte de performance due à l'utilisation de `pullup` à 2%.

## 7.3. Encodage avec la famille de codec `libavcodec`

`libavcodec` fournit un encodage simple pour plusieurs formats vidéos et audio intéressants. Vous pouvez encoder vers les codecs suivant (la liste suivante est plus ou moins à jour) :

### 7.3.1. Codecs vidéo de `libavcodec`

Nom du codec vidéo | Description
--- | ---
mjpeg | Motion JPEG
ljpeg | JPEG sans perte
jpegls | JPEG LS
targa | image Targa
gif | image GIF
bmp | image BMP
png | image PNG
h261 | H.261
h263 | H.263
h263p | H.263+
mpeg4 | ISO standard MPEG-4 (DivX, compatible Xvid)
msmpeg4 | pre-standard MPEG-4 variant par MS, v3 (AKA DivX3)
msmpeg4v2 | pre-standard MPEG-4 by MS, v2 (utilisé dans les vieux fichiers ASF)
wmv1 | Windows Media Vidéo, version 1 (AKA WMV7)
wmv2 | Windows Media Vidéo, version 2 (AKA WMV8)
rv10 | RealVidéo 1.0
rv20 | RealVidéo 2.0
mpeg1vidéo | MPEG-1 vidéo
mpeg2vidéo | MPEG-2 vidéo
huffyuv | compression sans perte
ffvhuff | FFmpeg huffyuv sans perte modifié
asv1 | ASUS Vidéo v1
asv2 | ASUS Vidéo v2
ffv1 | codec vidéo sans perte de FFmpeg
svq1 | Sorenson vidéo 1
flv | Sorenson H.263 utilisé dans Vidéo Flash
flashsv | Flash Screen Video
dvvideo | Vidéo Numérique Sony
snow | codec basé sur l'ondelette expérimentale de FFmpeg
zmbv | Zip Motion Blocks Video
dnxhd | AVID DNxHD

La première colonne contient les noms de codec qui doivent être donnés après la configuration de `vcodec`, par exemple comme ceci : `-lavcopts vcodec=msmpeg4`

Un exemple avec la compression MJPEG :

    mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy

### 7.3.2. Codecs audio de `libavcodec`

Nom de codec audio | Description
--- | ---
ac3 | AC-3, AKA Dolby Digital
adpcm_* | formats PCM adaptatif - se reporter au tableau complémentaire
flac | Free Lossless Audio Codec (FLAC)
g726 | G.726 ADPCM
libamr_nb | 3GPP Adaptive Multi-Rate (AMR) narrow-band
libamr_wb | 3GPP Adaptive Multi-Rate (AMR) wide-band
libfaac | Advanced Audio Coding (AAC) - utilisant FAAC
libgsm | ETSI GSM 06.10 full rate
libgsm_ms | Microsoft GSM
libmp3lame | MPEG-1 audio layer 3 (MP3) - utilisant LAME
mp2 | MPEG-1 audio Layer 2(MP2)
pcm_* | formats PCM - se reporter au tableau complémentaire
roq_dpcm | Id Software RoQ DPCM
sonic | codec avec perte expérimental FFmpeg
sonicls | codec sans perte expérimental FFmpeg
vorbis | Vorbis
wmav1 | Windows Media Audio v1
wmav2 | Windows Media Audio v2

La première colonne contient les noms de codec qui doivent être donnés après l'option `acodec`, par exemple comme ceci : `-lavcopts acodec=ac3`

Un exemple avec compression AC-3 :

    mencoder dvd://2 -o title2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy

Contrairement aux codecs vidéo de `libavcodec`, ses codecs audio ne font pas un usage avisé des bits qu'ils consomment car ils leur manquent certains modèles psycho-acoustiques minimaux (quand ils en ont) ce que la plupart des autres implémentations de codecs possèdent. Cependant, notez que tous ces codecs audio sont très rapides et sont disponibles à partir du moment où MEncoder a été compilé avec `libavcodec` (ce qui est le cas la plupart du temps), et ne dépend pas de bibliothèques externes.

#### 7.3.2.1. tableau complémentaire des formats PCM/ADPCM

nom du codec PCM/ADPCM | Description
--- | ---
pcm_s32le | signed 32-bit little-endian
pcm_s32be | signed 32-bit big-endian
pcm_u32le | unsigned 32-bit little-endian
pcm_u32be | unsigned 32-bit big-endian
pcm_s24le | signed 24-bit little-endian
pcm_s24be | signed 24-bit big-endian
pcm_u24le | unsigned 24-bit little-endian
pcm_u24be | unsigned 24-bit big-endian
pcm_s16le | signed 16-bit little-endian
pcm_s16be | signed 16-bit big-endian
pcm_u16le | unsigned 16-bit little-endian
pcm_u16be | unsigned 16-bit big-endian
pcm_s8 | signed 8-bit
pcm_u8 | unsigned 8-bit
pcm_alaw | G.711 A-LAW
pcm_mulaw | G.711 μ-LAW
pcm_s24daud | signed 24-bit D-Cinema Audio format
pcm_zork | Activision Zork Nemesis
adpcm_ima_qt | Apple QuickTime
adpcm_ima_wav | Microsoft/IBM WAVE
adpcm_ima_dk3 | Duck DK3
adpcm_ima_dk4 | Duck DK4
adpcm_ima_ws | Westwood Studios
adpcm_ima_smjpeg | SDL Motion JPEG
adpcm_ms | Microsoft
adpcm_4xm | 4X Technologies
adpcm_xa | Phillips Yellow Book CD-ROM eXtended Architecture
adpcm_ea | Electronic Arts
adpcm_ct | Creative 16->4-bit
adpcm_swf | Adobe Shockwave Flash
adpcm_yamaha | Yamaha
adpcm_sbpro_4 | Creative VOC SoundBlaster Pro 8->4-bit
adpcm_sbpro_3 | Creative VOC SoundBlaster Pro 8->2.6-bit
adpcm_sbpro_2 | Creative VOC SoundBlaster Pro 8->2-bit
adpcm_thp | Nintendo GameCube FMV THP
adpcm_adx | Sega/CRI ADX

### 7.3.3. Options d'encodage de libavcodec

Idéalement, vous voudriez probablement juste dire à mencoder de passer en mode "haute qualité" et passer à autre chose. Ce serait sûrement sympa, mais c'est malheureusement difficile à implémenter car les différentes options d'encodage donnent des résultats de qualité différents en fonction du matériel source. Ceci vient du fait que la compression dépend des propriétés visuelles de la vidéo en question. Par exemple, un film d'animation et un film d'action ont des propriétés très différentes et nécessitent des options différentes pour obtenir un encodage optimal. La bonne nouvelle, c'est que certaines options ne devraient jamais être omises, comme `mbd=2`, `trell`, et `v4mv`. Voir ci-dessous pour une description détaillée des options d'encodage les plus communes.

Options à régler :

- vmax_b_frames : 1 ou 2 est bon selon le film. Notez que si vous avez besoin d'avoir votre encodage décodable par DivX5, vous aurez besoin d'activer le support "closed GOP", en utilisant l'option `cgop` de `libavcodec`, mais vous aurez besoin de désactiver la détection de scène, ce qui n'est pas une bonne idée étant donné que cela affectera un peu l'efficacité d'encodage.

- vb_strategy=1 : aide pour les scènes avec beaucoup de mouvement. Sur certaines vidéos, l'option vmax_b_frames peut affecter la qualité, mais utiliser vmax_b_frames=2 avec vb_strategy=1 aide.

- dia : portée de la passe de recherche de mouvement. Plus la valeur de cette option est élevée, meilleure sera la qualité et plus l'encodage sera lent. Les valeurs négatives représentent une échelle complètement différente. De bonnes valeurs sont -1 pour un encodage rapide, ou 2-4 pour un plus lent.

- predia : portée de recherche de mouvement en pré-passe. Pas aussi important que dia. De bonnes valeurs vont de 1 (par défaut) à 4. Cela requière preme=2 pour être réellement utile.

- cmp, subcmp, precmp : Fonction de comparaison pour l'estimation de mouvement. Testez avec les valeurs 0 (défaut), 2 (hadamard), 3 (dct), et 6 (taux de distorsion). 0 est le plus rapide, et suffisant pour precmp. Pour cmp et subcmp, 2 est bon pour les animations, et 3 est bon pour les films d'action. 6 peut être (ou non) un peu meilleur, mais est lent.

- last_pred : Nombre de prédicteurs de mouvement à prendre depuis l'image précédente. 1-3 (ou dans ces eaux) améliore la qualité pratiquement sans perte en vitesse. De plus hautes valeurs ralentiront l'encodage sans réel gain.

- cbp, mv0 : Contrôle la sélection de macroblocs. Un petit coût en vitesse pour un petit gain en qualité.

- qprd : quantification adaptative basée sur la complexité des macroblocs. Peut aider ou gêner selon la vidéo et les autres options. Cela peut causer des artefacts à moins que vous ne paramétriez vqmax à des valeurs raisonnablement petites (6 c'est bien, voire peut-être 4); vqmin=1 devrait aussi aider.

- qns : très lente, spécialement quand combinée avec qprd. Avec cette option, l'encodeur minimise le bruit dû aux artefacts de compression au lieu de faire correspondre strictement la vidéo encodée à la source. Ne l'utilisez pas à moins d'avoir déjà peaufiné tout le reste et que les résultats ne soient pas encore assez bons.

- vqcomp : mise au point du contrôle de débit. La nature du film définiera quelles sont les bonnes valeurs à appliquer Vous pouvez sans problème laisser cette option de côté si vous voulez. Réduire vqcomp met plus de bits sur les scènes de basse complexité, l'augmenter les met sur les scènes de haute complexité (défaut: 0.5, portée: 0-1. recommandé: 0.5-0.7).

- vlelim, vcelim : Définit le coefficient du seuil d'élimination pour les plans de luminance et chrominance. Ils sont encodés séparément dans tous les algorithmes de style MPEG. L'idée derrière tout ceci est d'utiliser de bonnes heuristiques pour déterminer quand le changement dans un bloc est inférieur au seuil que vous avez spécifié, et dans ce cas, de simplement encoder le bloc comme étant "sans changement". Cela économise des bits et accélére peut-être l'encodage. vlelim=-4 et vcelim=9 semblent être de bonnes valeurs pour les films de "scènes réelles", mais semblent ne pas aider avec les films d'animation; quand vous voudrez encoder une animation, vous devriez probablement les laisser tel quel.

- qpel : Estimation de mouvement de quart de pixel. MPEG-4 utilise une précision d'un demi pixel pour sa recherche de mouvement par défaut, donc cette option augmente la quantité d'information qui est stockée dans le fichier encodé. Le gain ou la perte en terme de compression dépend du film, mais ce n'est habituellement pas très efficace pour les animations. qpel induit toujours un surcoût significatif en temps de décodage (+25% en pratique).

- psnr : n'affecte pas l'encodage mais écrit un fichier journal donnant le type/taille/qualité de chaque image, et imprime un résumé du PSNR (rapport signal sur bruit) à la fin.

Options qu'il n'est pas recommandé de changer :

- vme : La valeur par défaut est la meilleure.

- lumi_mask, dark_mask : Quantification adaptative pyscho-visuelle. Vous ne voulez pas jouer avec ces options si vous tenez à la qualité. Des valeurs raisonnables peuvent être efficaces dans votre cas, mais soyez prévenu, ceci reste très subjectif.

- scplx_mask : Essaie d'empêcher l'apparition d'artefacts dûs aux blocs, mais le post-traitement est plus efficace.

### 7.3.4. Exemples de paramètres d'encodage

Les paramètrages suivants sont des exemples de différentes combinaisons d'options d'encodage qui affectent le compromis vitesse / qualité pour un débit donné.

Tous les paramètrages d'encodage ont été testés sur un échantillon vidéo de résolution 720x448 à 30000/1001 images par seconde, le débit cible était de 900kbit/s, et la machine était un AMD-64 3400+ à 2400 MHz en mode 64 bits. Chaque exemple d'encodage est donné avec la vitesse d'encodage mesurée (en images par seconde) et la perte en PSNR (en dB) par rapport au réglage de "très haute qualité". Sachez que selon votre video source, votre machine et les derniers développements, vous pourrez obtenir des résultats très différents.

Description | Options d'encodage | vitesse (en images/s) | perte relative de PSNR (en dB)
--- | --- | --- | ---
Très haute qualité | `vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2` | 6im/s | 0dB
Haute qualité | `vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo` | 15im/s | -0.5dB
Rapide | `vcodec=mpeg4:mbd=2:trell:v4mv:turbo` | 42im/s | -0.74dB
Temps réel | `vcodec=mpeg4:mbd=2:turbo` | 54im/s | -1.21dB

### 7.3.5. Matrices inter/intra personnalisées

Grâce à cette fonctionnalité de `libavcodec` vous pouvez rentrer des matrices personnalisées inter (image I ou images clé) et intra (image P ou image prédite). De nombreux codecs le supportent - on rapporte que `mpeg1video` et `mpeg2video` fonctionnent avec.

Cette fonctionnalité est utilisée habituellement pour régler les matrices utilisées par les spécifications KVCD.

La Matrice de Quantification KVCD "Notch" :

Intra :

     8  9 12 22 26 27 29 34
     9 10 14 26 27 29 34 37
    12 14 18 27 29 34 37 38
    22 26 27 31 36 37 38 40
    26 27 29 36 39 38 40 48
    27 29 34 37 38 40 48 58
    29 34 37 38 40 48 58 69
    34 37 38 40 48 58 69 79

Inter :

    16 18 20 22 24 26 28 30
    18 20 22 24 26 28 30 32
    20 22 24 26 28 30 32 34
    22 24 26 30 32 32 34 36
    24 26 28 32 34 34 36 38
    26 28 30 32 34 36 38 40
    28 30 32 34 36 38 42 42
    30 32 34 36 38 40 42 44

Utilisation :

    mencoder entree.avi -o sortie.avi -oac copy -ovc lavc \
      -lavcopts inter_matrix=...:intra_matrix=...

    $ mencoder input.avi -ovc lavc -lavcopts \
    vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,\
    12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,\
    29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79\
    :inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,\
    28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,\
    36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg

### 7.3.6. Exemple

Voilà, vous venez tout juste d'acheter votre exemplaire de « Harry Potter et la Chambre des Secrets » (édition panoramique, bien sûr), et vous voulez copier ce DVD afin de pouvoir l'ajouter à votre PC Home Cinéma. C'est un DVD de région 1, donc en NTSC. L'exemple ci-dessous peut quand même être adapté au PAL, si ce n'est que vous devrez retirer l'option `-ofps 24000/1001` (parce que le le nombre d'images par seconde en sortie est le même que celui en entrée), et bien sûr les dimensions de recadrage seront différentes.

Après avoir lancé `mplayer dvd://1`, nous suivons le processus détaillé dans la section Comment gérer le téléciné et l'entrelacement dans les DVDs NTSC et découvrons que c'est une vidéo progressive à 24000/1001 images par seconde, ce qui signifie que nous n'avons pas besoin d'utiliser de filtre téléciné-inverse, comme `pullup` ou `filmdint`.

Ensuite, nous voulons déterminer le rectangle de recadrage approprié, donc nous utilisons le filtre `cropdetect` :

    mplayer dvd://1 -vf cropdetect

Assurez-vous que vous visualisez une image complètement remplie (comme une scène lumineuse), et vous verrez dans la console de sortie de MPlayer :

    crop area: X: 0..719  Y: 57..419  (-vf crop=720:362:0:58)

Revisionnons ensuite le film avec le filtre pour tester le résultat :

    mplayer dvd://1 -vf crop=720:362:0:58

Et nous nous apercevons que tout a l'air parfait. Ensuite, nous nous assurons que la hauteur et la largeur sont des multiples de 16. La largeur est bonne, cependant la hauteur ne l'est pas. Vu que nous avons quelques notions minimales de maths, nous savons que le plus proche multiple de 16 inférieur à 362 est 352.

Nous pourrions juste utiliser `crop=720:352:0:58`, mais il serait mieux d'enlever un peu du haut et un peu du bas afin de garder la partie centrale. Nous avons rétréci la hauteur de 10 pixels, mais nous ne voulons pas augmenter le décalage de 5 pixels vu que c'est un nombre impair et que cela affectera défavorablement la qualité. A la place, nous augmentons le décalage vertical de 4 pixels :

    mplayer dvd://1 -vf crop=720:352:0:62

Une autre raison pour retirer les pixels du haut et du bas est que nous nous assurons que nous avons éliminé tous les pixels à moitié noir s'ils existent. Si votre vidéo est télécinée, assurez-vous que le filtre `pullup` (ou n'importe quel autre filtre téléciné-inverse que vous avez décidé d'utiliser) apparaissent dans la chaîne de filtres avant que vous ne recadriez. Si il est entrelacé, désentrelacez-le avant le recadrage. (Si vous choisissez de préserver la vidéo entrelacée, alors assurez-vous que votre décalage vertical de recadrage est un multiple de 4.)

Si la perte de ces 10 pixels vous peine réellement, vous pouvez préférez réduire les dimensions au plus proche multiple de 16. La chaîne de filtres ressemblerait à ceci :

    -vf crop=720:362:0:58,scale=720:352

Réduire la taille de la vidéo comme cela signifie qu'une petite quantité de détails est perdu bien que cela ne soit probablement pas perceptible. Augmenter la taille entraînera une qualité inférieure (à moins que vous n'augmentiez le débit). Le recadrage enlève quand à lui complétement les pixels à l'extérieur du nouveau cadrage. C'est un compromis dont vous devrez tenir compte selon les circonstances. Par exemple, si une vidéo DVD a été faite pour la télévision, vous pourriez vouloir éviter le redimensionnement vertical, étant donné que l'échantillon de lignes correspond à la manière avec laquelle le contenu a été enregistré.

En inspectant le film, nous voyons qu'il contient une bonne quantité d'action et beaucoup de détails, donc nous choisissons un débit de 2400Kb/s.

Nous sommes maintenant prêts à faire l'encodage deux passes. Première passe :

    mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi -ovc lavc \
      -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=1 \
      -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2

La seconde passe est la même, si ce n'est que nous spécifions `vpass=2` :

    mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi -ovc lavc \
      -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=2 \
      -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2

Les options `v4mv:mbd=2:trell` augmenteront considérablement la qualité au prix d'une plus longue durée d'encodage. Il y a peu de raison de ne pas utiliser ces options quand le but premier est la qualité. Les options `cmp=3:subcmp=3` sélectionne une fonction de comparaison qui donne une meilleure qualité que celle par défaut. Vous pouvez essayer de faire varier ces paramètres (reportez-vous à la page man pour les valeurs possibles) étant donné que différentes fonctions peuvent avoir un impact important sur la qualité selon le matériel source. Par exemple, si vous trouvez que `libavcodec` produit trop d'artefacts de blocs, vous pouvez essayer de choisir la fonction de comparaison expérimentale NSSE via `*cmp=10`.

Pour ce film, le AVI résultant durera 138 minutes et pèsera à peu près 3GB. Et puisque vous disiez que la taille du fichier ne comptait pas, cette taille est parfaitement acceptable. Cependant, si vous l'aviez voulu plus petite, vous pourriez essayer un débit inférieur. L'augmentation du débit améliore la qualité, mais de moins en moins, ainsi, tandis que nous pourrions clairement voir une amélioration de 1800Kb/s à 2000Kb/s, cela peut ne pas être notable au-dessus de 2000Kb/s. Libre à vous d'expérimenter jusqu'à totale satisfaction.

Parce que nous avons passé la source vidéo au travers d'un filtre antibruit, vous pourriez vouloir en rajouter un peu pendant la lecture. Ceci, avec le filtre de post-traitement `spp`, améliore de façon radicale la perception de qualité et aide à éliminer les artefacts de bloc de la vidéo. Avec l'option `autoq` de MPlayer, vous pouvez faire varier le montant de post-traitement effectué par le filtre spp en fonction de la disponibilté de votre processeur. Aussi, arrivé à ce point, vous pourriez vouloir appliquer une correction gamma et/ou couleur pour convenir au mieux à votre écran. Par exemple :

        mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3

## 7.4. Encodage avec le codec `Xvid`

`Xvid` est une bibliothèque libre pour encoder les flux vidéo MPEG-4 ASP. Avant de commencer à encoder, vous avez besoin de paramétrer MEncoder pour qu'il la supporte..

Ce guide a pour principal objectif de fournir le même genre d'information que le guide d'encodage avec x264. Par conséquent, commencez par lire la première partie de ce guide.

### 7.4.1. Quelles options devrais-je utiliser pour avoir les meilleurs résultats ?

Commencez par passer en revue la section `Xvid` de la page man de MPlayer. Cette section est prévue pour être un supplément de la page man.

Les paramètrages par défaut de Xvid donnent déjà un bon compromis entre vitesse et qualité, vous pouvez donc sans risque vous en contenter si la section suivante vous laisse perplexe.

### 7.4.2. Options d'encodage de `Xvid`

- vhq Ce paramètre affecte l'algorithme de choix de macrobloc, plus la valeur du paramètre est élevée, meilleure sera la décision. Le paramètrage par défaut peut être utilisé de façon sûre pour tous les encodages, alors que des valeurs plus élevées améliorent toujours le PSNR mais rendent l'encodage significativement plus lent. Veuillez noter qu'un meilleur PSNR ne veut pas forcément dire que l'image sera meilleure, mais vous informe qu'elle est plus proche de l'originale. Désactiver l'option accélére de façon notable l'encodage; si la vitesse est un point critique pour vous, cela peut valoir le coup.

- bvhq Cela a le même effet que vhq, mais agit sur les images B. L'impact sur la vitesse est négligeable et la qualité est légèrement améliorée (environ +0.1dB PSNR).

- max_bframes Permettre un plus grand nombre d'images B consécutives améliore habituellement la compressibilité bien que cela puisse également entraîner plus d'artefacts de blocs. Le paramétrage par défaut est un bon compromis entre compressibilité et qualité, mais vous pouvez l'augmenter jusqu'à 3 si vous êtes obnubilé par le débit. Vous pouvez aussi le réduire à 1 ou 0 si vous aspirez à la perfection, même si dans ce cas vous deviez vous assurer que le débit cible est suffisament élevé pour que l'encodeur n'ait pas à augmenter les quantificateurs pour l'atteindre.

- bf_threshold Ceci contrôle la sensibilité de l'encodeur pour les images B, où une plus haute valeur amène à ce que plus d'images B soient utilisées (et vice versa). Ce paramètre est fait pour être utilisé avec `max_bframes`; si vous êtes obnubilé par le débit, vous devez augmenter à la fois `max_bframes` et `bf_threshold`, tandis que vous pouvez augmenter `max_bframes` et baisser `bf_threshold` de façon à ce que l'encodeur puisse utiliser plus d'images B uniquement aux endroits qui en ont vraiment besoin. Un faible nombre de `max_bframes` et une valeur élevée de `bf_threshold` n'est probablement pas un choix avisé vu qu'il obligera l'encodeur à mettre des images B en des endroits qui n'en tireront pas de bénéfice et donc réduiront la qualité visuelle. Cependant, si vous avez besoin d'être compatible avec des lecteurs qui supportent seulement de vieilles versions DivX (qui ne supportent pas plusieurs images B consécutives), ce serait votre seul possibilité pour augmenter la compressibilité en utilisant les images B.

- trellis Optimise la procédure de quantification pour obtenir un compromis optimal entre le PSNR et le débit, ce qui permet une économie significative de bits. Ces bits seront en retour utilisés autre part dans la vidéo, augmentant la qualité visuelle globale. Vous devriez toujours l'utiliser étant donné son énorme impact sur la qualité. Même si vous recherchez de la vitesse, ne le désactivez pas avant d'avoir réduit `vhq` et toutes les autres options plus gourmandes en ressource à leur minimum.

- hq_ac Active une meilleure méthode d'estimation des coefficients AC, ce qui réduit légèrement la taille de fichier d'environ 0.15 à 0.19% (ce qui correspond à moins de 0.01dB PSNR d'augmentation), tandis qu'elle a un impact négligeable sur la vitesse. Il est donc recommandé de toujours la laisser activée.

- cartoon Faite pour un meilleur encodage des dessins animés, n'a pas d'impact sur la vitesse étant donné qu'elle règle juste les heuristiques de décision pour ce type de contenu.

- me_quality Ce paramètre contrôle la précision de l'estimation de mouvement. Plus `me_quality` est élevé, plus l'estimation du mouvement d'origine est précise et donc mieux l'encodage final rendra le mouvement d'origine.

  Le paramètrage par défaut est le meilleur dans tous les cas; ainsi il est recommandé de ne pas le désactiver à moins que vous ne recherchiez vraiment la rapidité, vu que tout les bits économisés par une bonne estimation du mouvement seraient dépensés autre part, augmentant la qualité générale. Donc, n'allez pas plus bas que 5, et encore, seulement en dernier recours.

- chroma_me Améliore l'estimation de mouvement en prenant aussi en compte l'information de la chrominance (couleur), alors que `me_quality` seule utilise uniquement la luminance (niveaux de gris). Cela ralentit l'encodage de 5-10% mais améliore sensiblement la qualité visuelle en réduisant les effets de bloc et cela réduit aussi la taille des fichiers d'environ 1.3%. Si vous cherchez de la vitesse, vous devriez désactiver cette option avant de penser à la réduction de `me_quality`.

- chroma_opt A pour objectif d'améliorer la qualité de la chrominance de l'image à proximité des bords totalement blancs ou noirs, plutôt que d'améliorer la compression. Ceci peut aider à réduire l'effet "d'escalier rouge".

- lumi_mask Tente de donner moins de débit à une partie de l'image que l'oeil humain ne peut pas très bien voir, ce qui devrait permettre à l'encodeur de dépenser les bits économisés sur des parties plus importantes de l'image. La qualité de l'encodage liée à cette option dépend grandement des préférences personnelles et du type de moniteur ainsi que de son réglage (typiquement, cela ne semblera pas si bien si le réglage est lumineux ou si c'est un moniteur TFT).

- qpel Augmente le nombre de vecteurs de mouvement candidats en augmentant la précision de l'estimation de mouvement de halfpel (demi-pixel) à quarterpel (quart de pixel). L'idée est de trouver de meilleurs vecteurs de mouvement pour réduire le débit (donc augmenter la qualité à débit constant). Cependant, les vecteurs de mouvement avec une précision quarterpel requièrent quelques bits en plus à coder et les vecteurs candidats ne donnent pas toujours de résultats (vraiment) meilleurs. Assez souvent, le codec dépense des bits pour une plus grande précision, mais en retour il n'y a que peu ou pas d'amélioration de la qualité. Malheureusement, il n'y a aucun moyen de prédire les possibles avantages de `qpel`, donc en fait, vous devez l'encoder avec et sans pour en être sûr.

  `qpel` peut quasiment doubler la durée d'encodage, et nécessiter jusqu'à 25% de puissance processeur en plus pour le décodage. Il n'est pas supporté par tous les lecteurs.

- gmc Essaye d'économiser des bits sur des scènes panoramiques en employant un unique vecteur de mouvement pour l'image entière. Cela augmente presque toujours le PSNR, mais ralentit l'encodage significativement (ainsi que le décodage). Par conséquent, vous devriez seulement l'employer si vous avez réglé `vhq` au maximum. Le GMC de `Xvid` est plus sophistiqué que celui de DivX, mais il est seulement supporté par quelques lecteurs.

### 7.4.3. Profils d'encodage

Xvid supporte des profils d'encodage via l'option `profile`, ce qui est utilisé pour imposer des restrictions sur les propriétés du flux vidéo Xvid pour qu'il puisse être relu sur tout ce qui supporte le profil choisi. Les restrictions sont en rapport avec les résolutions, les débits et certaines fonctionnalités MPEG-4. La table suivante montre ce que chaque profil supporte.

| Simple | Simple avancé | DivX
Nom de profil | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | De poche | NTSC Portable | PAL Portable | NTSC Home Cinéma | PAL Home Cinéma | TV Haute Définition
Largeur [pixels] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280
Hauteur [pixels] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720
Images par seconde | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30
Débit moyen max [kbit/s] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4
Débit moyen maximal au delà de 3 secs [kbit/s] |  |  |  |  |  |  |  |  |  |  | 800 | 8000 | 8000 | 8000 | 8000 | 16000
Images B maxi | 0 | 0 | 0 | 0 |  |  |  |  |  |  | 0 | 1 | 1 | 1 | 1 | 2
Quantification MPEG |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |
Quantification adaptative |  |  |  |  | X | X | X | X | X | X | X | X | X | X | X | X
Encodage entrelacé |  |  |  |  | X | X | X | X | X | X |  |  |  | X | X | X
Quaterpixel |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |
Compensation globale du mouvement |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |

### 7.4.4. Exemples de paramètres d'encodage

Les paramètres suivant sont des exemples de différentes combinaisons d'option d'encodage qui affectent le compromis entre la vitesse et la qualité pour le même débit cible.

Tous les paramètrages d'encodage ont été testés sur un échantillon vidéo en 720x448 à 30000/1001 images par seconde, le débit cible était de 900kbit/s, et la machine était un AMD-64 3400+ à 2400 MHz en mode 64 bits. Chaque exemple d'encodage est donné avec la vitesse d'encodage mesurée (en images par seconde) et la perte en PSNR (en dB) par rapport au réglage de "très haute qualité". Sachez que selon votre video source, votre machine et les derniers développements, vous pourrez obtenir des résultats très différents.

Description | Options d'encodage | vitesse (en images par secondes) | Perte PSNR relative (en dB)
--- | --- | --- | ---
Très haute qualité | `chroma_opt:vhq=4:bvhq=1:quant_type=mpeg` | 16 | 0dB
Haute qualité | `vhq=2:bvhq=1:chroma_opt:quant_type=mpeg` | 18 | -0.1dB
Rapide | `turbo:vhq=0` | 28 | -0.69dB
Temps réel | `turbo:nochroma_me:notrellis:max_bframes=0:vhq=0` | 38 | -1.48dB

## 7.5. Encodage avec le codec `x264`

`x264` est une librairie libre pour encoder des flux vidéo H.264/AVC. Avant de commencer à encoder, vous avez besoin de paramétrer MEncoder pour qu'il le supporte.

### 7.5.1. Les options d'encodage de x264

Veuillez commencer par passer en revue la section `x264` de la page man de MPlayer. Cette section est prévue pour être un complément à la page man. Ici, vous trouverez des conseils sur les options qui sont le plus susceptible d'intéresser la plupart des gens. La page man est plus laconique mais aussi plus exhaustive et offre parfois de bien meilleurs détails techniques.

#### 7.5.1.1. Introduction

Ce guide considère deux principales catégories d'options d'encodage :

1. Les options qui traitent principalement du compromis entre la durée d'encodage et la qualité

2. Les options susceptibles de satisfaire diverses préférences personnelles et exigences spéciales

Finalement, seul vous pouvez décider quelles sont les meilleures options en fonction de vos objectifs. La décision pour la première catégorie d'options est la plus simple : vous devez seulement décider si les différences de qualité justifient les différences de vitesse. Pour la deuxième catégorie d'options, les préférences peuvent être bien plus subjectives, et plus de facteurs peuvent être impliqués. Notez que certaines des options de type "préférences personnelles et exigences spéciales" peuvent aussi avoir un impact important sur la vitesse ou la qualité, mais ce n'est pas là leur utilité première. Quelques unes des options de "préférences personnelles" peuvent même avoir des effets jugés bénéfiques par certaines personnes mais néfastes par d'autres.

Avant de continuer, il est important que vous sachiez que ce guide utilise une unique mesure de qualité : le PSNR global. Pour une brève explication du PSNR, voir l'article Wikipedia sur le PSNR. Le PSNR global est le dernier nombre PSNR donné quand vous incluez l'option `psnr` dans `x264encopts`. Pour toutes les assertions faites sur le PSNR, il sera supposé un débit constant.

Pratiquement tous les commentaires de ce guide supposent que vous effectuez un encodage en deux passes. Lors de la comparaison d'options, il y a deux raisons principales pour l'utilisation d'un encodage en deux passes. Premièrement, l'utilisation de deux passes permet souvent de gagner environ 1dB en PSNR, ce qui est une très grande différence. Deuxièmement, tester les options en faisant des comparaisons directes de qualité avec un encodage en une passe introduit est facteur d'erreur : le débit varie souvent de façon significative avec chaque encodage. Il n'est pas toujours facile de dire si les changements de qualité sont principalement dûs aux changements d'options, ou si ils reflètent essentiellement des différences aléatoires dans le débit atteint.

#### 7.5.1.2. Options qui affectent principalement la vitesse et la qualité

- subq : Des options qui vous permettent de jouer sur le compromis vitesse-qualité, `subq` et `frameref` (voir ci-dessous) sont habituellement de loin les plus importantes. Si vous êtes intéressés par le bidouillage soit de la vitesse soit de la qualité, ces options sont les premières que vous devriez prendre en considération. Sur la vitesse, les options `frameref` et `subq` interagissent entre elles assez fortement. L'expérience montre que, avec une image de référence, `subq=5` (le réglage par défaut) est environ 35% plus lent que `subq=1`. Avec 6 images de référence, la pénalité passe au dessus des 60%. L'effet de `subq` sur le PSNR semble assez constant indépendamment du nombre d'images de référence. Typiquement, `subq=5` résulte en un PSNR global supérieur de 0.2-0.5 dB par rapport à `subq=1`. C'est habituellement assez pour être visible.

  `subq=6` est le mode le plus lent et le plus élevé en qualité. Par rapport à `subq=5`, il gagne habituellement de 0.1-0.4 dB en PSNR avec des coûts en vitesse variant de 25% à 100%. A la différence des autres niveaux de `subq`, le comportement de `subq=6` ne dépend pas beaucoup de `frameref` et `me`. Au lieu de cela, l'efficacité de `subq=6` dépend principalement du nombre d'images B utilisées. Lors d'une utilisation normale, cela signifie que `subq=6` a un grand impact sur la vitesse et la qualité dans le cas de scènes d'action complexes, mais il peut ne pas avoir beaucoup d'effets sur les scènes avec peu de mouvements. Notez qu'il est recommandé de toujours régler `bframes` à des valeurs autres que zéro (voir ci-dessous).

  `subq=7` est le mode le plus lent, offrant la meilleure qualité. En comparaison de `subq=6`, il permet de gagner 0.01-0.05 dB en PSNR global avec un ralentissement de la vitesse d'encodage variant de 15 à 33%. Comme le compromis temps d'encodage/qualité est plutôt faible, il vaut mieux l'utiliser lorsque vous voulez sauver le maximum de bits et que le temps d'encodage ne vous pose pas de problème.

- frameref : `frameref` est réglé à 1 par défaut, mais il ne faut pas penser que cela implique qu'il est raisonnable de le laisser à 1. Augmenter simplement `frameref` à 2 permet un gain de PSNR d'environ 0.15dB, avec une pénalité de 5-10% sur la vitesse; cela semble être un bon compromis. `frameref=3` gagne environ 0.25dB de PSNR par rapport à `frameref=1`, ce qui devrait être une différence visible. `frameref=3` est environ 15% plus lent que `frameref=1`. Malheureusement, les gains diminuent rapidement. `frameref=6` peut entraîner un gain de seulement 0.05-0.1 dB par rapport à `frameref=3` avec une pénalité de 15% sur la vitesse. Au delà de `frameref=6`, les gains en qualité sont habituellement très faible (bien que vous deviez garder à l'esprit à travers toute cette discussion que cela peut varier fortement selon la source vidéo utilisée). Dans un cas raisonnablement typique, `frameref=12` améliorera le PSNR global d'un minuscule 0.02dB par rapport à `frameref=6`, avec un surcoût sur la vitesse de 15%-20%. Avec des valeurs aussi élevées de `frameref`, la seule vraie bonne chose qui puisse être dite est que de l'augmenter même au delà ne nuira presque certainement jamais au PSNR, mais les bénéfices sur la qualité sont à peine mesurables, et encore moins perceptibles.

  ### Note :

  Augmenter `frameref` à des valeurs inutilement élevées peut affecter et habituellement affecte l'efficacité d'encodage si vous désactivez le CABAC. Avec le CABAC activé (comportement par défaut), la possibilité de régler `frameref` "trop haut" semble trop éloignée pour s'en inquiéter, et dans le futur, il est possible que des optimisations l'élimine complètement.

  Si la vitesse vous intéresse, un compromis raisonnable est d'utiliser des valeurs de `subq` et `frameref` basses pour la première passe, et de les augmenter ensuite sur pour la seconde passe. Typiquement, cela a un effet négatif négligeable sur la qualité finale : vous perdrez probablement bien moins de 0.1dB en PSNR, ce qui devrait être une différence beaucoup trop faible pour être visible. Cependant, des valeurs différentes de `frameref` peuvent parfois affecter le choix du type de frame. Ce sont très probablement des cas périphériques rares, mais si vous voulez en être complètement certain, regardez si votre vidéo a soit des motifs plein écran, clignotants et répétitifs, soit de très grandes occlusions provisoires qui pourraient nécessiter une image I1. Ajustez le `frameref` de la première passe pour qu'il soit assez grand pour contenir la durée du cycle de clignotement (ou d'occlusion). Par exemple, si la scène fait clignoter deux images sur une durée de trois images, réglez le `frameref` de la première passe à 3 ou plus. Ce problème est probablement extrêmement rare sur des vidéos de type action, mais cela arrive quelquefois dans des captures de jeu vidéo.

- me : Cette option sert pour le choix de la méthode de recherche d'estimation de mouvement. Cette option modifie de manière directe le compromis entre qualité et vitesse. `me=dia` n'est plus rapide que de quelques pourcents par rapport à la recherche par défaut et entraîne une diminution du PSNR global inférieure à 0.1dB. Le paramètre par défaut (`me=hex`) est un compromis raisonnable entre vitesse et qualité. `me=umh` améliore de moins de 0.1dB le PSNR global avec une pénalité sur la vitesse variant en fonction de `frameref`. Pour de hautes valeurs de `frameref` (par exemple 12 ou plus), `me=umh` est environ 40% plus lent que le `me=2` par défaut. Avec `frameref=3`, la pénalité sur la vitesse chute à 25%-30%.

  `me=esa` utilise une recherche exhaustive qui est trop lente pour une utilisation pratique.

- partitions=all : Cette option autorise l'utilisation des sous-partitions 8x4, 4x8 et 4x4 (en plus de celles présentes par défaut) dans les macroblocs prédits. L'autoriser résulte en une perte de vitesse raisonnablement consistente de 10%-15%. Cette option est plutôt inutile pour les videos sources contenant uniquements de faibles mouvements, particulièrement pour les sources avec beaucoup de petits objets en mouvement. Un gain d'environ 0.1dB peut être espéré.

- bframes : Si vous avez l'habitude d'encoder avec d'autre codecs, vous avez peut-être réalisé que les images B ne sont pas toujours utiles. Avec le H.264, ceci a changé : il y a de nouvelles techniques et types de blocs qui sont possibles avec les images B. Habituellement, même un algorithme de choix d'image B naïf peut avoir un bénéfice significatif sur le PSNR. Il est intéressant de noter que l'utilisation d'images B accélère habituellement légèrement la seconde passe, et peut aussi accélérer l'encodage en une seule passe si le choix adaptatif d'image B est désactivé.

  Avec le choix adaptatif d'image B désactivé (l'option `nob_adapt` de `x264encopts`), le réglage optimal n'est habituellement pas supérieur à `bframes=1`, sinon les scènes riches en mouvement vont en souffrir. Avec le choix adaptatif d'image B activé (le comportement par défaut), cela ne pose plus de problème d'utiliser des valeurs plus élevées; l'encodeur réduira l'utilisation d'images B dans les scènes où cela endommagerait la compression. L'encodeur choisi rarement d'utiliser plus de 3 ou 4 images B; régler cette option à une valeur plus élevée aura peu d'effet.

- b_adapt : Note : activé par défaut.

  Avec cette option activée, l'encodeur utilise une procédure de décision raisonnablement rapide pour réduire le nombre d'images B utilisées dans les scènes pour lesquelles leur utilisation n'apporterait pas grand-chose. Vous pouvez utiliser `b_bias` pour affiner la tendance de l'encodeur à insérer des images B. La pénalité de vitesse du chois adaptatif d'images B est actuellement plutôt modeste, mais il en est de même pour le potentiel gain en qualité. En général, cela ne fait pas de mal. Notez que cela affecte uniquement la vitesse et le choix du type d'image lors de la première passe. Les options `b_adapt` et `b_bias` n'ont pas d'effet lors des passages suivants.

- b_pyramid : Vous pouvez aussi activer cette option si vous utilisez 2 images B ou plus; comme l'indique la page man, vous obtiendrez une faible amélioration de la qualité sans surcoût en vitesse. Notez que ces vidéos ne peuvent pas être lues avec les décodeurs basés sur libavcodec antérieurs au 5 mars 2005 (environ).

- weight_b : En théorie, il n'y a beaucoup de gain à espérer de cette option. Cependant, dans les scènes de fondu, la prédiction pondérée permet d'économiser beaucoup en débit (kbit/s). Dans le MPEG-4 ASP, un fondu-au-noir est habituellement le mieux compressé en tant qu'une coûteuse série d'images I; utiliser la prédiction pondérée pour les images B permet d'en convertir au moins une partie images B bien plus légères. Le coût en durée d'encodage est minimal, étant donné qu'aucun choix supplémentaire n'a besoin d'être fait. Aussi, contrairement à ce que les gens semblent deviner, les besoins en puissance informatique du décodeur ne sont pas beaucoup affectés par la prédiction pondérée, tout le reste étant équivalent.

  Malheureusement, l'algorithme adaptatif de choix d'images B actuel a une forte tendance à éviter les images B pendant les fondus. Jusqu'à ce que cela change, cela peut être une bonne idée d'ajouter `nob_adapt` à votre `x264encopts` si vous pensez que les fondus auront un impact important dans votre vidéo.

- threads : Cette option permet de lancer des threads autorisant ainsi l'encodage en parallèle sur plusieurs CPUs. Il est possible de choisir manuellement le nombre de threads à créer ou, mieux, d'utiliser `threads=auto` et laisser `x264` détecter le nombre de CPU disponible et choisir le nombre de threads approprié. Si vous possédez une machine multi-processeurs, vous devriez songer à utiliser cette option. Elle permet d'augmenter la vitesse d'encodage linéairement en fonction du nombre de coeur de CPU (à peu prés de 94% par coeur), tout en impliquant une réduction de qualité minime (aux environs de 0.005dB pour un processeur double-coeurs, 0.01dB pour une machine quadri-coeurs).

#### 7.5.1.3. Options relatives à diverses préférences

- Encodage en deux passes : On a suggéré ci-dessus de toujours utiliser un encodage en deux passages, mais il reste tout de même quelques raisons pour ne pas l'utiliser. Par exemple, si vous faites une capture de la télévision et l'encodez en temps réel, vous êtes obligé d'utiliser un encodage 1 passe. De plus, le 1 passe est évidemment plus rapide que le 2 passes; si vous utilisez exactement les mêmes options lors des 2 passes, l'encodage 2 passes est presque deux fois plus lent.

  Cependant, il y a de très bonnes raisons pour utiliser l'encodage 2 passes. D'une part, le contrôle de débit du mono-passe n'est pas medium et fait donc souvent des choix peu raisonnables parce qu'il n'a pas de vue d'ensemble de la vidéo. Par exemple, supposez que vous ayez une vidéo de deux minutes consistant en deux moitiés distinctes. La première moitié est une scène riche en mouvements qui dure 60 secondes qui, isolée, requière environ 2500kbit/s pour être correct. Suit immédiatement une scène de 60 secondes beaucoup moins exigeante qui peut être très bien à 300kbit/s. Supposez que vous demandiez 1400kbps en supposant que cela soit suffisant pour s'accomoder des deux scènes. Le contrôle de débit du mono-passe commettra des "fautes" dans un tel cas. Premièrement, il visera 1400kbit/s pour les deux segments. Le premier segment sera quantifié à l'excès et aura donc des artefacts de blocs de façon irrationnelle et inacceptable. Le second segment sera trop peu quantifié, il aura l'air parfait, mais le coût en débit de cette perfection sera complètement irrationnel. Ce qui est encore plus difficile à éviter est le problème de transition entre les 2 scènes. Les premières secondes de la seconde partie seront grandement surquantifiées, parce que le contrôle de débit s'attend encore aux exigences qu'il a rencontrées dans la première partie. Cette "période d'erreur" pendant laquelle les faibles mouvements sont sur-quantifiés aura l'air parkinsonien, et utilisera en réalité moins que les 300kbit/s qu'il aurait pris pour le rendre correct. Il y a des façons d'atténuer les pièges de l'encodage en simple passe, mais ils peuvent avoir tendance à augmenter les erreurs de prédiction de débit.

  Le contrôle du débit en multi-passes peut apporter d'énormes avantages par rapport au mono-passe. En utilisant les statistiques récupérées lors de la première passe d'encodage, l'encodeur peut estimer, avec une précision raisonnable, le "coût" (en bits) de l'encodage de n'importe quelle image, à n'importe quel quantificateur. Cela permet d'avoir une allocation des bits beaucoup plus rationnelle et mieux planifiée entre les scènes coûteuses (beaucoup de mouvements) et celles bon marché (peu de mouvements). Voir `qcomp` ci-dessous pour quelques suggestions sur la manière d'ajuster cette allocation à votre guise.

  De plus, l'encodage en deux passes ne prend pas nécessairement deux fois plus de temps que le simple passe. Vous pouvez jouer avec les options lors de la première passe pour avoir une vitesse plus élevée et une qualité plus faible. Si vous choisissez bien vos options, vous pouvez obtenir une première passe très rapide. La qualité résultante de la seconde passe sera légèrement plus basse parce que la prédiction de la taille sera moins précise, mais la différence de qualité sera normalement trop faible pour être visible. Essayez, par exemple, d'ajouter `subq=1:frameref=1` à la première passe `x264encopts`. Ensuite, sur la seconde passe, utilisez des options plus lentes pour avoir une meilleure qualité : `subq=6:frameref=15:partitions=all:me=umh`

- Encodage en trois passes? x264 offre la possibilité de faire un nombre arbitraire de passes consécutives. Si vous spécifiez `pass=1` lors de la première passe, puis utilisez `pass=3` pour la passe suivante, cette dernière passe lira les statistiques calculées lors du passage précédent, et écrira ses propres statistiques. Une autre passe suivante aura une très bonne base pour faire des prédictions très précises de tailles des images pour un quantificateur donné. En pratique, les gains sur la qualité d'ensemble sont généralement proches de zéro et il est très possible que la troisième passe donne un PSNR global plus faible que le précédent. Typiquement, le 3 passes aide si vous obtenez une mauvaise prédiction de débit ou un mauvais rendu lors des transitions de scènes quand vous utilisez seulement deux passes. Ceci peut se produire sur les clips extrêmement courts. Il y a aussi quelques cas spéciaux dans lesquels trois (ou plus) passes sont utiles pour les utilisateurs avancés, mais par souci de brièveté, ce guide ne traitera pas ces cas spéciaux.

- qcomp : `qcomp` gère l'allocation des bits entre les images "coûteuses" des scènes riches en mouvement et celles "bon marché" des scènes de faible mouvement. La valeur minimale, `qcomp=0` s'emplie à réaliser un vrai débit constant. Typiquement, cela rendrait des scènes riches en mouvements vraiment laides, alors que les scènes plus statiques seraient absolument parfaites, mais cela utiliserait aussi beaucoup plus de bits que nécessaire pour les rendre excellentes. La valeur maximale, `qcomp=1` rend les paramètres de quantifications (QP) presque constants. Un QP constant donne un bon rendu, mais la plupart des gens pensent qu'il est plus raisonnable d'enlever quelques bits des scènes coûteuses (où la perte de qualité n'est pas aussi visible) et de les ré-allouer aux scènes qui sont plus faciles à encoder à une excellente qualité. `qcomp` vaut 0.6 par défaut, ce qui peut être légèrement trop faible au goût de nombre de personnes (0.7-0.8 sont aussi communément utilisées).

- keyint : `keyint` permet de jouer sur le compromis entre la précision de la navigation dans les fichiers et leur efficacité de compression. Par défaut, `keyint` est égal à 250. Sur des videos à 25 images par secondes, cela garantit que la navigation peut se faire avec une précision de 10 secondes. Si vous pensez qu'il est important et utile de pouvoir faire une recherche avec une granularité de 5 secondes, règlez à `keyint=125`; cela dégradera légèrement le rapport qualité/débit. Si vous vous souciez seulement de la qualité et non de la capacité à faire une recherche, vous pouvez le mettre à des valeurs beaucoup plus élevées (bien entendu, plus vous augmenterez, moins il aura de gain visuels). Le flux vidéo aura toujours des points de recherche tant qu'il y aura des changements de de scène.

- deblock : Ce sujet risque d'être une source de controverses.

  H.264 définit une procédure simple de déblocage sur les blocs I ayant des forces et des seuils pré-réglés en fonction du QP du bloc en question. Par défaut, les blocs à QP élevés sont fortement filtrés et les blocs à faible QP ne le sont pas du tout. Les forces pré-réglées définies par les standards sont bien choisies et il y a de grandes chances pour qu'elles soient optimales du point de vue du PSNR quel que soit la vidéo que vous encodez. Les paramètres de `deblock` vous permettent de spécifier des décalages par rapport aux seuils de déblocage pré-définis.

  Beaucoup de gens semblent penser que baisser grandement la force du filtre de déblocage (par exemple -3) est une bonne idée. Ce n'est cependant presque jamais le cas et dans la plupart des cas, ceux qui le font ne comprennent pas très bien comment le déblocage fonctionne par défaut.

  La première et plus importante chose à savoir à propos du filtre de déblocage de H264 est que les seuils par défaut sont presque toujours optimaux du point de vue du PSNR. Dans les rares cas où ils ne le sont pas, le décalage idéal est de plus ou moins 1. Décaler les paramètres de déblocage d'une plus grande valeur est presqu'une garantie de dégradation du PSNR. Augmenter la force du filtre diluera les détails; la baisser augmentera l'effet de bloc.

  C'est une mauvaise idée que de baisser les seuils de déblocage si votre source est principalement de faible complexité spatiale (c-à-d avec peu de détails ou de bruit). Le filtre de H264 réussit très bien à camoufler les artefacts qui se apparaissent. De toutes façons, si la complexité spatiale de la source est élevée, les artefacts sont moins discernables parce qu'ils tendent à ressembler à du détail ou du bruit. La vision humaine remarque facilement qu'un détail a été enlevé mais ne remarque pas si facilement quand un bruit est mal représenté. Quand il s'agit de qualité subjective, le bruit et les détails sont d'une certaine façon interchangeables. En baissant la force du filtre de déblocage, vous allez très probablement augmenter les erreurs en ajoutant des artefacts mais l'oeil ne les remarquera pas parce qu'il les confondra avec des détails.

  Cependant, ceci ne justifie toujours pas une diminution de la force du filtre de déblocage. Vous pouvez généralement obtenir une meilleure qualité de bruit lors du post-traitement. Si votre encodage en H.264 est trop flou ou sale, essayez de jouer avec `-vf noise` quand vous visionner votre film encodé. `-vf noise=8a:4a` devrait camoufler la plupart des artefacts légers. Cela aura l'air certainement mieux que ce que vous obtiendriez en jouant uniquement avec le filtre de déblocage.

### 7.5.2. Exemples de paramètre d'encodage

Les paramètres ci-dessous sont des exemples de différentes combinaisons d'option de compression qui affectent le compromis entre vitesse et qualité pour un même débit cible.

Tous les paramètres d'encodage sont testés sur un échantillon vidéo à 720x448 à30000/1001 images par seconde, le débit cible est à 900kbit/s, et la machine est un AMD-64 3400+ à 2400 MHz en mode 64 bits. Chaque paramètre d'encodage exploite la vitesse de compression mesurée (en images par seconde) et la perte de PSNR (en dB) en la comparant au paramètre de "très haute qualité". Veuillez comprendre que selon votre source, le type de votre machine et les derniers développements logiciels, vous pourrez obtenir des résultats très différents.

Description | Options d'encodage | vitesse (en images/s) | Perte PSNR relative (en dB)
--- | --- | --- | ---
Très haute qualité | `subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b` | 6 | 0dB
Haute qualité | `subq=5:partitions=all:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b` | 13 | -0.89dB
Rapide | `subq=4:bframes=2:b_pyramid=normal:weight_b` | 17 | -1.48dB

## 7.6. Encoder avec la famille de codecs `Video For Windows`

Video for Windows offre la possibilité d'encoder en utiliser les codecs vidéo binaires. Il est possible d'encoder avec les codecs suivants (si vous en connaissez d'autres, dites-le nous !)

Notez que le support est très expériemental que que certains codecs peuvent ne pas fonctionner correctement. Certains codecs ne fonctionnent qu'avec certains espaces de couleur ; essayez les options `-vf format=bgr24` et `-vf format=yuy2` si un codec se plante ou donne un résulat étrange.

### 7.6.1. Les codecs Video for Windows supportés

Nom de fichier du codec Video | Description (FourCC) | md5sum | Commentaire
--- | --- | --- | ---
aslcodec_vfw.dll | Alparysoft lossless codec vfw (ASLC) | 608af234a6ea4d90cdc7246af5f3f29a |
avimszh.dll | AVImszh (MSZH) | 253118fe1eedea04a95ed6e5f4c28878 | nécessite `-vf format`
avizlib.dll | AVIzlib (ZLIB) | 2f1cc76bbcf6d77d40d0e23392fa8eda |
divx.dll | DivX4Windows-VFW | acf35b2fc004a89c829531555d73f1e6 |
huffyuv.dll | HuffYUV (lossless) (HFYU) | b74695b50230be4a6ef2c4293a58ac3b |
iccvid.dll | Cinepak Video (cvid) | cb3b7ee47ba7dbb3d23d34e274895133 |
icmw_32.dll | Motion Wavelets (MWV1) | c9618a8fc73ce219ba918e3e09e227f2 |
jp2avi.dll | ImagePower MJPEG2000 (IPJ2) | d860a11766da0d0ea064672c6833768b | `-vf flip`
m3jp2k32.dll | Morgan MJPEG2000 (MJ2C) | f3c174edcbaef7cb947d6357cdfde7ff |
m3jpeg32.dll | Morgan Motion JPEG Codec (MJPG) | 1cd13fff5960aa2aae43790242c323b1 |
mpg4c32.dll | Microsoft MPEG-4 v1/v2 | b5791ea23f33010d37ab8314681f1256 |
tsccvid.dll | TechSmith Camtasia Screen Codec (TSCC) | 8230d8560c41d444f249802a2700d1d5 | erreur shareware sous windows
vp31vfw.dll | On2 Open Source VP3 Codec (VP31) | 845f3590ea489e2e45e876ab107ee7d2 |
vp4vfw.dll | On2 VP4 Personal Codec (VP40) | fc5480a482ccc594c2898dcc4188b58f |
vp6vfw.dll | On2 VP6 Personal Codec (VP60) | 04d635a364243013898fd09484f913fb | crash sous Linux
vp7vfw.dll | On2 VP7 Personal Codec (VP70) | cb4cc3d4ea7c94a35f1d81c3d750bc8d | -ffourcc VP70
ViVD2.dll | SoftMedia ViVD V2 codec VfW (GXVE) | a7b4bf5cac630bb9262c3f80d8a773a1 |
msulvc06.DLL | MSU Lossless codec (MSUD) | 294bf9288f2f127bb86f00bfcc9ccdda | Décodable par Window Media Player, mais pas MPlayer (pour le moment).
camcodec.dll | CamStudio lossless video codec (CSCD) | 0efe97ce08bb0e40162ab15ef3b45615 | sf.net/projects/camstudio

La première colonne contient le nom du codec qui soit être donné après le paramètre `codec`, comme ceci : `-xvfwopts codec=divx.dll`. Le code FourCC utilisé par chaque codec est donné entre parenthèse.

Exemple de conversion d'une bande annonce DVD ISO en un fichier video flash VP6 en utilisant une configuration de débit compdata :

    mencoder -dvd-device zeiram.iso dvd://7 -o bande_annonce.flv \
    -ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \
    -lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \
    -of lavf

### 7.6.2. Utilisation de vfw2menc pour créer un fichier de configuration de codec.

Afin d'encoder avec les codecs Video for Windows, il vous faut paramétrer le débit ainsi que d'autres options. Ceci fonctionne sur x86 sous *NIX et Windows.

En premier lieu, vous devez compiler le programme vfw2menc. Il se trouve dans le sous-répertoire `TOOLS` de l'arborescence des sources de MPlayer. La compilation sous Linux peut se faire en utilisant Wine :

    winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32

Pour compiler sous Windows avec MinGW ou Cygwin tapez :

    gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32

Pour compiler avec MSVC vous aurez besoin de getopt. Getopt peut être obtenu dans l'archive d'origine de vfw2menc disponible ici : The MPlayer on win32 project.

Ci-dessous un exemple avec le codec VP6.

    vfw2menc -f VP62 -d vp6vfw.dll -s premierepasse.mcf

Ceci va ouvrir le fenêtre de dialolgue du codec VP6. Il faut répéter cette étape pour la seconde passe et utiliser `-s `secondepasse.mcf``.

Les utilisateurs Windows peuvent utiliser `-xvfwopts codec=vp6vfw.dll:compdata=dialog` pour faire apparaître la boîte de dialogue avant que l'encodage ne commence.

## 7.7. Utiliser MEncoder pour créer des fichiers compatibles QuickTime

### 7.7.1. Pourquoi produire des fichiers compatibles QuickTime?

Il existe plusieurs raisons pour lesquelles il est souhaitable de produire des fichiers compatibles QuickTime

- Vous souhaitez que n'importe quel utilisateur non expérimenté soit capable de regarder votre vidéo sur les plateformes majeures (Windows, Mac OS X, Unices …).

- QuickTime est capable de tirer plus amplement profit des accélérations matérielles et logicielles de Mac OS X que les lecteurs plus indépendant de la plateforme comme MPlayer ou VLC. Ainsi, vos vidéos ont plus de chance d'être jouées sans accros sur de veilles machines basées sur des processeurs G4.

- QuickTime 7 supporte la nouvelle génération de codecs : H.264, qui offre une bien meilleure qualité d'image que la génération de codecs précédente (MPEG-2, MPEG-4 …).

### 7.7.2. Limitations de QuickTime

QuickTime 7 supporte la vidéo en H.264 et l'audio en AAC, mais il ne les supporte pas multipléxés dans le format de container AVI. Cependant, vous pouvez utiliser MEncoder pour encoder la vidéo et l'audio, et ensuite utiliser un programme externe comme mp4creator (appartenant à la suite MPEG4IP) pour remultiplexer les pistes vidéos et audios dans un container MP4.

Le support QuickTime du H.264 étant limité, il vous faudra laisser tomber certaines options avancées. Si vous encodez votre vidéo en utilisant des options que QuickTime 7 ne supporte pas, les lecteurs basés sur QuickTime afficheront un joli écran blanc au lieu de la vidéo attendue.

- trames-B : QuickTime 7 supporte un maximum d'une trame-B, i.e. `-x264encopts bframes=1`. Ainsi, `b_pyramid` et `weight_b` n'auront aucun effet car ces options requierent que `bframes` soit supérieure à 1.

- Macroblocs : QuickTime 7 ne supporte pas les macroblocs de type 8x8 DCT. Cette option (`8x8dct`) est désactivée par défaut, donc soyez sûr de ne pas l'activer explicitement. Ceci signifie aussi que l'option `i8x8` n'aura aucun effet, car elle nécessite l'option `8x8dct`.

- Ratio d'aspect : QuickTime 7 ne supporte pas l'information sur le SAR (l'échantillonage de ratio d'aspect ou Sample Aspect Ratio) dans les fichiers MPEG-4; il suppose que SAR=1. Lisez la section sur le redimensionnement pour une parade à cette limitation.

### 7.7.3. Recadrage

Supposons que vous voulez encoder votre DVD "Les chroniques de Narnia". Votre DVD étant de région 1, il est en NTSC. L'exemple ci-dessous serait aussi applicable au PAL, hormis qu'il faudrait omettre l'option `-ofps 24000/1001` et utiliser des dimensions pour `crop` et `scale` sensiblement différentes.

Aprés avoir lancé `mplayer dvd://1`, vous suivez la procédure détaillée dans la section Comment gérer le téléciné et le dés-entrelacement avec les DVDs NTSC et découvrez que c'est une vidéo progréssive en 24000/1001 image par seconde. Ceci simplifie quelque peu la procédure, car nous n'avons pas besoin d'utliser un filtre téléciné inverse comme `pullup` ou un filtre de désentrelacement comme `yadif`.

Ensuite il faut rogner les bandes noires du haut et du bas de la vidéo, comme détaillé dans la section précédente.

### 7.7.4. Redimensionnement

La prochaine étape à de quoi vous briser le coeur. QuickTime 7 ne supporte pas les vidéos MPEG-4 avec échantillonage du ratio d'aspect différent de 1, de fait il vous faudra redimensionner à la hausse (ce qui gaspille beaucoup d'espace disque) ou à la baisse (ce qui diminue le niveau de détail de la source) la vidéo de façon à obtenir des pixels carrés. D'une manière ou d'une autre, cette opération est très inéficace, mais ne peut être evitée si vous souhaitez que votre vidéo soit lisible par QuickTime 7. MEncoder permet d'appliquer le redimensionnement à la hausse ou à la baisse en spécifiant respectivement `-vf scale=-10:-1` ou `-vf scale=-1:-10`. Ces options vont redimensionner la vidéo à la bonne largeur pour la hauteur rognée, arrondi au plus proche multiple de 16 pour une compression optimale. Rappelez vous que si vous rognez, vous devez d'abord rogner et ensuite redimensionner :

    -vf crop=720:352:0:62,scale=-10:-1

### 7.7.5. Synchronisation de l'audio et de la vidéo

Parce que vous allez remultiplexer dans un container différent, vous devriez toujours utiliser l'option `harddup` afin de s'assurer que les trames dupliquées soient effectivement dupliquées dans la vidéo de sortie. Sans cette option, MEncoder placera simplement un marqueur dans la flux vidéo signalant qu'une trame a été dupliquée, et délèguera au logiciel client l'initiative d'afficher la même trame deux fois. Malheureusement, cette "duplication douce" ne survivant pas au multiplexage, l'audio perdra lentement la synchronisation avec la vidéo.

La chaîne de filtre résultante a cette forme :

    -vf crop=720:352:0:62,scale=-10:-1,harddup

### 7.7.6. Débit

Comme toujours, le choix du débit est aussi bien une question de propriétés techniques de la source, comme expliqué ici, qu'une question de goût. Dans ce film, il y a pas mal d'action et beaucoup de détails, mais le H.264 apparait plus beau que le XviD ou tout autre codec MPEG-4 à des débits moindres. Après moultes expérimentations, l'auteur de ce guide a choisi d'encoder ce film à 900kbps, et pense que le résultat est joli. Vous pouvez diminuer le débit si vous souhaitez sauver de la place, ou l'augmenter si vous voulez améliorer la qualité.

### 7.7.7. Exemple d'encodage

Vous êtes maintenant prêt à encoder la vidéo. Comme vous tenez à la qualité, vous effectuerez un encodage en 2 passes, bien entendu. Pour sauver un peu de temps d'encodage, vous pouvez spécifier l'option `turbo` pour la première passe; cette option réduit `subq` et `frameref` à 1. Pour sauvegarder de l'espace disque vous pouvez utiliser l'option `ss` afin d'enlever les toutes premières secondes de la vidéo. (Je me suis aperçu que ce film a 32 secondes de générique et de logo.) `bframes` peut être 0 ou 1. Les autres options sont documentées dans Encodage avec le codec `x264` et la page de man.

    mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \
    -x264encopts pass=1:turbo:bitrate=900:bframes=1:\
    me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
    -vf crop=720:352:0:62,scale=-10:-1,harddup \
    -oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
    -ofps 24000/1001

Si vous possédez une machine multi-processeur, ne manquez pas l'opportunité d'augmenter grandement la vitesse d'encodage en activant le mode multi-thread du `x264` en ajoutant `threads=auto` à votre ligne de commande `x264encopts`.

La seconde passe est la même, excepté qu'il faut spécifier le fichier de sortie et mettre `pass=2`.

    mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \
    -x264encopts pass=2:turbo:bitrate=900:frameref=5:bframes=1:\
    me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
    -vf crop=720:352:0:62,scale=-10:-1,harddup \
    -oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
    -ofps 24000/1001

L'AVI résultant doit être parfaitement lu par MPlayer, mais bien entendu QuickTime ne peut le lire car il ne supporte pas le H.264 multiplexé dans de l'AVI. De fait, la prochaine étape est de remultiplexer la vidéo dans un container MP4.

### 7.7.8. Remultiplexage en MP4

Il existe différentes manières de remultiplexer des fichiers AVI en MP4. Vous pouvez utiliser mp4creator, qui fait parti de la suite MPEG4IP.

Premièrement, demultiplexez l'AVI en un flux audio et un flux vidéo séparés en utilisant MPlayer.

    mplayer narnia.avi -dumpaudio -dumpfile narnia.aac
      mplayer narnia.avi -dumpvideo -dumpfile narnia.h264

Les noms de fichier sont important; mp4creator nécessite que les flux audios AAC soient nommés `.aac` et les flux vidéos H.264 soient nommés `.h264`.

Maintenant utilisez mp4creator pour créer un nouveau fichier MP4 depuis les flux audio et vidéo.

    mp4creator -create=narnia.aac narnia.mp4
      mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4

Contrairement à l'étape d'encodage, vous devez spécifier le nombre d'image par seconde comme une valeur décimale (par exemple 23.976), et non comme une valeur fractionnaire (par exemple 24000/1001).

Le fichier `narnia.mp4` devrait être lisible par n'importe quelle application QuickTime 7, comme le lecteur QuickTime ou comme iTunes. Si vous planifiez de voir la vidéo dans un navigateur Internet avec le plugin QuickTime, vous devriez aussi renseigner le film de sorte que le plugin QuickTime puisse commencer à le lire pendant qu'il se télécharge. mp4creator peut créer ces pistes de renseignement :

    mp4creator -hint=1 narnia.mp4
      mp4creator -hint=2 narnia.mp4
      mp4creator -optimize narnia.mp4

Vous pouvez vérifier le résultat final pour vous assurer que les pistes de renseignement ont été créées avec succès :

    mp4creator -list narnia.mp4

Vous devriez voir une liste de pistes : 1 audio, 1 vidéo, et 2 pistes de renseignement

    Track   Type    Info
      1       audio   MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz
      2       video   H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
      3       hint    Payload mpeg4-generic for track 1
      4       hint    Payload H264 for track 2

### 7.7.9. Ajouter des tags de méta-données

Si vous voulez ajouter des tags dans votre vidéo qui soient visible dans iTunes, vous pouvez utiliser AtomicParsley.

    AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite

L'option `--metaEnema` efface toutes meta-données existantes. (mp4creator insère son nom dans le tag "encoding tool"), et `--freefree` récupère l'espace libéré par les méta-données effacées. L'option `--stik` paramétre le type de vidéo (tel que Film ou Show TV), qu'iTunes utilise pour grouper des fichiers vidéos similaires. L'option `--overWrite` écrase le fichier d'origine; sans cette option, AtomicParsley créé un fichier automatiquement nommé dans le même répertoire et laisse le fichier d'origine tel quel.

## 7.8. Utiliser MEncoder pour créer des fichiers compatibles VCD/SVCD/DVD.

### 7.8.1. Contraintes de Format

MEncoder est capable de créer des fichiers MPEG aux formats VCD, SCVD et DVD en utilisant la bibliothèque `libavcodec`. Ces fichiers peuvent ensuite être utilisés avec vcdimager ou dvdauthor pour créer des disques lisibles par une platine de salon standard.

Les formats DVD, SVCD, et VCD sont très contraignants. Seule un faible nombre de résolutions et de formats d'image sont acceptés. Si votre film ne respecte pas ces conditions, vous devrez redimensionner, recadrer ou ajouter des bords noirs à l'image pour le rendre compatible.

#### 7.8.1.1. Contraintes de format

Format | Résolution | Codec vidéo | débit vidéo en kbit/s | Taux d'échantillonnage | Codec audio | débit audio en kbit/s | images par seconde | format d'image
--- | --- | --- | --- | --- | --- | --- | --- | ---
NTSC DVD | 720x480, 704x480, 352x480, 352x240 | MPEG-2 | 9800 | 48000 Hz | AC-3,PCM | 1536 (max) | 30000/1001, 24000/1001 | 4:3, 16:9 (seulement pour 720x480)
NTSC DVD | 352x240[a] | MPEG-1 | 1856 | 48000 Hz | AC-3,PCM | 1536 (max) | 30000/1001, 24000/1001 | 4:3, 16:9
NTSC SVCD | 480x480 | MPEG-2 | 2600 | 44100 Hz | MP2 | 384 (max) | 30000/1001 | 4:3
NTSC VCD | 352x240 | MPEG-1 | 1150 | 44100 Hz | MP2 | 224 | 24000/1001, 30000/1001 | 4:3
PAL DVD | 720x576, 704x576, 352x576, 352x288 | MPEG-2 | 9800 | 48000 Hz | MP2,AC-3,PCM | 1536 (max) | 25 | 4:3, 16:9 (seulement pour 720x576)
PAL DVD | 352x288[a] | MPEG-1 | 1856 | 48000 Hz | MP2,AC-3,PCM | 1536 (max) | 25 | 4:3, 16:9
PAL SVCD | 480x576 | MPEG-2 | 2600 | 44100 Hz | MP2 | 384 (max) | 25 | 4:3
PAL VCD | 352x288 | MPEG-1 | 1152 | 44100 Hz | MP2 | 224 | 25 | 4:3
[a] Ces résolutions sont rarement utilisées pour les DVDs parce qu'elles sont d'assez basse qualité.

Si votre film est au format 2,35:1 (la plupart des films d'action récents), vous devrez ajouter des bords noirs ou recadrer le film en 16:9 pour faire un DVD ou un VCD. Si vous ajoutez des bords noirs, essayez qu'ils soient d'une épaisseur multiple de 16 de façon à minimiser l'impact sur la performance d'encodage. Le DVD a heureusement un débit suffisamment élevé pour que vous n'ayez pas trop à vous inquiéter pour l'efficacité de l'encodage, par contre, le SVCD et le VCD sont très limités en débit et demandent des efforts pour obtenir une qualité acceptable.

#### 7.8.1.2. Contraintes de Taille GOP

Les DVD, VCD, et SVCD vous contraignent aussi à des tailles relativement basses de GOP (Group of Pictures ou "Groupe d'Images"). Pour des vidéo à 30 images par secondes, la plus large taille de GOP permise est 18. Pour 25 ou 24 images par secondes, le maximum est 15. La taille du GOP est réglée en utilisant l'option `keyint`.

#### 7.8.1.3. Contraintes de débit

Le format VCD requière que le débit de votre vidéo soit constant (CBR) à 1152 kbit/s. A cette forte contrainte, il faut ajouter la très petite taille de la mémoire tampon VBV : 327 kbits. Le SVCD autorise des débits vidéo variables jusqu'à 2500 kbit/s et une taille de mémoire tampon VBV légèrement moins restrictive de 917 kbits. Les débits vidéo DVD peuvent aller jusqu'à 9800 kbit/s (bien que les débits typiques soient d'à peu près la moitié) et la taille de la mémoire tampon VBV est de 1835 kbits.

### 7.8.2. Options de sortie

MEncoder a des options de contrôle du format de sortie. En utilisant ces options nous pouvons lui dire de créer le type de fichier correct.

Les options pour le VCD et le SVCD sont appelées xvcd et xsvcd, parce que ce sont des formats étendus. Elles ne sont pas strictement conformes, principalement parce que la sortie ne contient pas de décalages de scan. Si vous avez besoin de générer une image SVCD, vous devriez passer le fichier de sortie à vcdimager.

VCD :

      -of mpeg -mpegopts format=xvcd

SVCD :

      -of mpeg -mpegopts format=xsvcd

DVD(avec estampille temporelle sur chaque image si possible) :

      -of mpeg -mpegopts format=dvd:tsaf

DVD avec pullup NTSC :

      -of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001

Ceci permet au contenu progressif à 24000/1001 images par secondes d'être encodé à 30000/1001 images par secondes tout en restant avec le format DVD.

#### 7.8.2.1. Format d'image

L'argument `aspect` de `-lavcopts` est utilisé pour encoder le format d'image du fichier. Durant la lecture le format d'image est utilisé pour redonner à la vidéo la taille correcte.

16:9 ou "Écran Large"

      -lavcopts aspect=16/9

4:3 ou "Plein Écran"

      -lavcopts aspect=4/3

2,35:1 ou NTSC "Cinémascope"

      -vf scale=720:368,expand=720:480 -lavcopts aspect=16/9

Pour calculer la taille de dimensionnement correcte, utilisez la largeur étendue NTSC de 854/2,35 = 368

2,35:1 ou PAL "Cinémascope"

      -vf scale="720:432,expand=720:576 -lavcopts aspect=16/9

Pour calculer la taille de dimensionnement correcte, utilisez la largeur étendue PAL de 1024/2,35 = 432

#### 7.8.2.2. Maintient de la synchronisation A/V

Afin de maintenir la synchronisation audio/video lors de l'encodage, MEncoder doit dupliquer ou effacer des images. Cela marche plutôt bien lor du multiplexage dans un fichier AVI mais il est pratiquement garanti d'échouer à maintenir la synchronisation A/V avec d'autres conteneurs tel que le MPEG. C'est pourquoi il est nécessaire d'ajouter le filtre vidéo `harddup` à la fin de la chaîne de filtre pour éviter ce type de problème. Vous pouvez trouver plus de détails techniques sur `harddup` dans la section Améliorer la fiabilité du multiplexage et de la synchronisation Audio/Video ou dans le manuel.

#### 7.8.2.3. Conversion du Taux d'échantillonnage

Si le taux d'échantillonnage de l'audio du fichier original n'est pas le même que celui demandé par le format cible, la conversion du taux d'échantillonnage est nécessaire. Ceci est réalisé en utilisant ensemble l'option `-srate` et le filtre audio `-af lavcresample`.

DVD :

      -srate 48000 -af lavcresample=48000

VCD et SVCD :

      -srate 44100 -af lavcresample=44100

### 7.8.3. Utiliser libavcodec pour l'encodage VCD/SVCD/DVD

#### 7.8.3.1. Introduction

`libavcodec` peut être utilisé pour créer des vidéos compatibles avec les standards VCD/SVCD/DVD en utilisant les options appropriées.

#### 7.8.3.2. lavcopts

Ceci est une liste de champs de `-lavcopts` que vous pourriez avoir besoin de changer si vous voulez faire un film compatible VCD, SVCD, ou DVD :

- acodec : `mp2` pour le VCD, le SVCD, ou le DVD PAL; `ac3` est plus communément utilisé pour le DVD. L'audio PCM peut aussi être utilisé pour le DVD, mais c'est principalement une grande perte d'espace. Notez que l'audio MP3 n'est compatible avec aucun de ces formats, cependant les lecteurs n'ont souvent aucun problème pour les jouer.

- abitrate : (débit audio) 224 pour le VCD; jusqu'à 384 pour le SVCD; jusqu'à 1536 pour le DVD, mais utilise communément une gamme de valeurs de 192 kbit/s pour le stéréo à 384 kbit/s pour le son canaux 5.1.

- vcodec : `mpeg1video` pour le VCD; `mpeg2video` pour le SVCD; `mpeg2video` est habituellement utilisé pour le DVD mais on peut aussi utiliser `mpeg1video` pour des résolutions CIF.

- keyint : Utilisé pour régler la taille du GOP. 18 pour les vidéo à 30 images par secondes, ou 15 pour les vidéos à 25/24 images par secondes. Les producteurs commerciaux semblent préférer des intervalles entre images clés de 12. Il est possible d'augmenter cette valeur et de rester compatible avec la plupart des lecteurs. Un `keyint` de 25 ne devrait jamais causer de problèmes.

- vrc_buf_size : 327 pour le VCD, 917 pour le SVCD, et 1835 pour le DVD.

- vrc_minrate : 1152, pour le VCD. Peut être laissé de côté pour le SVCD et le DVD.

- vrc_maxrate : 1152 pour le VCD; 2500 pour le SVCD; 9800 pour le DVD. Pour le SVCD et le DVD, vous pourriez vouloir utiliser des valeurs plus basses selon vos préférences et contraintes personnelles.

- vbitrate : (débit vidéo) 1152 pour le VCD; jusqu'à 2500 pour le SVCD; jusqu'à 9800 pour le DVD. Pour les deux derniers formats, les valeurs de vbitrate devrait être réglées selon vos goûts. Par exemple, si vous voulez vraiment faire tenir 20 heures ou plus sur un DVD, vous pouvez utiliser vbitrate=400. La qualité de la vidéo résultante sera probablement assez mauvaise. Si vous essayez d'avoir la qualité maximum possible sur un DVD, utilisez vbitrate=9800, mais sachez que cela pourrait vous forcer à ne stocker que moins d'une heure de vidéo sur un DVD simple couche.

#### 7.8.3.3. Exemples

Ceci est un paramétrage typique minimal de `-lavcopts` pour encoder une vidéo :

VCD :

      -lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
      vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2

SVCD :

      -lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
      keyint=15:acodec=mp2

DVD :

      -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
      keyint=15:acodec=ac3

#### 7.8.3.4. Options Avancées

Pour une qualité d'encodage plus élevée, vous pouvez aussi souhaiter ajouter des options d'amélioration de qualité à lavcopts, comme `trell`, `mbd=2` et autres. Notez que, bien que `qpel` et `v4mv` soient souvent utile avec le MPEG-4, elles ne sont pas utilisables avec MPEG-1 ou MPEG-2. Aussi, si vous essayez de créer un encodage DVD de très haute qualité, il peut être utile d'ajouter `dc=10` à lavcopts. Le faire peut aider à réduire l'apparition de blocs dans les zones de faible variations de couleurs. Pour résumer, la ligne suivante est un exemple de paramétrage de lavcopts pour un DVD de haute qualité :

      -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
      keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
      vqmin=1:lmin=1:dc=10

### 7.8.4. Encodage Audio

Le VCD et SVCD supportent l'audio MPEG-1 layer II, en utilisant un des encodeurs MP2 `toolame`, `twolame`, ou `libavcodec`. Le MP2 libavcodec est loin d'être aussi bon que les deux autres bibliothèques, cependant il devrait toujours être disponible en utilisation. Le VCD ne supporte que l'audio avec un débit constant (CBR) alors que le SVCD supporte aussi le débit variable (VBR). Soyez prudents lors de l'utilisation du VBR car certains mauvais lecteurs pourraient ne pas trop bien le supporter.

Pour l'audio DVD, le codec AC-3 de `libavcodec` est utilisé.

#### 7.8.4.1. toolame

Pour un VCD et un SVCD :

      -oac toolame -toolameopts br=224

#### 7.8.4.2. twolame

Pour un VCD et un SVCD :

      -oac twolame -twolameopts br=224

#### 7.8.4.3. libavcodec

Pour un DVD avec un son 2 canaux :

      -oac lavc -lavcopts acodec=ac3:abitrate=192

Pour un DVD avec un son 5,1 canaux:

      -channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384

Pour un VCD et un SVCD:

      -oac lavc -lavcopts acodec=mp2:abitrate=224

### 7.8.5. Combiner le tout

Cette section présente certaines commandes complètes pour créer des vidéos compatibles VCD/SVCD/DVD.

#### 7.8.5.1. DVD PAL

      mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,\
      harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
      vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:\
      abitrate=192:aspect=16/9 -ofps 25 \
      -o film.mpg film.avi

#### 7.8.5.2. DVD NTSC

      mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:480,\
      harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
      vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:acodec=ac3:\
      abitrate=192:aspect=16/9 -ofps 30000/1001 \
      -o film.mpg film.avi

#### 7.8.5.3. AVI PAL Contenant Audio AC-3 vers DVD

Si la source a déjà l'audio en AC-3, utilisez `-oac copy` au lieu de la réencoder.

      mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\
      harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
      vbitrate=5000:keyint=15:aspect=16/9 -ofps 25 \
      -o film.mpg film.avi

#### 7.8.5.4. AVI NTSC Contenant Audio AC-3 vers DVD

Si la source a déjà l'audio en AC-3, et est en NTSC @ 24000/1001 fps :

      mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \
      -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
      vrc_maxrate=9800:vbitrate=5000:keyint=15:aspect=16/9 -ofps 24000/1001 \
      -o film.mpg film.avi

#### 7.8.5.5. SVCD PAL

      mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
      scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
      vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
      vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224:aspect=16/9 -ofps 25 \
      -o film.mpg film.avi

#### 7.8.5.6. SVCD NTSC

      mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd  -vf \
      scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
      vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
      vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224:aspect=16/9 -ofps 30000/1001 \
      -o film.mpg film.avi

#### 7.8.5.7. VCD PAL

      mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
      scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
      vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
      vrc_maxrate=1152:acodec=mp2:abitrate=224:aspect=16/9 -ofps 25 \
      -o film.mpg film.avi

#### 7.8.5.8. VCD NTSC

      mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
      scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
      vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
      vrc_maxrate=1152:acodec=mp2:abitrate=224:aspect=16/9 -ofps 30000/1001 \
      -o film.mpg film.avi

[1] Attention tout de même : décoder une video MPEG-4 AVC de la resolution d'un DVD nécessite une machine puissante (i.e. un Pentium 4 à plus de 1.5GHz ou un Pentium M à plus de 1GHz).

[2] Le même encodage peut apparaître différement sur le moniteur de quelqu'un d'autre ou lorsqu'il est lu par un autre décodeur, donc armez vos encodages pour le futur en les lisant sur différentes machines.

# Chapitre 8. Foire Aux Questions

8.1. Développement
  Q : Comment puis-je créer un patch adapté pour MPlayer?
  Q : Comment puis-je traduire MPlayer dans une nouvelle langue?
  Q : Comment puis-je supporter le développement de MPlayer?
  Q : Comment puis-je devenir un développeur MPlayer?
  Q : Pourquoi n'utilisez-vous pas autoconf/automake?
8.2. Compilation et installation
  Q : La compilation échoue avec une erreur et gcc parachute des messages cryptés contenant la phrase internal compiler error ou unable to find a register to spill ou can't find a register in class `GENERAL_REGS' while reloading `asm'..
  Q : Y'a-t-il des paquets binaires (RPM/Debian) de MPlayer?
  Q : Comment puis-je compiler un MPlayer 32 bit sur un Athlon 64 bit?
  Q : Configure se termine par ce texte, et MPlayer ne compile pas ! Your gcc does not support even i386 for '-march' and '-mcpu'
  Q : J'ai une Matrox G200/G400/G450/G550, comment puis-je compiler/utiliser le pilote mga_vid?
  Q : Pendant 'make', MPlayer se plaint à propos de librairies X11. Je ne comprends pas, J'ai VRAIMENT installé X11 !?
  Q : Compiler sous Mac OS 10.3 donne plusieurs erreurs de lien
8.3. Questions générales
  Q : Y-a-t'il des listes de diffusion pour MPlayer ?
  Q : J'ai trouvé un sale bogue quand j'essaie de lire ma vidéo préférée ! Qui dois-je informer ?
  Q : J'ai des problèmes pour lire les fichiers avec le codec ... . Puis-je l'utiliser ?
  Q : Quand je démarre la lecture, j'obtiens ce message mais tout semble se dérouler normalement: Linux RTC init: ioctl (rtc_pie_on): Permission denied
  Q : Comment puis-je faire une copie d'écran ?
  Q : Quelle est la signification des nombres sur la ligne de commande ?
  Q : Il y a des messages d'erreur à propos d'un fichier non-trouvé /usr/local/lib/codecs/ ...
  Q : Comment puis-je faire en sorte que MPlayer se souvienne des options que j'ai utilisé pour un fichier en particulier, movie.avi par exemple?
  Q : Les sous-titres sont très jolis, les plus beaux que j'ai jamais vu, mais ils ralentissent la lecture! Je sais que ce n'est pas courant ...
  Q : Comment puis-je lancer MPlayer en tâche de fond ?
8.4. Problèmes de lecture
  Q : Je n'arrive pas à trouver la cause de certains problèmes étranges de lecture.
  Q : Comment puis-je faire apparaitre les sous-titres sur les bandes noires autour d'un film?
  Q : Comment sélectionner les pistes audio ou les sous-titres d'un DVD ou de fichiers OGM, Matroska ou NUT ?
  Q : J'essaie de lire un flux aléatoire depuis l'internet mais cela échoue.
  Q : J'ai téléchargé un film sur un réseau P2P mais il ne fonctionne pas !
  Q : J'ai des problèmes pour afficher mes sous-titres, à l'aide!!
  Q : Pourquoi MPlayer ne fonctionne-t-il pas sur Fedora Core?
  Q : MPlayer plante avec MPlayer interrupted by signal 4 in module: decode_video
  Q : Quand j'essaye de faire une capture depuis mon tuner, cela fonctionne, mais les couleurs sont étranges. C'est BON avec d'autres applications.
  Q : J'ai des valeurs en pourcentage très étrange (vraiment trop grandes) lors de la lecture de fichiers sur mon portable.
  Q : L'audio/vidéo devient totalement désynchronisé quand je lance MPlayer en tant que root sur mon portable. Cela fonctionne normalement quand je le lance en tant que simple utilisateur.
  Q : Pendant qu'un film joue tout devient soudainement saccadé et j'obtiens le message suivant: Badly interleaved AVI file detected - switching to -ni mode...
8.5. Problèmes de pilote vidéo/audio (vo/ao)
  Q : Quand je passe en mode plein écran j'obtiens juste des bandes noires autour de l'image et pas de réel agrandissement en mode plein écran.
  Q : Je viens juste d'installer MPlayer. Quand je veux ouvrir un fichier vidéo cela provoque une erreur fatale: Error opening/initializing the selected video_out (-vo) device. Comment puis-je résoudre mon problème?
  Q : J'ai des problèmes avec [votre gestionnaire de fenêtre] et les modes plein écran xv/xmga/sdl/x11 ...
  Q : L'audio se désynchronise lors de la lecture d'un fichier AVI.
  Q : Comment puis-je utiliser dmix avec MPlayer?
  Q : Je n'ai pas de son en jouant une vidéo et j'obtiens des messages d'erreur similaires à celui-ci: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) [AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy Could not open/initialize audio device -> no sound. Audio: no sound Starting playback...
  Q : Quand je lance MPlayer sous KDE je n'obtiens qu'un écran noir et rien ne se passe. Après environ une minute la vidéo commence à défiler.
  Q : J'ai des problèmes de synchro A/V. Certains de mes AVIs sont lus correctement, mais d'autres sont lus à double vitesse !
  Q : Quand je lis ce film j'obtiens des désynchro vidéo-audio et/ou MPlayer plante avec le message suivant: Too many (945 in 8390980 bytes) video packets in the buffer!
  Q : Comment puis-je me débarasser de la désynchronisation A/V lors d'une recherche sur des flux de type RealMedia?
8.6. Lecture DVD
  Q : Et a propos de la navigation et des menus DVD ?
  Q : Et à propos des sous-titres? Est-ce que MPlayer peut les afficher ?
  Q : Comment puis-je changer le code de zone de mon lecteur DVD ? Je n'ai pas Windows !
  Q : Je ne peux pas jouer un DVD, MPlayer décroche ou affiche des erreurs "Encrypted VOB file!".
  Q : Dois-je être en (setuid) root pour pouvoir lire un DVD ?
  Q : Est-il possible de lire/encoder uniquement certains chapitres ?
  Q : La lecture de DVD est très lente !
  Q : J'ai copié un DVD en utilisant vobcopy. Comment puis-je le lire/l'encoder depuis mon disque dur ?
8.7. Demandes de fonctionnalités
  Q : Si est MPlayer est en pause et que j'essaie de me déplacer ou de presser n'importe quelle touche, MPlayer sort de pause. Je voudrais être capable de me déplacer dans la vidéo en pause.
  Q : J'aimerais me déplacer de +/- 1 trame au lieu de 10 secondes.
8.8. Encodage
  Q : Comment puis-je encoder ?
  Q : Cooment puis-je décharger un titre entier de DVD dans un fichier?
  Q : Comment puis-je créer des (S)VCDs automatiquement?
  Q : Comment puis-je créer des (S)VCDs?
  Q : Comment puis-je joindre deux fichiers vidéos ?
  Q : Comment puis-je réparer des fichiers AVI avec un index cassé ou un mauvais entrelacement?
  Q : Comment puis-je réparer le format de l'image d'un fichier AVI?
  Q : Comment puis-je sauvegarder et encoder un fichier VOB avec un début défectueux?
  Q : Je ne peux pas encoder les sous-titres en AVI!
  Q : Comment puis-je encoder seulement certains chapitres d'un DVD?
  Q : J'essaie de travailler avec des fichiers de plus de 2Go sur un système de fichier VFAT. Ça marche?
  Q : Quel est le sens des nombres sur la ligne de status pendant l'encodage?
  Q : Pourquoi le débit recommendé par MEncoder est négatif?
  Q : Je ne peux pas convertir un fichier ASF en AVI/MPEG-4 (DivX) car il utilise 1000 images par secondes?
  Q : Comment puis-je insérer des sous-titres dans le fichier de sortie ?
  Q : Comment puis-je encoder uniquement le son d'une vidéo musicale ?
  Q : Pourquoi est-ce que les lecteurs de tiers partie n'arrivent pas à jouer des films MPEG-4 encodé par des versions plus tardives que 1.0pre7 de MEncoder?
  Q : Comment puis-je encoder un fichier seulement audio?
  Q : Comment puis-je jouer les sous-titres inclus dans AVI?
  Q : MPlayer n'ira pas...

### 8.1. Développement
Q : Comment puis-je créer un patch adapté pour MPlayer? Q : Comment puis-je traduire MPlayer dans une nouvelle langue? Q : Comment puis-je supporter le développement de MPlayer? Q : Comment puis-je devenir un développeur MPlayer? Q : Pourquoi n'utilisez-vous pas autoconf/automake?
Q : | Comment puis-je créer un patch adapté pour MPlayer?
R : | Nous avons fait un court document décrivant tous les détails nécessaires. Merci de suivre les instructions.
Q : | Comment puis-je traduire MPlayer dans une nouvelle langue?
R : | Lisez le translation HOWTO, il devrait tout expliquer. Vous pouvez obtenir de l'aide supplémentaire sur la liste de diffusion MPlayer-translations.
Q : | Comment puis-je supporter le développement de MPlayer?
R : | Nous sommes plus que contents d'accepter vos dons matériels et logiciels. Ils nous aident à améliorer continuellement MPlayer.
Q : | Comment puis-je devenir un développeur MPlayer?
R : | Les codeurs et les "documenteurs" sont toujours les bienvenus. Lisez la documentation technique pour avoir un premier aperçu. Ensuite vous devriez vous inscrire à la liste de diffusion MPlayer-dev-eng et commencer à coder. Si vous souhaitez apporter votre aide à la documentation, joignez la liste de diffusion MPlayer-docs.
Q : | Pourquoi n'utilisez-vous pas autoconf/automake?
R : | Nous avons un système modulaire écrit à la main. Il fait un travail relativement bon, donc pourquoi changer ? Nous n'aimons pas les outils auto*, comme d' autres personnes.
### 8.2. Compilation et installation
Q : La compilation échoue avec une erreur et gcc parachute des messages cryptés contenant la phrase internal compiler error ou unable to find a register to spill ou can't find a register in class `GENERAL_REGS' while reloading `asm'.. Q : Y'a-t-il des paquets binaires (RPM/Debian) de MPlayer? Q : Comment puis-je compiler un MPlayer 32 bit sur un Athlon 64 bit? Q : Configure se termine par ce texte, et MPlayer ne compile pas ! Your gcc does not support even i386 for '-march' and '-mcpu' Q : J'ai une Matrox G200/G400/G450/G550, comment puis-je compiler/utiliser le pilote mga_vid? Q : Pendant 'make', MPlayer se plaint à propos de librairies X11. Je ne comprends pas, J'ai VRAIMENT installé X11 !? Q : Compiler sous Mac OS 10.3 donne plusieurs erreurs de lien
Q : | La compilation échoue avec une erreur et gcc parachute des messages cryptés contenant la phrase `internal compiler error` ou `unable to find a register to spill` ou `can't find a register in class `GENERAL_REGS' while reloading `asm'`..
R : | Vous êtes tombé sur un bogue de gcc. S'il vous plait faites en part à l'équipe de gcc mais pas à nous. Pour une quelconque raison MPlayer semble déclencher des bogues du compilateur de manière fréquente. Néanmoins nous ne pouvons les réparer et n'ajoutons pas du boulot en plus à nos sources pour les bogues de compilateur. Pour éviter ce problème, restez avec une version de compilateur reconnu pour être disponible et stable, ou mettez à niveau fréquemment.
Q : | Y'a-t-il des paquets binaires (RPM/Debian) de MPlayer?
R : | Voir les sections Debian et RPM pour plus de détails.
Q : | Comment puis-je compiler un MPlayer 32 bit sur un Athlon 64 bit?
R : | Essayer les options de configuration suivantes:
    ./configure --target=i386-linux --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib
Q : | Configure se termine par ce texte, et MPlayer ne compile pas !
    Your gcc does not support even i386 for '-march' and '-mcpu'
R : | Votre gcc n'est pas installé correctement, voir le fichier `config.log` pour plus de détails.
Q : | J'ai une Matrox G200/G400/G450/G550, comment puis-je compiler/utiliser le pilote `mga_vid`?
R : | Lisez la section mga_vid.
Q : | Pendant 'make', MPlayer se plaint à propos de librairies X11. Je ne comprends pas, J'ai VRAIMENT installé X11 !?
R : | ... mais vous n'avez pas installé les paquets X11 de développement. Ou pas correctement. Ils s'appellent `XFree86-devel*` sous Red Hat `xlibs-dev` sous Debian Woody, et `libx11-dev` sous Debian Sarge. Vérifiez également que les liens symboliques `/usr/X11` et `/usr/include/X11` existent.
Q : | Compiler sous Mac OS 10.3 donne plusieurs erreurs de lien
R : | Les erreurs de lien que vous avez ressemblent très probablement à ça:
    ld: Undefined symbols:
    _LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices
    _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices
Ce problème est le résultat des développeurs Apple utilisant 10.4 pour compiler leurs logiciels et distribuant les fichiers binaires aux utilisateurs de 10.3 à travers Software Update. Les symboles non définis sont définis dans Mac OS 10.4, mais pas dans 10.3. Une solution pourrait être de repasser à la version 7.0.1 ou plus prédécente de Quicktime. Il existe une meilleure solution: téléchargez une copie plus ancienne du Frameworks. Cela vous donnera un fichier compressé qui contient le Framework QuickTime 7.0.1 et un Framework QuartzCore 10.3.9. Décompressez les fichiers autrepart que sur votre System folder. (i.e. n'installez pas ce frameworks dans votre répertoire `/System/Library/Frameworks`! Cette ancienne copie n'est là que pour contourner leproblème des erreurs de lien!)
    gunzip < CompatFrameworks.tgz | tar xvf -
Dans config.mak, vous devez rajouter `-F/path/to/where/you/extracted` à la variable `OPTFLAGS`. Si vous utilisez X-Code, il vous suffit de sélectionner ces frameworks au lieu de ceux du système. Le fichier binaire MPlayer résultant utilisera en fait le framework qui est installé sur votre système au travers de liens dynamiques résolus lors de l'exécution. (Vous pouvez le vérifier en utilisant `otool -l`).
### 8.3. Questions générales
Q : Y-a-t'il des listes de diffusion pour MPlayer ? Q : J'ai trouvé un sale bogue quand j'essaie de lire ma vidéo préférée ! Qui dois-je informer ? Q : J'ai des problèmes pour lire les fichiers avec le codec ... . Puis-je l'utiliser ? Q : Quand je démarre la lecture, j'obtiens ce message mais tout semble se dérouler normalement: Linux RTC init: ioctl (rtc_pie_on): Permission denied Q : Comment puis-je faire une copie d'écran ? Q : Quelle est la signification des nombres sur la ligne de commande ? Q : Il y a des messages d'erreur à propos d'un fichier non-trouvé /usr/local/lib/codecs/ ... Q : Comment puis-je faire en sorte que MPlayer se souvienne des options que j'ai utilisé pour un fichier en particulier, movie.avi par exemple? Q : Les sous-titres sont très jolis, les plus beaux que j'ai jamais vu, mais ils ralentissent la lecture! Je sais que ce n'est pas courant ... Q : Comment puis-je lancer MPlayer en tâche de fond ?
Q : | Y-a-t'il des listes de diffusion pour MPlayer ?
R : | Oui. Voir la section listes de diffusion sur notre page web.
Q : | J'ai trouvé un sale bogue quand j'essaie de lire ma vidéo préférée ! Qui dois-je informer ?
R : | Veuillez lire comment rapporter un bogue et suivez les instructions.
Q : | J'ai des problèmes pour lire les fichiers avec le codec ... . Puis-je l'utiliser ?
R : | Regardez l'état des codecs, si il ne contient pas votre codec, lisez le HOWTO importation des codecs Win32 et contactez-nous.
Q : | Quand je démarre la lecture, j'obtiens ce message mais tout semble se dérouler normalement:
    Linux RTC init: ioctl (rtc_pie_on): Permission denied
R : | Vous avez besoin d'un noyau configuré spécialement pour utiliser le code de timing RTC. Pour plus de détails, voir la section RTC de la documentation.
Q : | Comment puis-je faire une copie d'écran ?
R : | Vous devez utiliser un pilote de sortie vidéo qui n'utilise pas d'overlay pour pouvoir faire une copie d'écran. Sous X11, `-vo x11` peut le faire, sous Windows `-vo directx:noaccel` fonctionne. Alternativement vous pouvez lancer MPlayer avec le filtre vidéo `screenshot` (`-vf screenshot`), et pressez la touche s pour faire une capture d'écran.
Q : | Quelle est la signification des nombres sur la ligne de commande ?
R : | Exemple:
    A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
`A: 2.1` position audio en secondes `V: 2.2` position vidéo en secondes `A-V: -0.167` différence audio-video en secondes (décalage) `ct: 0.042` correction de synchro A-V faite `57/57` trames lues/décodées (à partir du dernier déplacement) `41%` utilisation CPU du codec vidéo en pourcents (pour les tranches et le rendu direct (Direct Rendering) ceci inclus video_out) `0%` utilisation CPU de video_out `2.6%` utilisation CPU du codec audio en pourcents `0` nombre de trames sautées pour maintenir la synchro A-V `4` niveau actuel de postprocessing (en utilisant `-autoq`) `49%` taille actuelle du cache (environ 50% est normal) `1.00x` vitesse de lecture en tant que facteur de la vitesse originale La plupart d'entre eux sont là pour des raisons de déboggage, utilisez l'option `-quiet` pour les faire disparaitre. Vous remarquerez que l'utilisation CPU de video_out est à zéro (0%) pour certains fichiers. C'est parcequ'il est appelé directement depuis le codec et donc ne peux pas être mesuré séparemment. Si vous désirez connaitre la vitesse de video_out, comparez la différence lorsque le fichier joue avec `-vo null` et votre habituel pilote de sortie vidéo.
Q : | Il y a des messages d'erreur à propos d'un fichier non-trouvé `/usr/local/lib/codecs/` ...
R : | Téléchargez et installez les codecs binaires depuis notre page des codecs.
Q : | Comment puis-je faire en sorte que MPlayer se souvienne des options que j'ai utilisé pour un fichier en particulier, `movie.avi` par exemple?
R : | Créez un fichier dénommé `movie.avi.conf` contenant les options spécifiques à ce fichier et placez-le dans `~/.mplayer` ou dans le même répertoire que le fichier.
Q : | Les sous-titres sont très jolis, les plus beaux que j'ai jamais vu, mais ils ralentissent la lecture! Je sais que ce n'est pas courant ...
R : | Après avoir exécuté `./configure`, éditez `config.h` et remplacez `#undef FAST_OSD` par `#define FAST_OSD`. Ensuite recompilez.
Q : | Comment puis-je lancer MPlayer en tâche de fond ?
R : | Utilisez:
    mplayer options
    nomfichier < /dev/null &
### 8.4. Problèmes de lecture
Q : Je n'arrive pas à trouver la cause de certains problèmes étranges de lecture. Q : Comment puis-je faire apparaitre les sous-titres sur les bandes noires autour d'un film? Q : Comment sélectionner les pistes audio ou les sous-titres d'un DVD ou de fichiers OGM, Matroska ou NUT ? Q : J'essaie de lire un flux aléatoire depuis l'internet mais cela échoue. Q : J'ai téléchargé un film sur un réseau P2P mais il ne fonctionne pas ! Q : J'ai des problèmes pour afficher mes sous-titres, à l'aide!! Q : Pourquoi MPlayer ne fonctionne-t-il pas sur Fedora Core? Q : MPlayer plante avec MPlayer interrupted by signal 4 in module: decode_video Q : Quand j'essaye de faire une capture depuis mon tuner, cela fonctionne, mais les couleurs sont étranges. C'est BON avec d'autres applications. Q : J'ai des valeurs en pourcentage très étrange (vraiment trop grandes) lors de la lecture de fichiers sur mon portable. Q : L'audio/vidéo devient totalement désynchronisé quand je lance MPlayer en tant que root sur mon portable. Cela fonctionne normalement quand je le lance en tant que simple utilisateur. Q : Pendant qu'un film joue tout devient soudainement saccadé et j'obtiens le message suivant: Badly interleaved AVI file detected - switching to -ni mode...
Q : | Je n'arrive pas à trouver la cause de certains problèmes étranges de lecture.
R : | Avez-vous un fichier `codecs.conf` encore présent dans `~/.mplayer/`, `/etc/`, `/usr/local/etc/` ou dans un endroit similaire? Supprimez-le, un fichier `codecs.conf` obsolète peut causer d'obscurs problèmes et ne doit être utilisé que par les développeurs travaillant sur le support de codec. Cela remplace les paramètres interne de codec de MPlayer, ce qui créera un désastre si des modifications incompatibles sont faites avec des versions plus récentes du logiciel. A moins qu'il soit utilisé par des experts, c'est une recette pour un désastre de telle facon qu'il est aléatoire et très dur à localiser des plantages et des problèmes de lecture. Si vous l'avez encore quelque part sur votre système, vous devriez le supprimer immédiatement.
Q : | Comment puis-je faire apparaitre les sous-titres sur les bandes noires autour d'un film?
R : | Utilisez le filtre vidéo `expand` pour augmenter verticalement la zone sur laquelle le film est rendu et placer le film au niveau de la bande supérieure, par exemple:
    mplayer -vf expand=0:-100:0:0 -slang de dvd://1
Q : | Comment sélectionner les pistes audio ou les sous-titres d'un DVD ou de fichiers OGM, Matroska ou NUT ?
R : | Vous devez utiliser `-aid` (audio ID) ou `-alang` (audio language), `-sid`(subtitle ID) ou `-slang` (subtitle language), par exemple:
    mplayer -alang eng -slang eng exemple.mkv
    mplayer -aid 1 -sid 1 exemple.mkv
Pour voir ceux qui sont disponibles:
    mplayer -vo null -ao null -frames 0 -v fichier | grep sid
    mplayer -vo null -ao null -frames 0 -v fichier | grep aid
Q : | J'essaie de lire un flux aléatoire depuis l'internet mais cela échoue.
R : | Essayez de lire le flux avec l'option `-playlist`.
Q : | J'ai téléchargé un film sur un réseau P2P mais il ne fonctionne pas !
R : | Votre fichier est probablement endommagé ou faux. Si vous l'avez obtenu par un ami, et qu'il dit qu'il fonctionne, essayez de comparer les sommes md5sum.
Q : | J'ai des problèmes pour afficher mes sous-titres, à l'aide!!
R : | Assurez-vous d'avoir installé les polices correctement. Suivez les étapes de la partie polices et OSD de la section installation. Si vous utilisez des polices TrueType, vérifiez que la librairie `FreeType` est installée. Vous pouvez aussi essayer de vérifier vos sous-titres dans un éditeur de texte ou avec d'autres lecteurs. Ou encore les convertir dans un autre format.
Q : | Pourquoi MPlayer ne fonctionne-t-il pas sur Fedora Core?
- 1. R : | Il y a une mauvaise intéraction sur Fedora entre exec-shield, prelink, et toute application utilisant les DLLs Windows (comme MPlayer). Le problème est que exec-shield rend les adresses de chargement de toutes les librairies système aléatoires. Cela se produit durant la phase de prelink (une fois toutes les deux semaines). Quand MPlayer essaie de charger une DLL Windows il veut la placer à une adresse spécifique (0x400000). Si une librairie système importante s'y trouve déjà, MPlayer plantera (Un symptôme typique est un segmentation fault en essayant de lire des fichiers Windows Media 9). Si vous avez ce problème vous avez deux options: Attendez deux semaines. Cela peut fonctionner de nouveau. Relinkez toutes les binaires du système avec des options de prelink différentes. Voici les étapes à suivre: Éditez `/etc/syconfig/prelink` et changez
         PRELINK_OPTS=-mR
     par
           PRELINK_OPTS="-mR --no-exec-shield"
touch /var/lib/misc/prelink.force /etc/cron.daily/prelink (Cela relink toutes les applications, et peut prendre beaucoup de temps.) execstack -s `/chemin/vers/`mplayer (Cela désactive exec-shield pour le binaire MPlayer.)
Q : | MPlayer plante avec
    MPlayer interrupted by signal 4 in module: decode_video
R : | N'utilisez pas MPlayer sur un CPU différent de celui sur lequel il a été compilé ou recompilez avec "runtime CPU detection" (./configure --enable-runtime-cpudetection).
Q : | Quand j'essaye de faire une capture depuis mon tuner, cela fonctionne, mais les couleurs sont étranges. C'est BON avec d'autres applications.
R : | Votre carte probablement rapporte certains espaces de couleurs comme étant supportés alors qu'en fait elle ne les supporte pas. Essayez avec YUY2 à la place de YV12 par défaut (voir la section TV).
Q : | J'ai des valeurs en pourcentage très étrange (vraiment trop grandes) lors de la lecture de fichiers sur mon portable.
R : | C'est un effet de la gestion/économie d'énergie de votre portable (BIOS, pas le noyau). Branchez l'alimentation secteur avant d'allumer votre portable. Vous pouvez aussi voir si cpufreq (une interface SpeedStep pour Linux) vous aide.
Q : | L'audio/vidéo devient totalement désynchronisé quand je lance MPlayer en tant que root sur mon portable. Cela fonctionne normalement quand je le lance en tant que simple utilisateur.
R : | C'est là encore un effet de la gestion d'énergie (voir ci-dessus). Branchez l'alimentation secteur avant d'allumer votre portable ou soyez sûr de ne pas utiliser l'option `-rtc`.
Q : | Pendant qu'un film joue tout devient soudainement saccadé et j'obtiens le message suivant:
    Badly interleaved AVI file detected - switching to -ni mode...
R : | Des fichiers avec un entrelacement très mauvais et `-cache` ne font pas très bon ménage ensemble. Essayez `-nocache`.
### 8.5. Problèmes de pilote vidéo/audio (vo/ao)
Q : Quand je passe en mode plein écran j'obtiens juste des bandes noires autour de l'image et pas de réel agrandissement en mode plein écran. Q : Je viens juste d'installer MPlayer. Quand je veux ouvrir un fichier vidéo cela provoque une erreur fatale: Error opening/initializing the selected video_out (-vo) device. Comment puis-je résoudre mon problème? Q : J'ai des problèmes avec [votre gestionnaire de fenêtre] et les modes plein écran xv/xmga/sdl/x11 ... Q : L'audio se désynchronise lors de la lecture d'un fichier AVI. Q : Comment puis-je utiliser dmix avec MPlayer? Q : Je n'ai pas de son en jouant une vidéo et j'obtiens des messages d'erreur similaires à celui-ci: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) [AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy Could not open/initialize audio device -> no sound. Audio: no sound Starting playback... Q : Quand je lance MPlayer sous KDE je n'obtiens qu'un écran noir et rien ne se passe. Après environ une minute la vidéo commence à défiler. Q : J'ai des problèmes de synchro A/V. Certains de mes AVIs sont lus correctement, mais d'autres sont lus à double vitesse ! Q : Quand je lis ce film j'obtiens des désynchro vidéo-audio et/ou MPlayer plante avec le message suivant: Too many (945 in 8390980 bytes) video packets in the buffer! Q : Comment puis-je me débarasser de la désynchronisation A/V lors d'une recherche sur des flux de type RealMedia?
Q : | Quand je passe en mode plein écran j'obtiens juste des bandes noires autour de l'image et pas de réel agrandissement en mode plein écran.
R : | Votre pilote de sortie vidéo ne supporte pas l'agrandissement en hardware et puisque l'agrandissement logiciel peut être incroyablement lent, MPlayer ne le fait pas automatiquement. Il est plus que probable que vous utilisez le pilote de sortie vidéo `x11` à la place de `xv`. Essayez d'ajouter `-vo xv` à la ligne de commande ou lisez la section vidéo pour trouver les pilotes de sortie vidéo alternatif. L'option `-zoom` permet explicitement l'utilisation de l'agrandissement logiciel.
Q : | Je viens juste d'installer MPlayer. Quand je veux ouvrir un fichier vidéo cela provoque une erreur fatale:
    Error opening/initializing the selected video_out (-vo) device.
Comment puis-je résoudre mon problème?
R : | Modifiez juste votre périphérique de sortie vidéo. Lancez la commande suivante pour obtenir une liste des pilotes de sortie vidéo disponible:
    mplayer -vo help
Après que vous ayez choisi le pilote de sortie vidéo correct, ajoutez le à votre fichier de configuration. Ajoutez
    vo = vo_sélectionné
dans `~/.mplayer/config` et/ou
    vo_driver = vo_sélectionné
dans `~/.mplayer/gui.conf`.
Q : | J'ai des problèmes avec `[votre gestionnaire de fenêtre]` et les modes plein écran xv/xmga/sdl/x11 ...
R : | Lire comment rapporter un bogue et envoyer nous un rapport de bogue en bonne et dû forme. Essayez aussi de tester avec l'option `-fstype`.
Q : | L'audio se désynchronise lors de la lecture d'un fichier AVI.
R : | Essayez l'option `-bps` ou `-nobps`. Si cela ne s'améliore pas, lisez comment rapporter un bogue et téléchargez le fichier par FTP.
Q : | Comment puis-je utiliser dmix avec MPlayer?
R : | Après avoir configuré votre asoundrc vous devez utiliser `-ao alsa:device=dmix`.
Q : | Je n'ai pas de son en jouant une vidéo et j'obtiens des messages d'erreur similaires à celui-ci:
    AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
    [AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy
    Could not open/initialize audio device -> no sound.
    Audio: no sound
    Starting playback...
R : | Vous êtes sous KDE ou GNOME avec le démon son aRtS ou ESD ? Essayez de désactiver le démon son, ou utilisez les options `-ao arts` ou `-ao esd` pour faire utiliser aRts ou ESD à MPlayer. Vous devriez aussi lancer ALSA sans l'émulation OSS, essayez de charger les modules ALSA OSS du noyau ou ajouter `-ao alsa` à votre ligne de commande pour directement utiliser le pilote ALSA de sortie audio.
Q : | Quand je lance MPlayer sous KDE je n'obtiens qu'un écran noir et rien ne se passe. Après environ une minute la vidéo commence à défiler.
R : | Le démon aRts de KDE bloque le périphérique son. Attendez que la vidéo se lance ou désactivez le démon aRts dans le centre de contrôle KDE. Si vous voulez utiliser le son aRts, spécifiez la sortie audio via notre pilote aRts audio natif (`-ao arts`). Si il échoue ou qu'il n'est pas compilé, essayez SDL (`-ao sdl`) et assurez-vous que SDL puisse gérer le son aRts. Un autre option est de lancer MPlayer avec artsdsp.
Q : | J'ai des problèmes de synchro A/V. Certains de mes AVIs sont lus correctement, mais d'autres sont lus à double vitesse !
R : | Vous avez une carte son/pilote boguée. Elle est certainement fixée à 44100Hz, et vous essayez de lire un fichier qui a de l'audio à 22050Hz. Essayez le filtre audio `resample`.
Q : | Quand je lis ce film j'obtiens des désynchro vidéo-audio et/ou MPlayer plante avec le message suivant:
    Too many (945 in 8390980 bytes) video packets in the buffer!
R : | Il peut y avoir plusieurs raisons. Votre CPU et/ou votre carte graphique et/ou votre bus est trop lent. MPlayer affiche un message si c'est le cas (et le compteur de trames sautées augmente vite). Si c'est un AVI, peut-être qu'il a un mauvais entrelacement. Essayez l'option `-ni` pour trouver une solution. Ou il a peut-être un mauvais entête, dans ce cas `-nobps` et/ou `-mc 0` peut aider. Beaucoup de fichiers FLV ne sont lus correctement qu'avec `-correct-pts`. Malheureusement, MEncoder n'a pas cette option mais vous pouvez essayer de régler `-fps`à la valeur correcte si vous la connaissez. Votre pilote son est bogué.
Q : | Comment puis-je me débarasser de la désynchronisation A/V lors d'une recherche sur des flux de type RealMedia?
R : | l'option `-mc 10` peut aider.
### 8.6. Lecture DVD
Q : Et a propos de la navigation et des menus DVD ? Q : Et à propos des sous-titres? Est-ce que MPlayer peut les afficher ? Q : Comment puis-je changer le code de zone de mon lecteur DVD ? Je n'ai pas Windows ! Q : Je ne peux pas jouer un DVD, MPlayer décroche ou affiche des erreurs "Encrypted VOB file!". Q : Dois-je être en (setuid) root pour pouvoir lire un DVD ? Q : Est-il possible de lire/encoder uniquement certains chapitres ? Q : La lecture de DVD est très lente ! Q : J'ai copié un DVD en utilisant vobcopy. Comment puis-je le lire/l'encoder depuis mon disque dur ?
Q : | Et a propos de la navigation et des menus DVD ?
R : | MPlayer ne supporte pas les menus DVD à cause de sérieuses limitations architecturales qui empèchent de gérer correctement les images fixes et le contenu intéractif. Si vous voulez jouer avec des jolis menus, vous devrez utiliser un autre lecteur comme xine, VLC ou Ogle. Si vous voulez voir la navigation DVD dans MPlayer, vous devrez l'implémenter vous-même, mais soyez conscient que ce sera très dur.
Q : | Et à propos des sous-titres? Est-ce que MPlayer peut les afficher ?
R : | Oui. Voir le chapitre DVD.
Q : | Comment puis-je changer le code de zone de mon lecteur DVD ? Je n'ai pas Windows !
R : | Utilisez l'outil regionset.
Q : | Je ne peux pas jouer un DVD, MPlayer décroche ou affiche des erreurs "Encrypted VOB file!".
R : | Le code de décryptage CSS ne marche pas avec certains lecteurs DVD à moins que vous ne paramètriez le code de région de façon approprié. Voir la réponse à la question précédente.
Q : | Dois-je être en (setuid) root pour pouvoir lire un DVD ?
R : | Non. Par contre vous devez avoir les droits appropriés sur le périphérique DVD (dans `/dev/`).
Q : | Est-il possible de lire/encoder uniquement certains chapitres ?
R : | Oui, essayez l'option `-chapter`.
Q : | La lecture de DVD est très lente !
R : | Utilisez l'option `-cache` (décrite dans la page de man) et essayez d'activer le DMA pour le lecteur DVD avec l'outil hdparm (décrit dans le chapitre CD).
Q : | J'ai copié un DVD en utilisant vobcopy. Comment puis-je le lire/l'encoder depuis mon disque dur ?
R : | Utilisez l'option `-dvd-device` pour préciser le répertoire qui contient les fichiers:
    mplayer dvd://1 -dvd-device /chemin/du/répertoire
### 8.7. Demandes de fonctionnalités
Q : Si est MPlayer est en pause et que j'essaie de me déplacer ou de presser n'importe quelle touche, MPlayer sort de pause. Je voudrais être capable de me déplacer dans la vidéo en pause. Q : J'aimerais me déplacer de +/- 1 trame au lieu de 10 secondes.
Q : | Si est MPlayer est en pause et que j'essaie de me déplacer ou de presser n'importe quelle touche, MPlayer sort de pause. Je voudrais être capable de me déplacer dans la vidéo en pause.
R : | C'est très compliqué a implémenter sans perdre la synchronisation A/V. Toutes les tentatives ont échouées jusqu'à présent, mais les patches sont les bienvenus.
Q : | J'aimerais me déplacer de +/- 1 trame au lieu de 10 secondes.
R : | Vous pouvez avancer d'une frame en avant en pressant .. Si le film n'était pas en pause, il se mettra en pause ensuite (voir les pages de man pour plus de détails). L'avance arrière n'est pas près d'être implémenté dans un proche avenir.
### 8.8. Encodage
Q : Comment puis-je encoder ? Q : Cooment puis-je décharger un titre entier de DVD dans un fichier? Q : Comment puis-je créer des (S)VCDs automatiquement? Q : Comment puis-je créer des (S)VCDs? Q : Comment puis-je joindre deux fichiers vidéos ? Q : Comment puis-je réparer des fichiers AVI avec un index cassé ou un mauvais entrelacement? Q : Comment puis-je réparer le format de l'image d'un fichier AVI? Q : Comment puis-je sauvegarder et encoder un fichier VOB avec un début défectueux? Q : Je ne peux pas encoder les sous-titres en AVI! Q : Comment puis-je encoder seulement certains chapitres d'un DVD? Q : J'essaie de travailler avec des fichiers de plus de 2Go sur un système de fichier VFAT. Ça marche? Q : Quel est le sens des nombres sur la ligne de status pendant l'encodage? Q : Pourquoi le débit recommendé par MEncoder est négatif? Q : Je ne peux pas convertir un fichier ASF en AVI/MPEG-4 (DivX) car il utilise 1000 images par secondes? Q : Comment puis-je insérer des sous-titres dans le fichier de sortie ? Q : Comment puis-je encoder uniquement le son d'une vidéo musicale ? Q : Pourquoi est-ce que les lecteurs de tiers partie n'arrivent pas à jouer des films MPEG-4 encodé par des versions plus tardives que 1.0pre7 de MEncoder? Q : Comment puis-je encoder un fichier seulement audio? Q : Comment puis-je jouer les sous-titres inclus dans AVI? Q : MPlayer n'ira pas...
Q : | Comment puis-je encoder ?
R : | Lisez la section MEncoder.
Q : | Cooment puis-je décharger un titre entier de DVD dans un fichier?
R : | Une fois que vous avez sélectionné votre titre, et êtes sûr qu'il joue bien avec MPlayer, utilisez l'option `-dumpstream` Par exemple:
    mplayer dvd://5 -dumpstream -dumpfile dvd_dump.vob
déchargera le 5ème titre du DVD dans un fichier `dvd_dump.vob`
Q : | Comment puis-je créer des (S)VCDs automatiquement?
R : | Essayez le script `mencvcd.sh` du sous-répertoire `TOOLS`. Avec lui vous pourrez encoder des DVDs ou d'autres films en format VCD ou SVCD et même les graver directement sur un CD.
Q : | Comment puis-je créer des (S)VCDs?
R : | Des versions plus récentes de MEncoder peuvent directement générer des fichiers MPEG-2 qui peuvent être utilisés comme une base pour créer un (S)SVCD et sont plus à même d'être joués sans modification sur n'importe quelle plateformes (par exemple pour partager une vidéo depuis une caméra numérique pour des amis qui n'y connaisse rien en informatique). Veuillez lire Utiliser MEncoder pour créer des fichiers compatible VCD/SVCD/DVD pour plus de détails.
Q : | Comment puis-je joindre deux fichiers vidéos ?
R : | Les fichiers MPEG peuvent être mis bout à bout en un seul fichier avec de la chance. Pour les fichiers AVI, vous pouvez utiliser le support de fichier multiple de MEncoder comme cela:
    mencoder -ovc copy -oac copy -o out.avi file1.avi file2.avi
Cela ne marchera que si les fichiers sont de la même résolution et utilisent le même codec. Vous pouvez aussi essayer avidemux et avimerge (font partie du panel d'outil de transcode).
Q : | Comment puis-je réparer des fichiers AVI avec un index cassé ou un mauvais entrelacement?
R : | Pour éviter d'avoir à utiliser `-idx` pour pouvoir rechercher dans des fichiers AVI avec un index cassé ou `-ni` pour jouer des fichiers AVI avec un mauvais entrelacement, utilisez la commande
    mencoder input.avi -idx -ovc copy -oac copy -o output.avi
pour copier les flux vidéo et audio dans un nouveau fichier AVI ce qui régénére l'index et entrelace correctement les données. Bien sûr cela ne peut pas réparer les possibles bogues présents dans les flux vidéo et/ou audio.
Q : | Comment puis-je réparer le format de l'image d'un fichier AVI?
R : | Vous pouvez faire cela grâce à l'option `-force-avi-aspect` de MEncoder, ce qui prend le pas sur le format d'image stocké dans l'option vprp de l'en-tête du AVI OpenDML. Par exemple:
    mencoder entrée.avi -ovc copy -oac copy -o sortie.avi -force-avi-aspect 4/3
Q : | Comment puis-je sauvegarder et encoder un fichier VOB avec un début défectueux?
R : | Le principal problème quand vous voulez encoder un fichier VOB corrompu [3] est qu'il sera difficile d'obtenir un encodage avec une parfaite synchronisation audio/video. une solution est de supprimer la partie corrompue et de n'encoder que la partie saine. Premièrement, vous avez besoin de trouver où commence la partie propre:
    mplayer entrée.vob -sb nb_d_octets_à_passer
Puis vous pouvez créer un nouveau fichier qui contient juste la partie saine:
    dd if=entrée.vob of=sortie_coupée.vob skip=1 ibs=nb_d_octets_à_passer
Q : | Je ne peux pas encoder les sous-titres en AVI!
R : | Vous devez spécifier l'option `-sid` correctement!
Q : | Comment puis-je encoder seulement certains chapitres d'un DVD?
R : | Utilisez l'option `-chapter` correctement, comme: `-chapter 5-7`.
Q : | J'essaie de travailler avec des fichiers de plus de 2Go sur un système de fichier VFAT. Ça marche?
R : | Non, VFAT ne supporte pas les fichiers plus gros que 2Go.
Q : | Quel est le sens des nombres sur la ligne de status pendant l'encodage?
R : | Exemple:
      Pos: 264.5s   6612f ( 2%)  7.12fps Trem: 576min 2856mb  A-V:0.065 [2126:192]
`Pos: 264.5s` position temporelle dans le flux encodé `6612f` number d'images encoded `( 2%)` pourcentage du flux d'entrée encodé `7.12fps` vitesse d'encodage en images par seconde `Trem: 576min` estimation du temps d'encodage restant `2856mb` estimation de la taille finale de l'encodage `A-V:0.065` décalage actuel entre les flux audio et video `[2126:192]` débit video moyen (en ko/s) and débit audio moyen (in ko/s)
Q : | Pourquoi le débit recommendé par MEncoder est négatif?
R : | Parce que le débit avec lequel vous avez encodé l'audio est trop grand pour faire tenir le film sur un CD. Vérifiez que libmp3lame est installé correctement.
Q : | Je ne peux pas convertir un fichier ASF en AVI/MPEG-4 (DivX) car il utilise 1000 images par secondes?
R : | Puisque ASF utilise un nombre d'images par seconde variable alors que AVI en utilise un fixe, vous devrez fixer le nombre d'images par seconde à la main avec l'option `-ofps`.
Q : | Comment puis-je insérer des sous-titres dans le fichier de sortie ?
R : | Passez simplement l'option `-sub <nom fichier>` (ou `-sid`, respectivement) à MEncoder.
Q : | Comment puis-je encoder uniquement le son d'une vidéo musicale ?
R : | Cela n'est pas possible directement, mais vous pouvez essayer ça (notez le & à la fin de la commande mplayer):
    mkfifo encode
    mplayer -ao pcm -aofile encode dvd://1 &
    lame vos_options
    encode musique.mp3
    rm encode
Cela vous permet d'utiliser n'importe quel encodeur, pas seulement LAME, remplacez simplement lame par votre encodeur audio préféré dans la commande ci-dessus.
Q : | Pourquoi est-ce que les lecteurs de tiers partie n'arrivent pas à jouer des films MPEG-4 encodé par des versions plus tardives que 1.0pre7 de MEncoder?
R : | `libavcodec`, la librairie d'encodage native MPEG-4 normalement incluse avec MEncoder, avait pour habitude de règler le FourCC à 'DIVX' quand il encode des vidéos MPEG-4 (le FourCC est un tag AVI pour identifier le logiciel utilisé pour encoder et le logiciel destiné à être utilisé pour le décodage de la vidéo) Cela amène les gens à penser que `libavcodec` était une librairie d'encodage pour DivX, alors qu'en fait c'est une librairie d'encodage pour MPEG-4 complètement différente qui implémente beaucoup mieux le standard MPEG-4 que DivX ne le fait. Ainsi, le nouveau FourCC par défaut utilisé par `libavcodec` est 'FMP4', mais vous pouvez surpasser cette action en utilisant l'option `-ffourcc` de MEncoder. Vous pouvez aussi changer le FourCC des fichiers existant de la même façon:
      mencoder input.avi -o output.avi -ffourcc XVID
Notez que cela règlera le FourCC à XVID plutôt que DIVX. Ceci est recommandé étant donné que DIVX FourCC signifie DivX4, ce qui est un codec MPEG-4 très basic, alorsque DX50 et XVID tout deux signifie MPEG-4 complet (ASP). Donc, si vous changez le FourCC à DIVX, de mauvais logiciels ou lecteurs hardware peuvent cafouiller sur quelques fonctionalités avançées que `libavcodec` supporte, mais que DivX ne supporte pas; d'autre part `Xvid` est plus proche de `libavcodec` en terme de fonctionalitiés, et il est supporté par tous les lecteurs digne de ce nom.
Q : | Comment puis-je encoder un fichier seulement audio?
R : | Utilisez `aconvert.sh` du sous-répertoire `TOOLS` qui se situe dans l'arbre source de MPlayer.
Q : | Comment puis-je jouer les sous-titres inclus dans AVI?
R : | Utilisez `avisubdump.c` du sous-répertoire `TOOLS` ou lisez ce document sur l'extraction/demultiplexage des sous-titres inclus dans les fichiers AVI OpenDML.
Q : | MPlayer n'ira pas...
R : | Voir le sous-répertoire `TOOLS` pour une collection de scripts et codes aléatoires. `TOOLS/README` contient la documentation.

[3] D'une certaine manière, certaines formes de protection contre la copie utilisées dans les DVDs peuvent être assimilée à du contenu corrompu.

# Annexe A. Comment rapporter les bogues

Les bons rapports de bogue sont une contribution précieuse pour tout projet en développement. Mais tout comme pour écrire un bon logiciel, les bons rapports de problèmes exigent du travail. Rendez-vous compte que la plupart des développeurs sont extrêmement occupés et reçoivent un nombre colossal d'emails. Donc bien que votre retour soit crucial pour l'amélioration de MPlayer et soit très apprécié, comprenez que vous devez fournir toutes les informations que nous demandons et suivre de près les instructions de ce document.

## A.1. Rapport de sécurité lié aux bogues

Au cas où vous trouveriez un bogue exploitable, laissez-nous le temps de le corriger avant de le révéler. Vous pouvez envoyer vos alertes de sécurité à security@mplayerhq.hu. Veuillez ajouter [SECURITE] ou [CONSEILLE] dans le sujet. Soyez sûr que votre rapport contienne une analyse complète et détailée du bogue. L'envoi d'un correctif est hautement apprécié. Veuillez ne pas retarder l'envoi de votre rapport juste pour l'écriture d'une preuve que le bogue est exploitable, vous pouvez envoyer ceci dans un autre message.

## A.2. Comment réparer les bogues

Si vous pensez avoir les talents nécessaires vous êtes invité à essayer de réparer le bogue vous-même. Ou peut-être l'avez-vous déjà fait ? Veuillez lire ce court document (en anglais) pour trouver comment faire inclure votre code dans MPlayer. Les gens de la liste de diffusion MPlayer-dev-eng vous assisterons si vous avez des questions.

## A.3. Comment faire des tests de regression en utilisant Subversion

Un problème qui peut survenir quelque fois est «cela marchait avant, et plus maintenant...». Voici une procédure étape-par-étape pour tenter d'indiquer quand exactement le problème s'est produit. Ceci n'est pas pour les utilisateurs occasionnels.

Premièrement, vous aurez besoin de récuperer l'arbre des sources de MPlayer depuis le dépot Subversion. Les instructions peuvent être trouvé au bas de cette page.

Vous aurez donc dans le repertoire mplayer/ une image de l'arbre Subversion, du coté client. Maintenant mettez à jour cette image à la date voulue :

    cd mplayer/
    svn update -r {"2004-08-23"}

Le format de date est AAAA-MM-JJ HH:MM:SS. Utiliser ce format de date vous assure que vous pourrez extraire les patches selon la date à laquelle elles ont été fusionnés au dépot, comme dans l' archive MPlayer-cvslog.

Maintenant procéder comme pour une mise-à-jour normale :

    ./configure
    make

Pour un non-informaticien qui lit ceci, la méthode la plus rapide d'arriver au point où le problème se produit est d'utiliser une recherche dichotomique — qui est, chercher la date où est survenu le problème en divisant à plusieurs reprises l'intervalle de recherche par moitié. Par exemple, si le problème se produit en 2003, commencez en milieu d'année, puis demandez-vous "Le problème est-il déjà présent à ce moment?". Si oui, revenez au premier Avril; si non, allez au premier Octobre, et ainsi de suite.

Si vous avez beaucoup d'espace libre sur le disque dur (une compilation complète des sources prend actuellement 100 MO, et environ 300-350 MO si les symboles de déboguage sont activés), copiez la plus vieille version fonctionnelle connue avant de la mettre à jour; cela sauvera du temps si vous devez y revenir. (Il est habituellement nécessaire de lancer 'make distclean' avant de recompiller une version plus récente, donc si vous ne faites pas une copie de sauvegarde de votre arbre source original, vous devrez tout recompiler dedans quand vous reviendrez à la version présente.)

Quand vous avez trouvé le jour où le problème survient, continuez la recherche en utilisant l'archive mplayer-cvslog (triée par date) et en affinant par des mises-à-jour depuis Subversion en précisant heure, minute et seconde :

    svn update -r {"2004-08-23 15:17:25"}

Cela vous permettra de trouver facilement le patch exact à l'origine du problème.

Si vous trouvez le patch qui est la cause du problème, vous avez quasiement gagné; signalez le à MPlayer Bugzilla ou souscrivez à MPlayer-users et postez-le là. Il y a une chance pour que l'auteur s'empresse de suggérer un correctif. Vous pouvez également décortiquer le patch jusqu'à ce que le bug vous saute aux yeux :-).

## A.4. Comment rapporter les bogues

Tout d'abord veuillez essayer la dernière version Subversion de MPlayer car votre bogue y est peut-être déjà réparé. Le développement évolue très rapidement, la plupart des problèmes des versions officielles sont rapportés dans les jours voir les heures qui suivent, donc n'utilisez que la version Subversion pour rapporter les bogues. Ceci est également valable pour les paquets binaires de MPlayer. Les instructions Subversion peuvent être trouvées en bas de cette page ou dans le README. Si tout cela ne vous aide pas, veuillez vous référer au reste de la documentation. Si votre problème n'est pas connu ou non résolvable avec nos instructions, alors merci de rapporter le bogue.

Merci de ne pas envoyer de rapports de bogues en privé à chaque développeur. C'est un travail commun et il y a donc pas mal de gens que cela pourrait intéresser. Parfois d'autres utilisateurs ont rencontré les mêmes ennuis que vous et savent comment contourner le problème même si c'est un bogue dans le code de MPlayer.

Merci de décrire votre problème avec le plus de détails possibles. Faites un petit travail de détective pour restreindre les conditions d'occurrence du problème. Est ce que le bogue ne se montre que dans certaines situations ? Est-il spécifique à certains fichiers ou types de fichier ? Apparaît-il avec un seul codec ou est-ce indépendant du codec ? Pouvez-vous le reproduire avec tous les pilotes de sortie ? Plus vous fournissez d'information, plus grandes sont nos chances de résoudre votre problème. Merci de ne pas oublier d'inclure également les informations importantes requises plus bas, sinon nous ne pourront pas établir un diagnostic précis de votre problème.

Un guide excellent et bien écrit pour poser des questions sur les forums publiques est Comment Poser Les Questions De Manière Intelligente par Eric S. Raymond. Il y en a un autre (en anglais) appelé How to Report Bugs Effectively par Simon Tatham. Si vous suivez ces règles vous devriez pouvoir obtenir de l'aide. Mais merci de comprendre que nous suivons tous les listes de diffusion volontairement sur notre temps libre. Nous sommes très occupés et ne pouvons garantir que vous aurez une solution à votre problème ou même une réponse.

## A.5. Où rapporter les bogues

Souscrivez à la liste de diffusion mplayer-users : http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users et envoyez votre rapport à mailto:mplayer-users@mplayerhq.hu où vous pourrez en discuter.

Si vous préférez, vous pouvez utiliser notre tout nouveau Bugzilla à la place.

La langue de cette liste est l'Anglais. Suivez les Règles de la Netiquette SVP et n'envoyez de mails en HTML sur aucune de nos listes de diffusion. Vous ne serez qu'ignoré ou banni. Si vous ne savez pas ce qu'est un mail en HTML ou pourquoi c'est mauvais, lisez ce sympatique document (en Anglais). Il explique tous les détails et a des instructions pour désactiver le HTML. Notez également que nous ne ferons pas de CC (copie conforme) individuelle et que c'est donc une bonne idée de souscrire pour recevoir votre réponse.

## A.6. Que rapporter

Vous pouvez avoir besoin d'inclure des fichiers de log, de configuration ou d'échantillon. Si certains sont très gros alors il vaut mieux les uploader sur notre serveur HTTP en format compressé (gzip et bzip2 préférés) et indiquer uniquement leur chemin et nom dans le rapport de bogue. Nos listes de diffusion ont une taille de message limite de 80k, si vous avez quelque chose de plus gros vous devrez le compresser ou l'uploader.

### A.6.1. Information Système

- Votre distribution Linux ou système d'exploitation et version, ex. :

  - Red Hat 7.1

  - Slackware 7.0 + paquets de développement de la 7.1 ...

- Version du noyau :

      uname -a

- Version de la libc :

      ls -l /lib/libc[.-]*

- Versions de gcc et ld :

      gcc -v
      ld -v

- Version des binutils :

      as --version

- Si vous avez des problèmes avec le mode plein-écran :

  - Type de gestionnaire de fenêtre et version

- Si vous avez des problèmes avec XVIDIX :

  - Profondeur de couleur de X :

        xdpyinfo | grep "depth of root"

- Si seul le GUI (ou IHM - Interface Homme Machine) est boguée :

  - Version de GTK

  - Version de GLIB

  - Position dans le GUI au moment où le bogue se produit

### A.6.2. Matériel et pilotes

- Info CPU (cela ne fonctionne que sous Linux) :

      cat /proc/cpuinfo

- Fabricant et modèle de votre carte vidéo, ex. :

  - Puce ASUS V3800U: nVidia TNT2 Ultra pro 32Mo SDRAM

  - Matrox G400 DH 32Mo SGRAM

- Type et version des drivers vidéo, ex. :

  - Pilote X intégré

  - nVidia 0.9.623

  - Utah-GLX CVS 2001-02-17

  - DRI avec X 4.0.3

- Type de carte son et pilote, ex. :

  - Creative SBLive! Gold avec pilote OSS de oss.creative.com

  - Creative SB16 avec pilotes noyau OSS

  - GUS PnP avec émulation OSS ALSA

- En cas de doute, joignez-y le résultat de lspci -vv sur les systèmes Linux.

### A.6.3. Problèmes de configuration

Si vous rencontrez des erreurs pendant l'éxecution de ./configure, ou si l'auto-détection ou autre chose échoue, lisez `config.log`. Vous pourriez y trouver la réponse, par exemple des versions multiples mélangées de la même librairie dans votre système, ou vous avez oublié d'installer les paquets de développement (ceux avec le suffixe -dev). Si vous pensez que c'est un bogue, incluez `config.log` dans votre rapport de bogue.

### A.6.4. Problèmes de compilation

Veuillez inclure ces fichiers :

- config.h

- config.mak

### A.6.5. Problèmes de lecture

Merci d'inclure la sortie de MPlayer en verbosité niveau 1, mais rappelez-vous de ne pas tronquer la sortie en le copiant dans votre mail. Les développeurs ont besoin de tous les messages pour diagnostiquer correctement un problème. Vous pouvez rediriger la sortie dans un fichier comme ceci :

    mplayer -v options nomfichier > mplayer.log 2>&1

Si votre problème est spécifique à un ou plusieurs fichiers, alors merci d'uploader le(s) fautif(s) sur : http://streams.videolan.org/upload/

Uploadez aussi un petit fichier texte ayant le même nom que votre fichier mais avec une extension .txt. Décrivez le problème que vous avez avec ce fichier et incluez votre adresse e-mail ainsi que la sortie de MPlayer en verbosité niveau 1. Généralement les premiers 1-5 Mo sont suffisants pour reproduire le problème, mais pour être sûrs nous vous demandons de faire :

    dd if=votre_fichier of=petit_fichier bs=1024k count=5

Cela coupera les 5 premiers Mo de 'votre_fichier' et les sauvera dans 'petit_fichier'. Essayez alors de lire le petit fichier, et si le bogue persiste vous pouvez envoyer le petit fichier par ftp. N'envoyez jamais ces fichiers par e-mail SVP ! Envoyez-les par FTP, et postez seulement le chemin/nom des fichiers sur le serveur FTP. Si le fichier est accessible en téléchargement à partir d'Internet, alors envoyez seulement son adresse URL exacte.

### A.6.6. Plantages

Vous devez lancer MPlayer à l'intérieur de gdb et nous envoyer le résultat complet ou si vous avez un `core` dump du plantage vous pouvez extraire des informations utiles du fichier Core. Voici comment :

#### A.6.6.1. Comment conserver les informations sur un plantage reproductible

Recompilez MPlayer avec les instructions de déboguage activées :

    ./configure --enable-debug=3
    make

et ensuite lancez MPlayer à l'intérieur de gdb en utilisant :

    gdb ./mplayer

Vous êtes maintenant à l'intérieur de gdb. Tapez :

    run -v options-pour-mplayer nomfichier

et reproduisez votre plantage. Aussitôt que vous l'avez fait, gdb va vous renvoyer à la ligne de commande où vous devrez entrer

    bt
    disass $pc-32,$pc+32
    info all-registers

Utilise disass $pc-32 $pc+32 avec les anciennes versions de gdb.

#### A.6.6.2. Comment extraire les informations significatives d'un core dump

Créer le fichier de commande suivant :

    bt
    disass $pc-32,$pc+32
    info all-registers

Ensuite exécutez simplement la commande :

    gdb mplayer --core=core -batch --command=fichier_de_commande > mplayer.bug

## A.7. Je sais ce que je fait...

Si vous avez créé un rapport de bogue correct en suivant les étapes ci-dessus et que vous êtes persuadé qu'il s'agit d'un bug dans MPlayer, et non un problème de compilateur ou d'un fichier endommagé, vous avez déjà lu la documentation et vous n'arrivez pas à trouver une solution, vos pilotes son sont OK, alors vous pouvez souscrire à la liste mplayer-advusers et y envoyer votre rapport pour obtenir une réponse plus intéressante et plus rapide.

Soyez prévenu que si vous posez des questions de newbie (débutant) ou des questions dont les réponses sont dans le manuel, vous serez ignoré ou insulté au lieu de recevoir une réponse appropriée. Donc ne nous insultez pas et ne vous inscrivez à -advusers que si vous savez vraiment ce que vous faites et vous sentez en mesure d'être un utilisateur avancé de MPlayer ou un développeur. Si vous correspondez à ces critères il ne devrait pas être difficile de trouver comment on s'inscrit...

# Annexe B. Format de skins MPlayer

## B.1. Aperçu

Ce n'est pas en rapport direct avec le format des skins, mais vous devez savoir que MPlayer n'a pas de skin par défaut, donc au moins une skin doit être installée pour pouvoir utiliser la GUI.

### B.1.1. Répertoires

MPlayer cherche des skins dans ces répertoires (dans cet ordre):

1. `$(DATADIR)/skins/`

2. `$(PREFIX)/share/mplayer/skins/`

3. `~/.mplayer/skins/`

Notez que le premier répertoire peut varier suivant la façon dont MPlayer a été configuré (voir les arguments `--prefix` et `--datadir` du script configure).

Chaque skin est installée dans son propre répertoire sous l'un des répertoires listés ci-dessus, par exemple:

    $(PREFIX)/share/mplayer/skins/default/

### B.1.2. Format d'images

Les images doivent être en truecolor (24 ou 32 bpp) et enregistrées au format PNG.

Dans la fenêtre principale et la barre de lecture (c.f. ci-dessous) vous pouvez utiliser des images dotées de régions "transparentes": les régions remplies avec la couleur #FF00FF (magenta) deviennent transparentes dans MPlayer. Cela signifie que vous pouvez obtenir des formes particulières pour vos fenêtres si votre serveur X possède l'extension XShape.

### B.1.3. Composants d'une skin

Les skins sont d'un format plutôt libre (contrairement aux formats fixes de Winamp/XMMS, par exemple), donc il ne tient qu'a vous de créer quelque chose de bien.

Actuellement, trois fenêtres doivent être décorées: la fenêtre principale, la sous-fenêtre, la barre de lecture, et le menu (activable par un clic droit).

- Vous contrôlez MPlayer par la fenêtre principale et/ou la barre de lecture. L'arrière plan est une image. Divers objets peuvent (et doivent) venir se placer dans cette fenêtre: boutons, podomètres (sliders) et labels. Pour chaque objet, vous devez spécifier sa taille et sa position.

  Un bouton comprend trois états (pressé, relâché, désactivé), donc l'image doit se diviser en trois parties, verticalement. Voir l'objet bouton pour plus de détails.

  Un podomètre (principalement utilisé pour la barre d'avancement et le contrôle du volume/balance) peut posséder n'importe quel nombre d'états en empilant ces images, verticalement. Voir hpotmeter pour plus de détails.

  Les labels sont un peu particuliers : les caractères nécessaires pour les dessiner sont récupérés depuis un fichier image, décrit par un fichier de description de polices. Ce dernier est un fichier texte brut spécifiant la position x,y ainsi que la taille de chaque caractère dans l'image (le fichier image et son descripteur forment une police ensemble). Voir dlabel et slabel pour plus de détails.

  ### Note

  Toutes les images disposent de la couleur de transparence décrite dans la section formats d'images. Si le serveur X ne supporte pas l'extension Xshape, les parties transparentes seront noires. Si vous voulez utiliser cette fonction, la largeur de l'image de la fenêtre principale devra être divisible par 8.

- La sous-fenêtre contient la vidéo en elle même. Elle peut afficher une image si aucun film n'est chargé (ce n'est jamais plaisant d'avoir une fenêtre vide :-)) Note: la couleur de transparence n'est pas autorisée ici.

- Le menu est simplement un moyen de contrôler MPlayer par des entrées graphiques. Deux images sont nécessaires pour le menu: l'une d'elle, l'image de base, affiche le menu dans son été normal, l'autre est utilisée pour afficher les entrées sélectionnées. Quand vous faites apparaître le menu, la première image s'affiche. Si vous passez la souris sur les entrées du menu, l'entrée sélectionnée est copiée depuis la seconde image, et uniquement la partie concernée par cette sélection (la seconde image ne s'affiche jamais complètement.)

  Une entrée de menu se définit par sa position et sa taille dans l'image (voir la section menu pour plus de détails).

Une chose essentielle n'a pas encore été mentionnée : pour que les boutons, podomètres et entrées du menu fonctionnent, MPlayer doit savoir quoi en faire. Ceci dépend des messages (events) envoyés. Pour chacun de ces objets vous devez définir le message à afficher quand on clique dessus.

### B.1.4. Fichiers

Vous aurez besoin des fichiers suivants pour construire une skin:

- Le fichier de configuration nommé skin indique à MPlayer comment assembler les différentes images et comment interpréter les clics de souris sur l'interface.

- L'image de fond de la fenêtre principale.

- Les images correspondants aux objets de la fenêtre principale (y compris une ou plusieurs polices et descripteurs nécessaires à l'affichage des textes).

- L'image affichée dans la sous-fenêtre (optionnel).

- Deux images pour le menu (nécessaires uniquement si vous voulez créer un menu).

A l'exception du fichier de configuration, vous pouvez nommer les fichiers comme bon vous semble (mais notez que les descripteurs de polices doivent avoir une extension `.fnt`).

## B.2. Le fichier skin

Comme mentionné plus haut, c'est le fichier de configuration de la skin. Il est lu ligne par ligne; les lignes de commentaires démarrent par le caractère '`;`' en début de ligne (seuls les espaces et tabulations sont autorisées avant ce signe).

Les fichiers se composent de sections. Chaque section décrit la skin pour une application et s'écrit sous la forme:

    section = nom de la section
    .
    .
    .
    end

Actuellement il n'existe qu'une application, donc vous n'aurez besoin que d'une section: dont le nom est movieplayer.

Dans cette section chaque fenêtre est décrite par un bloc de la forme suivante:

    window = nom de la fenêtre
    .
    .
    .
    end

Où `` peut-être l'un des types suivants:

- main - pour la fenêtre principale

- sub - pour la sous-fenêtre

- menu - pour le menu

- playbar - barre de lecture

(Les blocs sub et menu sont optionnels - vous n'avez pas l'obligation de décorer le menu et la sous-fenêtre.)

Dans un bloc window, vous pouvez définir chaque objet sous la forme:

    objet = paramètre

Où `objet` est une ligne identifiant le type d'objet de la GUI, `paramètre` est une valeur numérique ou textuelle (ou une liste de valeurs séparées par des virgules).

Le fichier final doit donc ressembler à ceci:

    section = movieplayer
      window = main
      ; ... objets de la fenêtre principale ...
      end

      window = sub
      ; ... objets de la sous-fenêtre ...
      end

      window = menu
      ; ... objets du menu ...
      end

      window = playbar
      ; ... objets de la la barre de lecture ...
      end
    end

Le nom d'un fichier image doit être donné sans distinction de répertoire - les images seront cherchées dans le répertoire `skins`. Vous pouvez (mais ce n'est pas obligatoire) spécifier l'extension du fichier. Si le fichier n'existe pas, MPlayer essaie de charger le fichier `<nomfichier>.<ext>`, où `png` et `PNG` sera respectivement `<ext>` (dans cet ordre). La première correspondance trouvée sera utilisée.

Pour finir quelques mots sur le positionnement. La fenêtre principale et la sous-fenêtre peuvent être placées dans des coins différents de l'écran en donnant les coordonnées `X` et `Y`. `0` pour haut ou gauche, `-1` pour centre et `-2` pour droite ou bas, comme montré sur cette illustration:

    (0, 0)----(-1, 0)----(-2, 0)
      |          |          |
      |          |          |
    (0,-1)----(-1,-1)----(-2,-1)
      |          |          |
      |          |          |
    (0,-2)----(-1,-2)----(-2,-2)

Un exemple. Supposons que vous avez crée une image `main.png` que vous voulez utiliser pour la fenêtre principale:

    base = main, -1, -1

MPlayer essaie de charger les fichiers `main`, `main.png`, `main.PNG`.

### B.2.1. Fenêtre principale et barre de lecture

Vous trouverez ci-dessous la liste des objets utilisables dans les blocs '`window = main`' ... '`end`', et '`window = playbar`' ... '`end`'.

`decoration = enable|disable`

  Active (enable) ou désactive (disable) la décoration du gestionnaire de fenêtre pour la fenêtre principale. disable par défaut.

  ### Note

  Cela ne fonctionne pas pour la fenêtre d'affichage, il n'y en a pas besoin.

`base = image, X, Y`

  Vous spécifiez ici l'image de fond utilisée dans la fenêtre principale. La fenêtre apparaîtra a la position `X,Y` sur l'écran. La fenêtre aura la taille de l'image.

  ### Note

  Ces coordonnées ne fonctionnent actuellement pas pour la fenêtre d'affichage.

  ### Avertissement

  Les régions transparentes (couleur #FF00FF) apparaîtront en noir sur les serveurs X n'ayant pas l'extension XShape. La largeur de l'image doit être divisible par 8.

`button = image, X, Y, largeur, hauteur, message`

  Place un bouton de taille `largeur` * `hauteur` a la position `X,Y`. Le `message` sera généré au clic sur ce bouton. L'image appelée par `image` doit avoir trois états empilés verticalement (pour les trois états du bouton), comme ceci:

      +------------+
      |  pressé    |
      +------------+
      |  relâché   |
      +------------+
      |  désactivé |
      +------------+

`hpotmeter = button, blargeur, bhauteur, phases, numphases, default, X, Y, largeur, hauteur, message`

`vpotmeter = button, blargeur, bhauteur, phases, numphases, default, X, Y, largeur, hauteur, message`

  Place un podomètre horizontal (hpotmeter) ou vertical (vpotmeter) de taille `largeur` * `hauteur` à la position `X,Y`. L'image peut être divisée en différentes parties pour les différentes phases du podomètre (par exemple, vous pouvez en avoir un pour le contrôle du volume qui passe du vert au rouge quand sa valeur passe du minimum au maximum). `hpotmeter` peut posséder un bouton qui sera glissé horizontalement.

  - `button` - l'image utilisée pour le bouton (doit avoir trois états superposés, comme pour les boutons)

  - `blargeur`,`bhauteur` - taille du bouton

  - `phases` - l'image utilisée pour les différentes phases du podomètre. Une valeur `NULL` spéciale peut-être utilisée si vous ne voulez pas d'image. L'image doit être divisée en `numphasesparts` verticalement comme ceci:

        +------------+
        |  phase #1  |
        +------------+
        |  phase #2  |
        +------------+
             ...
        +------------+
        |  phase #n  |
        +------------+

  - `numphases` - nombre d'états placés dans l'image `phases`.

  - `default` - valeur par défaut du podomètre (dans un intervalle de `0` à `100`)

  - `X`,`Y` - position du hpotmeter

  - `largeur`,`hauteur` - largeur et hauteur du `hpotmeter`

  - `message` - le message généré lors des changements d'état de `hpotmeter`

`font = fontfile, fontid`

  Définit une police. `fontfile` est le nom du descripteur de police avec l'extension `.fnt` (inutile de préciser son extension ici). `fontid` réfère à la police (c.f. dlabel et slabel). Jusqu'à 25 polices peuvent être définies.

`slabel = X, Y, fontid, "texte"`

  Place un label dynamique à la position `X,Y`. `texte` est affiché en utilisant la police identifiée par `fontid`. Le texte est juste une chaîne brute (les variables `$x` ne fonctionnent pas) qui doit être mise entre doubles quotes (mais le caractère " ne peut pas faire partie du texte). Le label est affiché en utilisant la police identifiée par `fontid`.

`dlabel = X, Y, longueur, align, fontid, "texte"`

  Place un label statique à la position `X,Y`. Le label est appelé dynamique parce que son texte est rafraîchi périodiquement. La longueur maximum du label est définie par `longueur` (sa hauteur dépend de la hauteur des caractères). Si le texte a afficher dépasse cette longueur il sera scrollé, ou bien aligné dans l'espace spécifié par la valeur du paramètre `align`: `0` pour gauche, `1` pour centre, et `2` pour droite.

  Le texte à afficher est donné par `texte`: il doit être écrit entre doubles quotes (mais le caractère " ne peut pas faire partie du texte). Le texte s'affiche en utilisant la police spécifiée par `fontid`. Vous pouvez utiliser les variables suivantes dans le texte:

  Variable | Signification
  --- | ---
  $1 | temps de lecture au format hh:mm:ss
  $2 | temps de lecture au format mmmm:ss
  $3 | temps de lecture au format hh (heures)
  $4 | temps de lecture au format mm (minutes)
  $5 | temps de lecture au format ss (secondes)
  $6 | longueur du film au format hh:mm:ss
  $7 | longueur du film au format mmmm:ss
  $8 | temps de lecture au format h:mm:ss
  $v | volume au format xxx.xx%
  $V | volume au format xxx.x
  $U | volume au format xxx
  $b | balance au format xxx.xx%
  $B | balance au format xxx.x
  $D | balance au format xxx
  $$ | le caractère $
  $a | un caractère dépendant du type audio (aucun: `n`, mono: `m`, stéréo: `t`)
  $t | numéro de piste (dans la playlist)
  $o | nom du fichier
  $f | nom du fichier en minuscule
  $F | nom du fichier en majuscule
  $T | un caractère dépendant du type de flux (fichier: `f`, Video CD: `v`, DVD: `d`, URL: `u`)
  $p | le caractère p (si une vidéo est en lecture et que la police a le caractère p)
  $s | le caractère s (si une vidéo est stoppée et que la police a le caractère s)
  $e | le caractère e (si une vidéo est en pause et que la police a le caractère e)
  $x | largeur du film
  $y | hauteur du film
  $C | nom du codec utilisé

### Note

Les variables `$a, $T, $p, $s` et `$e` e retournent toutes des caractères pouvant s'afficher comme des symboles spéciaux (par exemple, e est le symbole de pause qui ressemble généralement à ||). Vous pouvez avoir une police pour les caractères normaux et une autre pour les symboles. Lisez la section sur les symboles pour plus d'informations.

### B.2.2. Sous-fenêtre

Vous trouverez ci-dessous la liste des objets utilisables dans le bloc '`window = sub`' . . . '`end`'.

`base = image, X, Y, largeur, hauteur`

  L'image qui s'affichera dans la fenêtre. La fenêtre apparaîtra à la position `X,Y` sur l'écran (`0,0` est le coin supérieur gauche). Vous pouvez spécifier `-1` pour centre et `-2` pour droite (`X`) et bas (`Y`). La fenêtre prendra la taille de l'image. `largeur` et `hauteur` donnent la taille de la fenêtre; ces paramètres sont optionnels (si ils sont absents, le fenêtre prend la taille de l'image).

`background = R, V, B`

  Vous permet de définir la couleur de fond. Utile si l'image est plus petite que la fenêtre. `R`, `V` et `B` spécifient les composantes rouge, verte et bleue de la couleur (d'un intervalle entre 0 et 255).

### B.2.3. Menu

Comme mentionné précédemment, le menu s'affiche en utilisant deux images. Les entrées normales du menu sont extraites de l'image spécifiée par l'objet `base`, tandis que l'entrée actuellement sélectionnée est extraite de l'image spécifiée par l'objet `selected`. Vous devez définir la taille et la position de chaque entrée du menu par l'objet `menu`.

Ils correspondent aux objets utilisés dans le bloc '`window = menu`'. . .'`end`'.

`base = image`

  L'image utilisée pour les entrées normales.

`selected = image`

  L'image utilisée pour les entrées sélectionnées.

`menu = X, Y, largeur, hauteur, message`

  Définit la position `X,Y` et la taille des entrées du menu dans les images. `message` est le message généré quand le bouton de la souris est relâché.

## B.3. Polices

Comme mentionné dans la section sur les parties de la skin, une police est définie par une image et un fichier de description. Vous pouvez placer les caractères n'importe ou sur l'image, mais vous devez vous assurer que leur position et taille correspondent précisément au fichier de description.

Le fichier descriptif des polices (avec l'extension `.fnt`) peut avoir des lignes de commentaires commençant par '`;`'. Le fichier doit avoir une ligne du type

    image = image

Où ``image`` est le nom de l'image qui sera utilisée pour la police (vous n'avez pas à définir d'extension).

    "char" = X, Y, largeur, hauteur

Ici `X` et `Y` précisent la position du caractère `char` dans l'image (`0,0` est le coin supérieur gauche). `largeur` et `hauteur` sont les dimensions du caractère en pixels.

Voici un exemple définissant les caractères A, B, C utilisant `font.png`.

    ; Peut être "font" au lieu de "font.png".
    image = font.png

    ; Trois caractères suffisent pour une démonstration. :-)
    "A" =  0,0, 7,13
    "B" =  7,0, 7,13
    "C" = 14,0, 7,13

### B.3.1. Symboles

Certains caractères ont une signification spéciale quand ils sont retournés par des variables utilisées dans dlabel. Ces caractères sont censés s'afficher comme des symboles (par exemple, dans le cas d'une lecture DVD, vous pouvez afficher un beau logo DVD a la place du caractère '`d`').

La table ci-dessous liste les caractères pouvant s'afficher comme des symboles (et nécessitent donc une police différente).

Caractère | Symbole
--- | ---
p | lecture
s | stop
e | pause
n | pas de son
m | son mono
t | son stéréo
f | lecture depuis un fichier
v | lecture depuis un Video CD
d | lecture depuis un DVD
u | lecture depuis une URL

## B.4. Messages de la GUI

Ce sont les messages qui peuvent être générés par les boutons, podomètres et entrées du menu.

evNone

  Message vide, sans effet. (à part peut-être dans les versions CVS :-)).

Contrôle de lecture:

evPlay

  Commence la lecture.

evStop

  Stoppe la lecture.

evPause

evPrev

  Saute à la piste précédente dans la playlist.

evNext

  Saute à la prochaine piste dans la playlist.

evLoad

  Charge un fichier (en ouvrant un mini navigateur de fichiers, où vous pouvez choisir un fichier).

evLoadPlay

  Fait la même chose que `evLoad`, mais démarre la lecture automatiquement après le chargement du fichier.

evLoadAudioFile

  Charge un fichier audio (avec un sélecteur de fichier)

evLoadSubtitle

  Charge un fichier de sous-titres (avec un sélecteur de fichier)

evDropSubtitle

  Désactive le sous-titre actuellement utilisé.

evPlaylist

  Ouvre/ferme la playlist.

evPlayVCD

  Essaie d'ouvrir le disque dans le lecteur CD-ROM indiqué.

evPlayDVD

  Essaie d'ouvrir le disque dans le lecteur DVD-ROM indiqué.

evLoadURL

  Ouvre la fenêtre de saisie d'URL.

evPlaySwitchToPause

  Le contraire de `evPauseSwitchToPlay`. Ce message démarre la lecture et l'image associée au bouton `evPauseSwitchToPlay` s'affiche (pour indiquer que le bouton peut être pressé pour mettre en pause la lecture).

evPauseSwitchToPlay

  Associé à la commande `evPlaySwitchToPause`. Ils s'utilisent pour avoir un bouton play/pause commun. Les deux messages peuvent être assignés aux boutons affichés exactement à la même position dans la fenêtre. Ces messages mettent la lecture en pause et le bouton `evPlaySwitchToPause` s'affiche (pour indiquer que le bouton peut être pressé pour continuer la lecture).

Déplacement dans le flux:

evBackward10sec

  Recule de 10 secondes.

evBackward1min

  Recule de 1 minute.

evBackward10min

  Recule de 10 minutes.

evForward10sec

  Avance de 10 secondes.

evForward1min

  Avance de 1 minute.

evForward10min

  Avance de 10 minutes.

evSetMoviePosition

  Se place à la position (utilisable avec un podomètre; utilise la valeur relative (0-100%) du podomètre).

Contrôle vidéo:

evHalfSize

  Réduit de moitié la taille de la fenêtre vidéo.

evDoubleSize

  Double la taille de la fenêtre vidéo.

evFullScreen

  Passe en mode plein écran.

evNormalSize

  Met la vidéo à sa taille réelle.

evSetAspect

Contrôle audio:

evDecVolume

  Diminue le volume.

evIncVolume

  Augmente le volume.

evSetVolume

  Fixe le volume (utilisable avec un podomètre; utilise la valeur relative (0-100%) du podomètre).

evMute

  Active/désactive le son.

evSetBalance

  Fixe la balance (utilisable avec un podomètre; utilise la valeur relative (0-100%) du podomètre).

evEqualizer

  Active/désactive l'équalizer.

Divers:

evAbout

  Ouvre la fenêtre 'A Propos'.

evPreferences

  Ouvre la fenêtre de préférences.

evSkinBrowser

  Ouvre le navigateur de skins.

evIconify

  Iconifie la fenêtre.

evExit

  Quitte le programme.

## B.5. Créer des skins de qualité

Vous avez lu toute la doc expliquant comment faire un skin pour la GUI de MPlayer, fait de votre mieux avec Gimp et souhaitez nous soumettre votre skin? Lisez les guidelines pour éviter les erreurs communes et produire un skin de haute qualité.

Nous voulons des skins que nous puissions ajouter à notre repository pour se conformer à certain standards de qualité. Il y a aussi un nombre de choses que vous pouvez faire pour rendre notre vie plus simple.

En tant qu'exemple, vous pouvez jeter un oeil à la skin `Blue`, elle satisfait tous les critères listé ci-dessous depuis la version 1.5.

- Chaque skin devra joindre un fichier `README` qui contiendra les informations sur vous, l'auteur, le copyright et les notices de licence et n'importe quoi d'autre que vous souhaitiez ajouter. Si vous désirez avoir un changelog, ce fichier est le bon endroit.

- Il devrez y avoir un fichier `VERSION` avec rien de plus que le numéro de version de la skin sur une simple ligne (e.g. 1.0).

- Les contrôles horizontaux et verticaux (sliders comme le volume ou la position) devront avoir le centre du bouton proprement centré sur le milieu du slider. Il devra être possible de bouger le bouton aux deux extrémités du slider, mais pas de le dépasser.

- Les éléments de la skin devront avoir les bonnes tailles déclarées dans le fichier de la skin. Si cela n'est pas le cas vous pouvez cliquer en dehors e.g. un bouton et encore le déclencher ou cliquer à l'intérieur de sa zone et ne pas le déclencher.

- le fichier `skin` devra être prettyprinted et ne pas contenir d'onglets. Prettyprinted signifie que les chiffres devront s'aligner de façon ordonnée dans les colonnes