5.2. Lecture de DVDs
Précédent | Chapitre 5. Utilisation des CD/DVD | Suivant

## 5.2. Lecture de DVDs

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

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

Nouvelle méthode de lecture DVD (mpdvdkit2). MPlayer utilise `libdvdread` et `libdvdcss` pour le décryptage et la lecture de DVD. Ces deux bibliothèques sont incluses dans le sous-répertoire `libmpdvdkit2/` du répertoire source de MPlayer, vous n'avez donc pas besoin de les installer séparément. Nous avons opté pour cette solution car nous devions corriger un bug de `libdvdread`, et appliquer un patch qui ajoute un cache pour les clés CSS cassées à `libdvdcss`. Le résultat est bien plus rapide car les clés n'ont pas à être cassées à chaque lecture.

MPlayer peut également utiliser les bibliothèques globales au système `libdvdread` et `libdvdcss` mais cette solution n'est pas recommandée, car elle peut provoquer des bogues, des incompatibilités de librairies, et une vitesse moins importante.

### Note

En cas de problème de décodage de DVD, essayez de désactiver supermount, et tout les outils de ce genre.

structure d'un DVD. Les disques DVD utilisent tous des secteurs de 2048 octets par secondes avec ECC/CRC. Ils ont généralement un système de fichier UDF sur une seule piste, qui contient des fichiers variés (des petits fichiers .IFO et .BUK et de gros (1Go) fichiers .VOB). Ce sont de véritables fichiers et ils peuvent être joués/copiés depuis le système de fichier monté d'un DVD non-crypté.

Les fichiers .IFO contiennent les infos de navigation dans le film (carte des chapitres/titres/angles, table des langues, etc) et sont requis pour lire et interpréter le contenu des .VOB (le film). Les fichiers .BUK sont des backups de ces fichiers. Ils utilisent des secteurs partout, donc vous avez besoin d'utiliser un adressage brut des secteurs sur le disque pour implémenter la navigation DVD. C'est également requis pour décrypter le contenu.

Le support DVD nécessite un accès brut aux secteurs du périphérique. Malheureusement vous devez (sous Linux) être root pour avoir accès aux secteurs d'un fichier. C'est pourquoi nous n'utilisons pas du tout le pilote de système de fichier du noyau, à la place nous l'avons réimplémenté en espace utilisateur. `libdvdread` 0.9.x et `libmpdvdkit` font cela. Le pilote pour système de fichier UDF du noyau n'est pas requis puisqu'ils ont déjà leur pilote UDF incorporé. De plus le DVD n'a pas besoin d'être monté tant que l'accès brut aux secteurs est utilisé.

Parfois `/dev/dvd` ne peut être lu par les utilisateurs, les auteurs de `libdvdread` ont donc implémenté une couche d'émulation qui transforme les adresses des secteurs en noms de fichier+offsets, pour émuler l'accès brut sur un système de fichier monté ou même sur un disque dur.

`libdvdread` accepte même le point de montage au lieu du nom de périphérique pour l'accès brut et regarde dans `/proc/mounts` pour obtenir le nom de périphérique. Il a été développé pour Solaris, où les noms de périphériques sont alloués dynamiquement.

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

Certification DVD. La nouvelle méthode de certification et de décryptage est fait par un `libdvdcss` patché (voir plus haut). La méthode peut être spécifiée avec la variable d'environnement `DVDCSS_METHOD` qui peut être initialisée à key, disk ou title.

Si rien n'est spécifié il essaie les méthodes suivantes (par défaut: clé, demande de titre):

1. clé bus: Cette clé est négociée durant l'authentification (une longue suite d'ioctls et d'échanges de diverses clefs cryptographiques) et est utilisé pour crypter le titre et la clef du disque avant de les envoyer sur un bus non protégé (pour empêcher les écoutes). La clef bus est nécessaire pour obtenir et pré-décrypter la clef disque cryptée.

2. clé mise en cache: MPlayer cherche une clé déjà cassée dans le répertoire `~/.mplayer/DVDKeys` (rapide ;).

3. clé: Si aucune clé n'est disponible dans le cache, MPlayer essaie de décrypter la clé disque avec un ensemble de clés incluses.

4. disque: Si la méthode clé échoue (ex: pas de clés incluses), MPlayer va casser la clé disque avec un algorithme brute force. Ce processus est intensif pour le CPU et requiert 60 Mo de mémoire (table de hachage 32Bit de 16M) pour stocker temporairement les données. Cette méthode devrait toujours fonctionner (lent).

5. demande de titre: Avec les clés disque MPlayer demande les clés titre cryptées, qui sont à l'intérieur de secteurs cachés en utilisant `ioctl()`. La protection de région des lecteurs RPC-2 devrait opérer à cette étape et devrait échouer sur ces lecteurs. Si elle réussit, les clés titre seront cryptées avec les clés bus et disque.

6. titre: Cette méthode est utilisée si la demande de titre a échoué et ne repose sur aucun échange de clé avec le lecteur DVD. Il utilise une attaque crypto pour deviner la clé titre directement (en trouvant un motif répété dans le contenu VOB décodé et en supposant que le texte en clair correspondant aux premiers octets cryptés est une continuation de ce motif). Cette méthode est également connue sous le nom de "known plaintext attack" ou "DeCSSPlus". Dans de rares cas cela peut échouer car il n'y a pas assez de données cryptées sur le disque pour pour faire une attaque statistique ou à cause des changements de clé au milieu du titre. C'est la seule façon de décrypter un DVD stocké sur le disque dur ou un DVD avec une mauvaise zone sur un lecteur RPC2 (lent).

Les lecteurs DVD RPC-1 ne protègent les réglages de protection de zone que de façon logicielle. Les lecteurs RPC-2 ont une protection matérielle qui ne permet que 5 changements. Il peut être requis/recommandé d'upgrader le firmware en RPC-1 si vous avez un lecteur DVD RPC-2. Les upgrades firmware peuvent être trouvées sur cette page de firmware. Si il n'y a pas d'upgrade de firmware disponible pour votre périphérique, utilisez l' outil de réglage de zone pour changer le code de zone de votre lecteur DVD (sous Linux). Attention: Vous ne pouvez régler la zone que 5 fois.

Précédent | Niveau supérieur | Suivant
5.1. Lecteurs CD/DVD | Sommaire | 5.3. Lecture de VCDs