Utilisation des CD/DVDLecteurs CD/DVD
Extrait de la documentation Linux :
Les lecteurs de CD-ROM peuvent atteindre de très hautes vitesses de lecture,
bien que certains soient capables de diminuer leur vitesse.
Il y a plusieurs raisons possibles pour changer cette vitesse:
Il a été signalé que des lecteurs peuvent commettre des erreurs fréquentes à
haute vitesse, surtout avec des CDs mal pressés. Diminuer la vitesse peut alors
empêcher ces erreurs.
Ces lecteurs 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
ou avec un programme nommé setcd. Ils fonctionnent comme cela:
hdparm -E [vitesse][périph. cdrom]setcd -x [vitesse][périph. cdrom]
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.
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 correctement votre lecteur CD-ROM.
Les lecteurs SCSI n'ont pas une manière uniforme de fixer ces paramètres (Vous en
connaissez une ? Dites-la nous!) Il y a un outil qui fonctionne pour les
Lecteurs SCSI Plextor.
FreeBSD:Vitesse: cdcontrol [-f périphérique] speed [vitesse]DMA: sysctl hw.ata.atapi_dma=1Lecture 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 .
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.
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
.
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):
clé bus: Cette clé est négociée durant la certification (un long mix
d'ioctls et d'échanges de clé variés, trucs de crypto) et est utilisé pour crypter le titre et les clés
disque avant de les envoyer sur un bus non protégé (pour empêcher les écoutes). La clé bus est requise
pour obtenir et décrypter les clés disque cryptées.
clé mise en cache: MPlayer
cherche une clé déjà cassée dans le répertoire
~/.mplayer/DVDKeys (rapide ;).
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.
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).
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.
titre: Cette méthode est utilisé 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.
Lecture de VCDs
Pour voir la liste complète des options disponibles, veuillez lire la page de man.
La syntaxe pour lire un Video 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 ou spécifiez le bon périphérique en ligne de commande avec l'option
.
Au moins les CD-ROM SCSI Plextor et certains Toshiba 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 dans la programmation SCSI, merci de
nous aider à implémenter un support SCSI générique pour
les VCDs.
À ce propos vous pouvez extraire des données d'un VCD avec
readvcd
et lire le fichier obtenu avec MPlayer.
Structure d'un VCDLes disques VCD contiennent une piste ou plus:
La première piste est une petite piste de donnée de 2048 octets/secteur, avec un système de fichier
iso9660, contenant généralement les lecteur de VCD Windows et peut-être d'autres infos(jpegs, texte, etc).
La seconde piste et les suivantes sont des pistes MPEG brutes (film) à 2324 octets/secteur, contenant
des paquets de données MPEG PS au lieu d'un système de fichier. Similaires à des pistes audio, elles
ne peuvent être montées (Avez-vous déjà monté un CD audio pour le
lire ?). Comme la plupart des films sont sur cette piste, vous devriez essayer
en premier.
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.
A 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 l'accès brut au périphérique du tout). Sous linux, vous ne pouvez pas copier ou lire de
telles pistes (elle contiennent des ordures). 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 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
à 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 fichiers image) et
cdrdao, une application d'enregistrement/copie
bit-a-bit).