<cadre type=alert> Cette documentation est considérée comme étant obsolète.
Cela signifie que la documentation sur cette page est dépassée. Léa-Linux vous incite à ne pas suivre cette documentation dans votre utilisation d'une distribution récente. Cette documentation est conservée uniquement dans un souci de curiosité et d'archive documentaire, mais au moins une partie des informations qui la compose n'est plus valide. </cadre>
Lire des DVD vidéo avec Xine, avec et sans carte de décompresion MPEG-2 (dxr3 et Hollywood+).
La lecture de DVD video sous Linux a longtemps été un véritable défi. La cause en était la volonté des majors et autres multi-nationales de verrouiller le marché du DVD (zones, cryptage des DVD, etc.). Gràce au travail acharné de plusieurs équipes, ce temps est aujourd'hui révolu, et après avoir lu ces quelques lignes, et épongé un peu de sueur, vous pourrez utiliser sous Linux vos DVD video de façon optimale.
Nous allons présenter dans cet article [#xine l'installation de Xine], un lecteur video performant pour Linux. A cause de problèmes légaux, Xine ne sait pas tel quel lire les DVD cryptés ou bloqués. Heureusement, une autre équipe développe en parallèle un plugin pour Xine (xine_d4d) permettant de les lire sans aucun problème. Nous verrons [#xine_d4d comment installer xine_d4d] pour lire les DVD cryptés.
La structure modulaire de Xine permet aussi à un autre groupe de développer un plugin (xine-dvdnav) afin d'[#xine-dvdnav utiliser les menus des DVD] comme sur une platine de salon.
Nous verrons enfin [#dxr3 comment tirer parti des cartes de décompression MPEG-2] basées sur le chipset em8300, dont les cartes Creative Labs dxr3 et Sigma Design Hollywood+ (et d'autres cartes sans marque et moins chères ;).
Enfin, nous verrons qu'un autre problème se pose qui, lui, n'est pas lié au lecteur de DVD : rendre automatique l'installation de tous les drivers au boot de Linux.
Les utilisateurs avancés (ou pressés ;) pourrons se rendre directement au [#resume résumé] qui regroupe en quelques lignes les étapes à franchir afin d'installer Xine avec et sans carte de décompression.
Pour commencer, il faut que votre noyau soit compilé avec le support du système de fichier UDF (CONFIG_UDF_FS = Y ou M), car la plupart des DVD utilisent ce système de fichier. C'est le cas des distributions récentes. Nous supposerons également dans la suite que vous avez un noyau de la série 2.4.
Dans ce cas, lisez plutôt : [xine_mdk.php3 xine pour mandrake].
Etablissez un lien entre votre lecteur (chez moi /dev/hdb, car j'ai un lecteur de DVD atapi (IDE), mais ce pourrait être /dev/scd0 si vous avez un lecteur SCSI) et /dev/dvd :
Vous devez aussi donner les droits en lecture/écriture sur ce périphérique a vos utilisateurs de xine : reportez vous à [../admin/permissions.php3 cet article].
Nous allons installer Xine (ainsi que les programmes pour piloter la carte em8300) dans le répertoire /usr/local.
Le répertoire /usr/local/bin doit donc être dans votre chemin de recherche (PATH) et de plus, /usr/local/lib doit se trouver dans les librairies chargées par défaut.
Ajoutez la ligne :
dans ~/.bashrc et (passez en root) la ligne :
dans /etc/ld.so.conf, puis tapez : /sbin/ldconfig (afin de faire prendre en compte les librairies de /usr/local/lib au système).
"Bon, c'est bien joli tout cela, mais la lecture de dvd sur mon PII 350 est saccadée et c'est pour cela que j'ai acheté une carte dxr3 !"
Et bien, c'est pour cela qu'une équipe de joyeux lurons a développé un driver pour votre carte accélératrice ! (enfin, la leur je pense...) Ce driver fonctionne avec toutes les cartes basées sur la puce em8300 (Creative Labs dxr3, Sigma Design Hollywood+, etc). Il est utilisable par Xine, et depuis la version 0.9.0 du 3/12/2001, par MPlayer.
L'installation et la configuration de ce driver est assez difficile, mais cela vaut le coup...
Il faut savoir que ce driver est développé sans l'aide des constructeurs de la puce em8300 ! Il est entièrement reverse-engineeré (admirez le franglais), c'est à dire que les développeurs ont observé le comportement du driver et de la carte sous Windows et en ont déduit comment programmer le driver pour Linux. C'est un travail long et difficile (mais que je (Jice) trouve très amusant ;)
Voyons comment j'ai installé cette carte chez moi. Avant toute chose, il faut que votre noyau soit compilé avec le support I2C (CONFIG_I2C = Y ou M) et I2C bit-banging interfaces (CONFIG_I2C_ALGOBIT = Y ou M), ce qui est le cas des noyaux pour les distributions récentes (Mandrake 8, etc.)
Important : sachez que par défaut le driver active la sortie télé de la carte MPEG-2 ; pour afficher la video sur le moniteur (on parle alors de mode "overlay"), il faut suivre ces recommandations.
Créons les périphériques à travers lesquels nous accéderons à la carte :
Et pour que tout le monde (et pas seulement root) puisse se servir de la carte de décompression (et donc de xine pour dxr3) éditez /etc/security/console.perms et ajoutez-y :
relancez le serveur X en tapant CTRL+ALT+BACKSPACE.
Et voilà ! Tout le monde peut utiliser votre carte de décompression.
Il vous faut le package des drivers em8300 (http://dxr3.sourceforge.net). Prenez la dernière version sur http://sourceforge.net/project/showfiles.php?group_id=5165 : ce ne sera pas pire ! A la rédaction de cet article les drivers sont en version 0.9.0 ; ils ne contiennent plus de patch pour Xine car celui-ci est intégré à Xine depuis xine-5.0.
Remarque : pour que les étapes de compilation passent chez moi, j'ai dû copier le fichier em8300-0.9.0/include/linux/em8300.h vers /usr/src/linux-2.4.8/include/linux/em8300.h
Passons à l'installation :
Et c'est tout ? Hé bien oui, sauf si vous aviez installé Xine auparavant : il faut le recompiler (seulement la partie xine-lib) : il va détecter la librairie dxr3 tout seul et se compiler avec le plugin dxr3. Placez-vous dans le répertoire de Xine :
Et voilà !
Et c'est tout ? Non ! Maintenant il faut charger les modules (=drivers). Heureusement deux scripts se chargent de cela pour nous : ldm pour le chargement et rmm pour le déchargement. Mais avant de les charger, il faut les compiler (avant toute chose, les sources de votre noyau doivent être installées et configurées, sinon vous aurez un message d'erreur). Placez-vous dans le répertoire em8300-0.9.0/modules :
Ensuite on charge les modules (pour l'instant, ce n'est qu'un test) :
Pour que la carte de décompression fonctionne, il faut programmer son processeur em8300. Cela se fait en chargeant dedans un programme nommé le "microcode" (programme en langage machine correspondant au processeur em8300 de la carte).
Pour récupérer ce programme, montez la disquette ou le CD sur laquelle se trouvent les drivers Windows (ou téléchargez la dernière version des drivers) et trouvez le fichier qui s'appelle rmquasar.vx_ (si vous avez une carte Hollywood+) ou enc2dev.vx_Â (si vous avez une carte dxr3). Ces fichiers sont peut-être dans un zip ou un autre type de fichier : à vous de le trouver ; avec ma carte Hollywood+ le fichier est à la racine de la disquette.
Il faut décompresser ce fichier :
puis récupérer le microcode :
Note : il peut y avoir 2 ou 3 microcodes, selon votre carte et/ou la version des drivers. C'est normal.
Ensuite il faut charger le microcode dans la carte, et pour ce :
Note (1) : à ce moment le "vga passthrough" (le càble qui relie votre carte vidéo à la carte MPEG-2) peut cesser de fonctionner (ce n'est pas le cas chez moi... : ce problème semble ne plus exister (?)). Si cela vous arrive, il n'y a pas encore d'autre solution que de rebrancher votre moniteur directement sur la carte video plutôt que sur la carte de décompression.
C'est parfait. Le premier problème est qu'il y a (comme vous l'avez peut-être remarqué) plusieurs microcodes, alors lequel choisir ? Réponse : en essayant ! Les développeurs n'ont pas encore trouvé lequel choisir. Ce sera à vous de le faire. Chez moi tous les microcode semblent fonctionner de la même manière (en fait, après de multiple expérience, il semble que seul l'un d'eux permette de faire fonctionner correctement le mode 'overlay' : affichage à l'écran plutot que sur la télé), mais ce ne sera peut-être pas le cas chez vous.
Note de Jice : chez moi, le microcode permettant de faire fonctionner correctement l'overlay est microcode2.bin.
Voilà comment faire pour choisir un bon microcode :
A ce point, vous avez identifié un microcode qui fonctionne, mais les couleurs ne sont probablement pas les bonnes : c'est parce que nous n'avons pas passé les bons paramètres aux modules que nous avons chargés.
Note de Jice : si vous utilisez uniquement l'overlay, les modules fonctionnent sans aucun paramètre, et avec les bonnes couleurs. Vous pouvez donc sauter cette étape si vous ne désirez pas utiliser la sortie télé de votre carte MPEG-2.
Editez d'abord ~/.xine/config et modifier les lignes:
Pour qu'elles deviennent :
Si ces lignes n'existent pas : ajoutez-les !
Puis, éditez le fichier em8300-0.9.0/modules/ldm :
(ça c'est celui qui marche chez moi) Pour trouver les paramêtres qui vont bien, il va vous falloir une série et './rmm', './ldm'. Voici par quoi remplacer les lignes en gras pour que les couleurs soient bonnes :
 ou
 ou
 ou
Voilà comment procéder :
C'est très fastidieux, mais au bout d'un moment, on finit par y arriver !
Ca y est vous avez trouver les bons paramètres pour charger les modules ?
Nous allons automatiser leur chargement au démarrage de la machine. Créez le fichier /etc/rc.d/init.d/em8300 (l'emplacement correspond à une Mandrake/RedHat) :
#!/bin/sh case $1 in exit 0 |
Copiez ldm, rmm et microcode_upload.pl vers /usr/local/bin et remplacez modprobe xxxxx.o par modprobe xxxxx et ajoutez PATH=$PATH:/sbin à chacun de ces fichiers (ldm et rmm). Ils doivent ressembler à (avec vos paramètres) :
#!/bin/sh PATH=$PATH:/sbin:/usr/sbin modprobe i2c-algo-bit insmod eeprom |
et :
#!/bin/sh PATH=$PATH:/sbin:/usr/sbin fuser -k /dev/em8300 |
puis, tapez :
Si vous n'avez pas chkconfig, ajoutez des liens S* vers le script dans les répertoires correspondant aux runlevels 3 et 5 (en général /etc/rc.d/rc.3 et rc.5), et des liens K* dans les runlevels 0 et 6 si votre système est "sysV compliant" ;)
Bref, si vous n'avez pas ces répertoires, débrouillez vous simplement pour que /usr/local/bin/ldm soit lancé au démarrage de votre machine et éventuellement /usr/local/bin/rmm quand vous éteignez votre machine.
Lorsque vous avez installé les drivers em8300, un programme (dhc) a été installé dans /usr/local/bin, ce programme permet
N'hésitez pas à l'utiliser : il est très pratique et simplissime d'emploi.
Un autre programme a été installé : dxr3view. Il permet d'utiliser, tester et régler l'overlay de la carte (i.e. affichage sur le moniteur).
Normalement l'affichage se fait correctement dans la fenêtre dxr3view.
Lorsque la souris est sur cette fenêtre, un appui sur la touche 't' affiche un menu (mémorisez bien cette touche) qui vous permet de passer en plein écran. Mais surtout ne le faites pas avant d'avoir lu la suite : pour repassez en mode 'fenêtré' il faut appuyer sur 't' , puis 'flêche bas', puis 'entrée'.
Mémorisez bien cette séquence de touche avant d'essayer : sinon, vous n'avez plus d'écran : il faudra débrancher le cable 'VGA PASSTHROUGH' !
Par défaut, le driver dxr3 (nom du driver
em8300 de Xine) affiche la video sur la sortie télé de la carte MPEG-2. Si vous désirez afficher la video sur votre moniteur, il faut activer le mode nommé "overlay".
Depuis la version 0.8.1 des drivers em8300, ce mode overlay fonctionne assez correctement, mis à part un bug de xine dans l'initialisation de l'overlay ; nous allons voir ci-dessous un truc pour contourner ce bug.
Comment ça marche ? C'est relativement simple.
Tous les plugins fonctionnent bien avec l'overlay, même dvdnav (navigation dans les menus des DVD), sauf que l'affichage des menus est un peu décalé, rien de grave en somme.
Voilà, bon film !
L'installation est somme toute triviale : on récupère sur: http://xine.sourceforge.net les packages xine-lib et xine-ui.
Note (1) : à l'heure ou j'écris ces lignes (17/12/2001) la version 0.9.7 de xine est sortie ; Xine supporte directement les cartes à base de em8300 (style : dxr3 ou Hollywood+) à partir de la version 0.5.3. Il n'y a plus besoin de patcher Xine.
On compile les sources, et on installe Xine dans /usr/local :
Et voilà ! Xine est compilé et installé ! Les fichiers de Xine sont dans /usr/local/bin pour les exécutables, /usr/local/lib pour les librairies, et /usr/local/lib/xine pour les plugins de Xine.
Nous allons maintenant le tester. Munissez-vous d'un DVD non crypté et mettez le dans votre lecteur de DVD.
Lancez xine :
si a ce moment vous vous faites abreuver d'injures du type :
input_dvd: unable to open raw dvd drive (/dev/rdvd): Permission denied
ce n'est pas grave (moquez-vous en). Par contre si vous avez :
ou :
C'est que /usr/local/bin n'est pas dans votre chemin de recherche (PATH) et/ou que /usr/local/lib n'est pas dans les librairies chargées par défaut.
[#usr_local Relisez les préparatifs], ou tapez :
pour lancer xine.
Pour spécifier le driver video, vous pouvez lancer xine avec l'option -V (ex : xine -V dxr3), pour l'audio avec -A (ex : xine -A oss). Xine se "souvient" ensuite du driver video ou audio que vous avez choisi (il modifie son fichier de configuraiton ~/.xine/config).
Une sortie du type :
doit être considérée comme sans erreurs ! D'ailleurs, si vous voyez cela dans votre terminal, c'est que deux fenêtres viennent de s'ouvrir : une première, nommée xine video output et l'autre représentant un lecteur de DVD. Insérez un DVD video (non crypté) dans votre lecteur, puis cliquez sur le le bouton [dvd], dans la fenêtre du lecteur de DVD ; vous devez voir apparaître :
ou quelque chose de ce genre.
C'est parfait : ça veut dire que Xine a bien reconnu que vous aviez un DVD dans votre lecteur et qu'il veut bien le jouer. Appuyez sur le bouton "play" (la petite flèche ;-). Et hop, miracle, ça marche. Appuyez sur le bouton juste à gauche de la croix (en haut à droite) et hop, vous passez en plein écran. Un clic droit sur la fenêtre de vidualisation et le lecteur de dvd disparaît, vous laissant en plein écran. Un autre clic droit et le lecteur réapparaît. C'est simplissime. Pour choisir la bande son et/ou les sous-titres, il faut cliquer sur les flèches : celles de "SUB" pour les sous-titres (off par défaut) et celles de "AUD" pour la bande son.
Et si ça ne marche pas ?
[#preparatifs Et si vous refaisiez tout par le menu ?]
Le problème des DVD c'est que la plupart sont encryptés (via CSS), sous prétexte d'en empêcher la copie. Cela est faux : rien ne vous empêche de copier tel quel un DVD crypté, le décryptage s'effectuant lors de la lecture pour les DVD (c'est un peu comme si vous enregistriez une K7 vidéo de Canal+ en crypté et que vous décryptiez lors de la lecture). Ceci dit, vu me prix d'un DVD-RAM, vous feriez mieux d'achetez le DVD original !
En fait, le cryptage permet aux multinationales de verrouiller le marché, et - accessoirement - de toucher des royalties sur tout lecteur de DVD (de salon, ou tout logiciel permettant de les lire).
(C'était la séquence "politique" de cet article :-)
Dans les faits, le cryptage empêche la lecture des DVD video par notre OS favori. Chaque problème a sa solution : pour nous c'est xine_d4d et son plugin (basé sur DeCSS, le décrypteur de DVD le plus contesté de la planète).
Téléchargez le package xine_d4d_plugin-0.3.0.tar.gz (ou une version plus récente) sur le site de captain css.
Note : (21/12/2001) ce site est tombé. Cherchez "captain_css " sur google et vous devriez trouver sans problème.
Procédons à l'installation :
That's all folks. Relancez Xine : maintenant il lit les dvd cryptés, mais pour cela il faut cliquer sur [d4d] au lieu de [dvd] dans la fenêtre de Xine (le mieux est de toujours cliquer sur [d4d], puisque ce plugin lit aussi les DVD non cryptés).
Et voilà !
Lire des DVD, c'est bien. Mais utiliser les parties interactives des DVD (menus, etc.), c'est bien mieux ! C'est ce que propose ce plugin.
Tout d'abord, il faut installer la librairie libdvdread dont on trouve la dernière version sur http://www.dtek.chalmers.se/groups/dvd/downloads.shtml (ce lien est parfois indisponible, réessayez plus tard) :
Ensuite, récupérez le plugin xine-dvdnav sur : http://dvd.sourceforge.net/xine-dvdnav.shtml.
Remarquez que ce plugin lit aussi les DVD cryptés (mais il semble moins stable que xine_d4d). Actuellement le support des menus fonctionne assez bien, malgré des décalages en plein écran avec la carte de décompression em8300.
J'utilise actuellement la version 0.9.5.beta (en général la version de ce plugin correspond à la version de Xine) trouvée sur http://sourceforge.net/project/showfiles.php?group_id=31346&release_id=52555.
Récupérez le package, puis décompressez-le et installez-le comme d'habitude :
Vous pouvez également essayer la version CVS (i.e. la toute dernière version, telle que les développeurs l'ont chez eux).
La version que j'ai testée est la version CVS du 10/09/2001. Pour cela, il faut que les outils CVS soient installés sur votre machine (sur une Mandrake 8 Freq 2, le paquetage s'appelle : cvs-1.11-5mdk.i586.rpm). On récupère le plugin par :
Puis on l'installe par :
On accède au menu des DVD en cliquant sur [NAV] dans la barre de boutons de Xine (attention, si vous avez cliqué sur [dvd] ou [d4d] avant, vous ne verrez rien changer : il faut vider la liste de lecture (playing-list) de xine en cliquant sur l'icone qui ne ressemble à "rien" (la première icône à droite des icones des plugins comme [dvd]) puis sur l'icone 'poubelle' dans la boîte de dialogue "Playlist editor" qui s'ouvre.
Résumé des étapes pour les utilisateurs avancés... et les autres ;)
em8300 (http://dxr3.sourceforge.net)
(ou trouble shooting)
Je placerai ici les réponses aux problèmes les plus courants. Envoyez-nous vos questions, et si elles sont pertinentes, elles trouveront leur place ici.
Si vous n'entendez pas le DVD qui est en train de se jouer, peut-être n'utilisez-vous pas le bon plugin de sortie audio ?
Essayez de lancer Xine avec l'option -A, par exemple :
xine -A oss
xine -A esd
xine -A alsa
etc. (voir xine -h pour les options disponibles chez vous)
Si vous n'avez pas d'image mais que vous avez le son, cela signifie que par défaut le plugin de sortie video de Xine est mauvais. Cela peut s'arranger. Demandez à Xine de vous afficher la liste des plugins video qu'il supporte :
# xine --help | grep -A 2 -- "--video-driver"
-V, --video-driver <drv> Sélection du pilote vidéo par nom. Pilotes disponibles : aadxr3 dxr3 xv SyncFB raw opengl xshm none xxmc sdl fb xvmc
Essayez alors de lancer Xine en changeant de plugin video, par exemple :
# xine -V xshm
Essayez les tous un par un pour en trouver un qui fonctionne. A priori, les meilleurs plugins sont : dxr3 (mais il faut une carte de décompression), vidix, xv, puis les autres. Essayez les dans cet ordre.
Si vous n'avez toujours pas d'image sur votre moniteur avec une carte de décompression em8300, lisez bien le paragraphe "utilisation de l'overlay".
@ Retour à la rubrique Logiciels
@ Retour à la rubrique Matériel
© 01/03/2001 Frédéric Bonnaud, Jean-Christophe Cardot
![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 3.0 : http://creativecommons.org/licenses/by-sa/3.0/ |