mplayer n'est pas le seul lecteur vidéo sur la planète libre, mais c'est clairement le plus robuste et souvent le plus rapide. Ce véritable couteau suisse de l'encodage/décodage répond présent même dans les cas critiques de vidéos endommagées ou mal encodées. Maintenant mplayer étant un outil très complexes, je vais surtout m'attacher ici à décrire mon utilisation courante de cet indispensable outil.
Historique
(
tout afficher)
- v3 - Ajout d'une section DVB/TNT (2009-01-05 13:44)
- v2 - Ajout d'informations complémentaires (2009-01-03 15:30)
MPlayer, principes de base
Décodeurs audio et vidéo
mplayer est un lecteur et seulement un lecteur. Il ne fait pas comme VLC de diffusion mais comme VLC, se base sur des psoeudo URL pour déterminer le type de source. La plus basique est l'URL "locale" de type file:///mom_dossier/ma_vidéo.avi, qui peut se contracter en /mon_dossier/ma_vidéo.avi.
gaston$mplayer /mon_dossier/ma_video.avigaston$
Lecture d'un vidéo locale
Déjà comme cela, mplayer devrait correctement lire votre vidéo. Il est cependant possible qu'il soit nécessaire de régler plus finement le type de sortie audio ou vidéo à utiliser, ce qui correspond respectivement aux paramètres -ao et -vo. La liste des modules de décodage disponibles pour chacun des deux cas est accessible en tapant simplement mplayer -ao help ou mplayer -vo help. Ainsi, sur mon U810, il est clairement plus efficace de lire la vidéo avec le greffon -vo gl (utilisant OpenGL, comme compiz) qu'avec -vo xv activé par défaut. Du coup, si je veux lire ma vidéo en forçant la sortie GL et l'audio ALSA, nous obtenons la commande suivante :
gaston$mplayer -vo gl -al alsa /mon_dossier/ma_video.avigaston$
Lecture d'une vidéo en utilisant OpenGL et ALSA
Sous-titres
Enfin l'ajout de sous-titres au format texte (ex. fichier .srt) est possible sur n'importe quelle vidéo, soit automatique si le fichier a exactement le même nom que le fichier avi, soit en spécifiant le chemin et le nom du fichier des sous-titres par l'option -sub.
gaston$mplayer -sub en_anglais.srt /mon_dossier/ma_video.avigaston$
lecture d'un AVI avec les sous-titres
Forçage du type de conteneur
Normalement mplayer détecte tout seul le format du conteneur passé en paramètre. Il arrive cependant que le fichier soit mal gaulé et que cette détection se révèle hasardeuse. Dans ce cas il est possible de forcer un type de conteneur, ou plus exactement le module chargé de décoder le conteneur. Par exemple lavf pour le format DV. Comme toujours pour ce type d'argument indiquant un module, il est possible d'en obtenir la liste via mplayer -demuxer help :
gaston$mplayer -demuxer lavf mauvais_fichier.dvgaston$
force la lecture d'un fichier DV avec lavf
Navigation au clavier
A partir du moment où la vidéo est en route, le déplacement se fait par les flèches gauche/droite, haut/bas pour de plus grands déplacements, et page up et page down pour d'encore plus grands bonds. Le volume se change par les touches * et /, le passage d'une piste à l'autre par et > et la bascule en plein écran par f. La pause se fait par la touche espace et vous pouvez à tout moment quitter mplayer par la touche q.
L'activation/désactivation des sous-titres se fait par la touche v, F pour forcer leur affichage, et le passage d'une langue à l'autre par y et g.
Enfin si vous notez une désynchronisation entre l'audio et la vidéo, il est toujours possible d'ajuster cela avec les touches + et -.
Extraction de piste
Il est possible d'utiliser mplayer pour extraire la piste audio ou vidéo d'une source arbitraire :
# extraction de la piste audio/MP3 d'un AVIgaston$mplayer -dumpaudio -dumpfile audio.mp3 source.avi # extraction de la piste vidéo d'un AVIgaston$mplayer -dumpvideo -dumpfile vidéo.mpeg source.mpeggaston$
extraction de piste
Dans un cas comme dans l'autre, le format d'origine est strictement conservé. Mais il est possible d'extraire des versions "brutes", c'est à dire décodées :
# extraction d'une piste audio au format WAV/PCMgaston$mplayer -vc dummy -vo null -ao pcm source.avi # extraction d'une piste vidéo au format PPMgaston$mplayer -vc dummy -ao null -vo pnm source.avigaston$
extraction de piste décodée
Lecture d'un média
Les sources de données lisibles par mplayer ne se limitent pas, loin de là, aux seuls conteneurs locaux.
Lecture par liste
S'agissant des listes de lecture, vous devez passer la référence du fichier en paramètre avec l'option -playlist
# une simple playlist au format WinAMPgaston$mplayer -playlist ma_playlist.m3u # une playlist via le réseau, ici la liste de la FreeBox TVgaston$mplayer -playlist http://mafreebox.freebox.fr/freeboxtv/playlist.m3ugaston$
Lecture d'un DVD
En utilisant le système d'URL de mplayer, il est bien entendu possible d'attaquer directement un lecteur de DVD :
gaston$mplayer dvd://gaston$
lecture d'un DVD
La navigation dans un DVD est normalement possible mais n'a jamais réussi à fonctionner chez moi. Elle se fait en remplaçant dvd:// par dvdnav//.
Tel quel, la lecture se fera à partir du plus long titre, qui est généralement celui du film lui-même. Il est cependant possible de sélectionner un titre particulier en ajoutant son numéro après le //
gaston$mplayer dvd://2gaston$
lecture d'un DVD à partir du titre 2
Il est aussi possible de sélectionner la langue par ordre de priorité avec -alang fr,en (d'abord le français, puis l'anglais), ainsi que les sous-titres avec -slang en,fr.
Pour connaître la structure d'un dvd , il est possible d'utiliser la commande lsdvd :
gaston$lsdvd -asDisc Title: WATERWORLDTitle: 01, Length: 02:09:38.140 Chapters: 17, Cells: 18, Audio streams: 05, Subpictures: 10Audio: 1, Language: en - English, Format: ac3, Frequency: 48000, Quantization: drc, Channels: 5, AP: 0, Content: Undefined, Stream id: 0x80Audio: 2, Language: de - Deutsch, Format: ac3, Frequency: 48000, Quantization: drc, Channels: 2, AP: 0, Content: Undefined, Stream id: 0x81...Audio: 5, Language: es - Espanol, Format: ac3, Frequency: 48000, Quantization: drc, Channels: 2, AP: 0, Content: Undefined, Stream id: 0x84Subtitle: 01, Language: en - English, Content: Undefined, Stream id: 0x20,Subtitle: 02, Language: pt - Portugues, Content: Undefined, Stream id: 0x21,...Subtitle: 10, Language: fr - Francais, Content: Undefined, Stream id: 0x29, Title: 02, Length: 00:01:55.000 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00Audio: 1, Language: en - English, Format: ac3, Frequency: 48000, Quantization: drc, Channels: 2, AP: 0, Content: Undefined, Stream id: 0x80 Title: 03, Length: 00:00:24.000 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00Audio: 1, Language: en - English, Format: ac3, Frequency: 48000, Quantization: drc, Channels: 6, AP: 0, Content: Undefined, Stream id: 0x80 Longest track: 01gaston$
structure d'un dvd
Dans certain cas il peut être pratique si l'on a plus d'un lecteur de DVD, de spécifier en plus le périphérique à utiliser pour la lecture avec l'option -dvd-device /dev/sr0. Cette option permet aussi de lire un dossier issu de la recopie d'un DVD en local (via vobcopy -m).
# le DVD doit être monté pour être copiégaston$sudo mount /dev/cdrom /media/cdromgaston$vobcopy -mVobcopy 1.1.0 - GPL Copyright (c) 2001 - 2007 document.write(String.fromCharCode(60,97,32,104,114,101,102,61,39,109,97,105,108,116,111,58,114,111,98,111,115,64,109,117,111,110,46,100,101,39,62,114,111,98,111,115,64,109,117,111,110,46,100,101,60,47,97,62));[Info] Writing files to this dir: /vidéo/WATERWORLD/VIDEO_TS/...gaston$lsdvd -as /vidéo/WATERWORLD...Longest track: 01gaston$mplayer -dvd-device /vidéo/WATERWORLD dvd://1gaston$
capture et lecture d'un DVD
L'utilisation de lsdvd est juste là pour montrer comment utiliser cette commande avec un dossier, sinon l'utilisation de mplayer avec dvd:// aurait très bien suffit. En tout cas voilà un moyen simple pour lire un DVD sans le bruit assourdissant du lecteur. Notez que cette approche fait sauter la protection technique du DVD (région et chiffrement), et qu'elle est donc absolument illégale.
Dans certains cas vous pouvez vous retrouver (je ne veux pas savoir comment) avec des sous-titres au format idx et sub, voir ifo. Il s'agit d'une extraction brute du flux correspondant dans un .VOB. Comme pour les srt vus plus haut, si ces fichiers ont le même nom que le fichier AVI, tout est automatique. Sinon il faut tout de même que les deux fichiers aient le même nom et tenter la commande suivant :
gaston$mplayer -vobsub nom_sub_sans_extention fichier.avigaston$
lecture de sous-titres VOB
Comme pour un DVD, les .sub peuvent contenir plusieurs langues et l'option -slang est donc applicable.
Lecture d'un flux réseau
Avec les flux provenant du réseau et la notion de protocole qui leur est associée, la URL prennent tout leur sens. Voici quelques exemples de flux réseau que mplayer est capable de prendre en charge :
# Lecture d'un flux mmsgaston$mplayer mms://source/fichier.wmv # lecture d'un flux RTSP en UDPgaston$mplayer udp://239.255.0.11:1234 # Lecture des programmes de France2 sur la FreeBox, notez les "" pour éviter une mauvaise interprétationgaston$mplayer "rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=sd" # Lecture de la radio "France Culture" à partir des flux de la FreeBox. Notez le "-novideo" car ici, seule la piste audio MP2 est disponible.gaston$mplayer -novideo "rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006"gaston$
Lecture de flux
Enfin, il est possible de sauvegarder ces flux en conservant le format original. Par exemple pour sauvegarder une chaîne de la FreeBox :
# notez les "", sans eux cela ne marchera pas...gaston$mplayer -dumpstream -dumpfile resultat.ts "rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=sd"gaston$
sauvegarde d'un flux FreeBox TV
Le fichier résultat est donc, dans cet exemple, très exactement au même format que celui émi par les services free, à savoir du MPEG2 pour la vidéo, du MP2 pour l'audio, un flux texte pour le télétexte, le tout encapsulé en MPEG_TS.
Lecture d'une carte Radio
Une carte Radio FM simple, ou une carte TV analogique incluant un tuner FM (ex. Leadtek TV2000) est utilisable directement par mplayer :
# Lecture de la radio à la fréquence 105.5 (France Intox)gaston$mplayer radio://105.5 # Lecture de la radio en passant par une listegaston$mplayer -radio channels="105.5-France Info,102.3-OUI FM" radio://2gaston$
lecture de la radio
Lecture d'une périphérique V4L
V4L pour Vidéo For Linux, est infrastructure de capture vidéo sous la forme de modules Kernel qu'utilisent les pilotes de WebCAM, de cartes TV analogique (ex. Leadtek TV2000) et/ou d'acquisition vidéo. Lorsque tout ce petit monde est correctement chargé, cela débouche sur la création d'une entrée de type /dev/videoX (ex. /dev/video0) qui permet aux applications de communiquer avec le matériel en utilisant les librairies V4L.
Une carte d'acquisition analogique, à partir d'un signal TV, Composite ou SVidéo, utilise donc le module V4L (ou V4L version 2, alias v4l2). Il est résulte pour mplayer une ligne un peu barbare qui va permettre de spécifier, à travers les options du pilote v4l ou v4l2, la manière dont le flux doit être décodé :
gaston$mplayer -tv driver=v4l2:device=/dev/video1:volume=100:input=0:normid=9:outfmt=nv12:decimation=1:channels="25-TF1,22-France2,28-France3,K06-Canal+,30-France5/Arte,33-M6" tv://5gaston$
Lecture d'une chaine de télévision analogique
Les points intéressant sont l'utilisation de -tv pour passer mplayer en mode télévision et ainsi indiquer l'utilisation du v4l2, suivi de ses paramètres. Et enfin la sélection du canal initial avec l'URL de type tv://.
Dans les options du pilote, nous avons passé, comme pour la lecture radio, un jeu de fréquences. Il suffit donc de presser la touche K pour changer de canal. Dans le paramétrage du pilote, le source "tuner" correspond au paramètre input=0. Du coup, si nous cherchons cette fois à numériser une vidéo, nous utiliserons 1 pour sélectionner l'entrée composite et 2 pour l'entrée S-Vidéo. Ainsi pour lire une cassette VHS en passant par un magnétoscope, cela nous donne :
gaston$mplayer -tv driver=v4l2:device=/dev/video1:volume=100:input=2:normid=9:outfmt=nv12:decimation=1 tv://gaston$
Lecture de la numérisation de l'entrée S-Vidéo
Comme la carte TV analogique, un WEBCam utilise elle aussi le module V4L. La lecture se fait de la même manière que précédemment avec des options un peu différentes, typiquement la résolution désirée :
# Lecture d'un flux provenant d'une WEBCAMgaston$mplayer -tv driver=v4l:width=320:height=240:device=/dev/video1 tv://gaston$
lecture d'une WebCAM
Maintenant la lecture directe des flux V4L va devenir surtout intéressante lorsqu'utilisée avec mencoder (voir section suivante) pour sauvegarder cela dans des conteneurs type AVI.
Lecture de la TNT
La TNT est un flux DVB (Digita