4.18. Décodeurs MPEG

4.18.1. sorties et entrées DVB

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

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

./configure --enable-dvb

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

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

Ensuite compilez et installez comme d'habitude.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Si MPlayer se plain souvent avec le message suivant :

Too many video/audio packets in the buffer

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

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

mplayer dvb://

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

mplayer dvb://R1

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

mplayer dvb://2@R1

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

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

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

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

switch_x -2

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

step_x

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

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

-mc 10 -speed 0.97 -af scaletempo

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

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

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

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

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

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

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

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

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

4.18.2. DXR2

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

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

UTILISATION

-vo dxr2

Active la sortie TV

-vo dxr2:x11 ou -vo dxr2:xv

Active la sortie Overlay sous X11

-dxr2 <option1:option2:...>

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

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

Veuillez lire la page de man pour les options disponibles.

4.18.3. DXR3/Hollywood+

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

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

UTILISATION

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

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

-ao oss:/dev/em8300_ma-X

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

-af resample=xxxxx

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

-vf lavc/fame

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

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

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

-ac hwac3

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