Copyright © 2000-2022 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.
libcaca
– Librairie ASCII Art
en couleurlibavcodec
Xvid
x264
Video For Windows
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.
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.
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.
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.
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.
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.
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.
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.
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.
MPlayer possède une interface de menu OSD complètement modulable.
Le menu des préférences n'est PAS IMPLÉMENTÉ pour l'instant!
Installation
compilez MPlayer en passant le paramètre --enable-menu à ./configure
assurez-vous que les polices OSD sont installées
copiez etc/menu.conf dans votre répertoire .mplayer
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)
trouvez et éditez input.conf pour activer les touches correspondant aux mouvements dans le menu (c'est décrit sur place).
lancez MPlayer avec par exemple :
$ mplayer -menu fichier.avi
pressez n'importe laquelle des touches menu que vous avez définies
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 :
cvs -z3 -d:pserver:[email protected]:/xvid login
cvs -z3 -d:pserver:[email protected]:/xvid co xvidcore
cd xvidcore/build/generic
./bootstrap.sh
./configure
Vous pouvez avoir à ajouter des options (examinez la sortie de ./configure --help).
make && make install
Si vous avez spécifié --enable-divxcompat, copiez ../../src/divx4.h dans /usr/local/include/.
Recompilez MPlayer.
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.
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.
Il y a trois méthodes de synchro dans MPlayer.
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.
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 5film1.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
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
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:
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).
DÉBIT
Spécifie le rapport trame/sec du fichier de sous-titres (nombre à virgule).
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 -fpssubtitles_fps
-subfpsavi_fps
-subsubtitle_filename
dummy.avi
A propos des sous-titres DVD, voir la section DVD.
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.
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
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.
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.
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 -
Il est également recommandé d'activer -cache pour une lecture depuis le réseau:
wget ftp://micorsops.com/quelquechose.avi
-O - | mplayer -cache 8192 -
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:
mplayerhttp://217.71.208.37:8006
-dumpstream -dumpfilestream.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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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).
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.
Incluez l'option -edl <nomfichier> quand vous lancez MPlayer, avec le nom du fichier EDL que vous voulez appliquer à la vidéo.
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.
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.
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.
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.
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
***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:
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
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
centre
stéréo
gauche
droite
quadraphonique
devant gauche
devant droite
arrière gauche
arrière droite
surround 4.0
devant gauche
devant droite
arrière centre
devant centre
surround 5.0
devant gauche
devant droite
arrière gauche
arrière droite
devant centre
surround 5.1
devant gauche
devant droite
arrière gauche
arrière droite
devant centre
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.
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
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.
Décidez combien de canaux de sortie vous avez besoin. Ceci est la première sous-option.
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
É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.
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:
Afin de fournir un canal de sortie pour chacune des deux enceintes, la première sous-option doit être "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".
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.
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.
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.
Il devrait y avoir quatre canaux de sortie. La première sous-option est "4".
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".
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
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.
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.
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.
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.
Voici encore un autre exemple pour jouer le canal gauche dans deux enceintes. Suivez les étapes ci-dessus:
pan devrait sortir deux canaux, donc la première sous-option est "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".
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.
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:
Le nombre de canaux de sortie est 2, donc la première sous-option est "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.
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:
Puisque pan a besoin d'examiner chacun des six canaux, spécifiez -channels 6 ainsi liba52 les décode tous.
pan sort vers seulement cinq canaux, la première sous-option est 5.
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
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.
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.
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).
Assurez-vous que votre tuner fonctionne avec d'autres logiciels TV pour Linux. Par exemple avec XawTV.
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.
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.
Le Télétexte n'est actuellement disponible dans MPlayer que pour les drivers v4l et v4l2.
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.
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
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.
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.
Vérifiez que votre tuner fonctionne avec un autre logiciel d'écoute radio comme XawTV par exemple.
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).
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
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 ".".
libcaca
– Librairie ASCII Art
en couleurIl 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 :
à 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
à 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)
à 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).
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 :
Vous devez utiliser XFree86 4.0.2 ou plus récent (les versions précédentes n'ont pas XVideo)
Votre carte supporte l'accélération matérielle (les cartes modernes le font)
X charge l'extension XVideo, qui doit faire apparaître quelque chose comme :
(II) Loading extension XVideo
dans /var/log/XFree86.0.log
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 !
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.
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
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.
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).
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.
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.
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.
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
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.
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.
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.
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.
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).
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).
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.
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
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.
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 :
spécifie le device framebuffer a utiliser (par défaut : /dev/fb0)
mode a utiliser (d'après le fichier /etc/fb.modes)
fichier de configuration des modes (par défaut : /etc/fb.modes)
valeurs importantes, voir example.conf
Si vous désirez passer dans un mode particulier, alors utilisez
mplayer -vm -fbmodenom_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
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.
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 :
Pour l'utiliser, vous devez au préalable compiler pilotes/mga_vid.o :
make pilotes
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
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
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
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.
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
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 :
Compilez pilotes/tdfx_vid.o :
make pilotes
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
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.
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
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 :
V
change la couleur de l'OSD
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 :
Choisit le pilote aa (X11, curses, Linux)
Utilise les 256 caractères
Utilise l'ASCII 8 bits
Affiche toutes les options de AAlib
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.
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 :
Définie le pilote caca recommandé, c-a-d. ncurses, slang, x11.
Spécifie le nombre de lignes de collones. par ex. 128x50.
Spécifie la police à utiliser. par ex. fixed, nexus.
Use the -framedrop option if your computer is not fast enough to render all frames.
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.
N'utilisez pas ce pilote avec GCC 2.96 ! Cela ne fonctionnera pas !
OPTIONS EN LIGNE DE COMMANDE POUR 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à.
À é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.
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 0devrait 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.
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 :
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.
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.
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.
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.
Recompilez.
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.
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
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.
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.
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
"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)
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.
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.
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 mpegpesvotrefichier.ext
mplayer -ao mpegpes -vo mpegpes -vf expandvotrefichier.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 -or1.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.
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
Active la sortie TV
Active la sortie Overlay sous X11
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.
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
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.
X
Pour la sortie audio, où X
est le numéro de
périphérique
(0 si une carte).
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).
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.
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).
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.
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.
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.
Sous Linux vous avez 2 méthodes pour faire fonctionner la sortie TV :
pour les instructions sur la sortie TV des Matrox G450/G550, voir la prochaine section SVP !
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).
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.
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 !).
Ensuite, réglez votre moniteur et votre TV à votre convenance avec les outils ci-dessus.
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
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...
Appréciez la sortie TV Matrox ultra-rapide ultra-fonctionnelle (meilleure que Xv) !
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/
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).
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.
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.
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é.
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.
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.
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.
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.
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).
Si votre CPU à SSE, recompilez votre noyau avec
"options CPU_ENABLE_SSE
" (FreeBSD-STABLE ou patches noyau
requis).
À 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.
Voir la section Mac OS.
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.
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).
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.)
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
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-deviced:
Les DVDs fonctionnent également, ajustez -dvd-device à la lettre de votre lecteur DVD-ROM :
mplayer dvd://<titre>
-dvd-deviced
:
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.
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.
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.
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.
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
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.
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.
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 :
mencoderinput.avi
-ooutput.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
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.
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 -osortie.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \ -oac copy -osortie.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
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
-osortie.psp
Vous pouvez définir le titre de la vidéo avec
-info name=TitreDuFilm
.
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 :
mencoderinput.avi
-of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copyautres_options
-osortie.mpg
Création d'un fichier MPEG-1 lisible sur un système basique comme peu l'être un MS Windows fraîchement installé :
mencoderentree.avi
-of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 -ooutput.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
:
mencoderentree.avi
-oVCD.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
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.
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 :
mencoderentree.mpg
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \ -vf scale=640:480 -osortie.avi
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:
mencoderentree.nsv
-oac copy -fafmttag 0x706D \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -osortie.avi
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 :
MEncoder
décode le(s) image(s)
d'origine(s) avec libjpeg
(pour décoder
des PNGs, il utilisera libpng
).
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 -osortie.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 -osortie.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
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
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
rmsoustitres.idx
soustitres.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \ -vobsuboutsoustitres
-vobsuboutindex 0 -sid 2 mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \ -vobsuboutsoustitres
-vobsuboutindex 1 -sid 5
Exemple 6.6. Copier les sous-titres français depuis un fichier MPEG
rmsoustitres.idx
soustitres.sub
mencoderfilm.mpg
-ifofilm.ifo
-vobsuboutsoustitres
-vobsuboutindex 0 \ -vobsuboutid fr -sid 1 -nosound -ovc copy
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
mencoderechantillon-svcd.mpg
-vf crop=714:548:0:14 -oac copy -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -osortie.avi
libavcodec
Xvid
x264
Video For Windows
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.
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.
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.
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.
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.
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.
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
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.
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 :
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.
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.
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.
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.
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 :
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).
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.
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.
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.
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.
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 :
La hauteur de recadrage et son décalage vertical doivent être des multiples de 4.
Tout redimensionnement vertical doit être effectué en mode entrelacé.
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.
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.
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.
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.
mplayerfichier_source.vob
-aid 129 -dumpaudio -dumpfileson.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 :
mplayerfichier_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.
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 -osortie_film.avi
\ -audiofileentré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 -osortie_film.asf
\ -audiofileentré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).
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.
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 :
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.
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.
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 -osortie.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.
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]
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.
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 :
mplayer dvd://1
Chercher une scène avec beaucoup de mouvements.
Utiliser la touche . pour avancer image par image.
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.
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.
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é.
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é.
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.
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].
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é.
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).
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
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
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
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
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
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.
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.
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.
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%.
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) :
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
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.
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 |
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.
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 |
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 :
mencoderentree.avi
-osortie.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
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
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.
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.
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.
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 |
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 |
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.
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.
Ce guide considère deux principales catégories d'options d'encodage :
Les options qui traitent principalement du compromis entre la durée d'encodage et la qualité
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.
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.
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).
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.
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 |
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.
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-devicezeiram.iso
dvd://7 -obande_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
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.
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 …).
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.
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.
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
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
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é.
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.
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 [email protected], 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps 3 hint Payload mpeg4-generic for track 1 4 hint Payload H264 for track 2
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.
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.
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.
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.
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.
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.
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
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.
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
libavcodec
peut être utilisé pour créer
des vidéos compatibles avec les standards VCD/SVCD/DVD en utilisant les options appropriées.
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.
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
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
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é.
Cette section présente certaines commandes complètes pour créer des vidéos compatibles VCD/SVCD/DVD.
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.mpg
film.avi
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 \ -ofilm.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.
8.1. Développement | |
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
|
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 : | |
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 |
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
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 |
8.3. Questions générales | |
| |
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 |
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
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 |
Q : | Comment puis-je lancer MPlayer en tâche de fond ? |
R : | Utilisez: mplayer
|
8.4. Problèmes de lecture | |
| |
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 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 Pour voir ceux qui sont disponibles: mplayer -vo null -ao null -frames 0 -v
|
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
|
Q : | Pourquoi MPlayer ne fonctionne-t-il pas sur Fedora Core? |
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:
|
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. |
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
|
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 = dans ~/.mplayer/config et/ou
vo_driver = dans ~/.mplayer/gui.conf. |
Q : |
J'ai des problèmes avec |
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 |
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.
|
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 ? |
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
|
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. |
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 ? |
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
déchargera le 5ème titre du DVD dans un fichier
|
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 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 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
|
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 Puis vous pouvez créer un nouveau fichier qui contient juste la partie saine: dd if=
|
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]
|
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 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 : |
mencoder
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
|
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.
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.
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é à [email protected]. 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.
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.
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 :-).
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.
Souscrivez à la liste de diffusion mplayer-users : http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users et envoyez votre rapport à mailto:[email protected] 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.
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.
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
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.
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.
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 -voptions
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.
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 :
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 -voptions-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.
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...
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.
MPlayer cherche des skins dans ces répertoires (dans cet ordre):
$(DATADIR)/skins/
$(PREFIX)/share/mplayer/skins/
~/.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/
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.
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.
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.
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).
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.
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.
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.
Ces coordonnées ne fonctionnent actuellement pas pour la fenêtre d'affichage.
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é |
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.
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).
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é.
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ù
est le nom de l'image qui
sera utilisée pour la police (vous n'avez pas à définir d'extension).
image
"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
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 |
Ce sont les messages qui peuvent être générés par les boutons, podomètres et entrées du menu.
Message vide, sans effet. (à part peut-être dans les versions CVS :-)).
Contrôle de lecture:
Commence la lecture.
Stoppe la lecture.
Saute à la piste précédente dans la playlist.
Saute à la prochaine piste dans la playlist.
Charge un fichier (en ouvrant un mini navigateur de fichiers, où vous pouvez choisir un fichier).
Fait la même chose que evLoad
, mais démarre la lecture
automatiquement après le chargement du fichier.
Charge un fichier audio (avec un sélecteur de fichier)
Charge un fichier de sous-titres (avec un sélecteur de fichier)
Désactive le sous-titre actuellement utilisé.
Ouvre/ferme la playlist.
Essaie d'ouvrir le disque dans le lecteur CD-ROM indiqué.
Essaie d'ouvrir le disque dans le lecteur DVD-ROM indiqué.
Ouvre la fenêtre de saisie d'URL.
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).
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:
Recule de 10 secondes.
Recule de 1 minute.
Recule de 10 minutes.
Avance de 10 secondes.
Avance de 1 minute.
Avance de 10 minutes.
Se place à la position (utilisable avec un podomètre; utilise la valeur relative (0-100%) du podomètre).
Contrôle vidéo:
Réduit de moitié la taille de la fenêtre vidéo.
Double la taille de la fenêtre vidéo.
Passe en mode plein écran.
Met la vidéo à sa taille réelle.
Contrôle audio:
Diminue le volume.
Augmente le volume.
Fixe le volume (utilisable avec un podomètre; utilise la valeur relative (0-100%) du podomètre).
Active/désactive le son.
Fixe la balance (utilisable avec un podomètre; utilise la valeur relative (0-100%) du podomètre).
Active/désactive l'équalizer.
Divers:
Ouvre la fenêtre 'A Propos'.
Ouvre la fenêtre de préférences.
Ouvre le navigateur de skins.
Iconifie la fenêtre.
Quitte le programme.
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