Utilisation des CD/DVDLecteurs CD/DVD
Les lecteurs modernes de CD-ROM peuvent atteindre de très hautes vitesses de lecture,
bien que certains soient capables de fonctionner à des vitesses réduites.
Il y a plusieurs raisons possibles pour vouloir changer cette vitesse :
Il a été signalé que des lecteurs peuvent commettre des erreurs de lecture à
haute vitesse, surtout avec des CD-ROM mal pressés. Réduire la vitesse peut alors
empêcher la perte de données dans ces circonstances.
Les lecteurs CD-ROM génèrent souvent un bruit assourdissant, qu'une vitesse réduite
peut contribuer à diminuer.
Linux
Vous pouvez réduire la vitesse des lecteurs de CD-ROM IDE avec hdparm,
setcd ou cdctl. Ils fonctionnent comme suit :
hdparm -E [vitesse][périph. cdrom]setcd -x [vitesse][périph. cdrom]cdctl -bS [vitesse]
Si vous utilisez l'émulation SCSI, vous pourriez avoir à appliquer les paramètres au
vrai périphérique IDE, et non au périphérique SCSI émulé.
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 (rayé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 précisémment votre lecteur CD-ROM.
Les lecteurs SCSI n'ont pas une manière uniforme de règler ces paramètres (Vous en
connaissez une ? Dites-la nous !). Il y a un outil qui fonctionne pour les
Lecteurs SCSI Plextor.
FreeBSDVitesse :
cdcontrol [-f périphérique] speed [vitesse]DMA :
sysctl hw.ata.atapi_dma=1
Lecture de DVD
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
Si vous avez compilé MPlayer avec la gestion de dvdnav, la
syntaxe est la même, sauf que que vous devrez utiliser dvdnav:// au lieu de dvd://.
MPlayer utilise libdvdread et
libdvdcss pour le décryptage et la lecture de DVD.
Ces deux bibliothèques sont contenues dans le sous-répertoire
libmpdvdkit2/ du répertoire
source de MPlayer, vous n'avez donc pas besoin de les
installer séparément. Vous pouvez aussi utiliser les versions de ces deux bibliothèques
qui sont peut-être déjà présentes sur votre système, mais cette solution n'est pas
recommandée, dans la mesure où elle peut provoquer des bogues, des incompatibilités
de bibliothèque et une vitesse réduite.
En cas de problème de décodage de DVD, essayez de désactiver supermount, ou
tous les outils de ce genre. Certains lecteurs RPC-2 peuvent aussi nécessiter
le réglage de leur code de région.
Structure d'un DVD
Les disques DVD utilisent tous des secteurs de 2048 octets par seconde avec ECC/CRC. Ils ont
généralement un système de fichier UDF sur une seule piste, qui contient divers fichiers (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 adresses des 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 le 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 donné que seul 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 par-dessus un système de fichier
monté ou même 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 méthode de certification et de décryptage pour le nouveau support des DVDs repose
sur l'utilisation d'un libdvdcss patché (voir plus haut).
Cette méthode peut être spécifiée par l'intermédiaire de la variable d'environnement DVDCSS_METHOD
qui peut être réglée sur key (clef), disk (disque) ou title (titre).
Si rien n'est spécifié, les méthodes suivantes sont essayées (par défaut : clef, demande de titre) :
clef bus : Cette clef est
négociée durant l'authentification (une longue suite
d'ioctls et d'échanges de diverses clefs cryptographiques) et elle est
utilisée 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.
clef mise en cache : MPlayer
cherche des titres de clef déjà cassée qui sont stockées dans le répertoire
~/.mplayer/DVDKeys (rapide ;).
clef : Si aucune clef n'est disponible dans le cache,
MPlayer essaye de décrypter la clef disque avec un ensemble de clefs incluses.
disque : Si la méthode clef échoue (ex : pas de clefs incluses),
MPlayer va casser la clef disque avec un algorithme de force brute. 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 clefs disque MPlayer
demande les clefs 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 clefs titre seront
cryptées avec les clefs bus et disque.
titre : Cette méthode est utilisée si
la demande de titre a échoué et ne repose sur aucun échange de clef avec
le lecteur DVD.
Il utilise une attaque crypto pour deviner la clef 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 faire une attaque statistique ou à cause des changements de clef
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 région sur un lecteur RPC2(lent).
Les lecteurs DVD RPC-1 ne protègent les réglages de protection de région
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é de mettre à niveau le firmware en RPC-1
si vous avez un lecteur DVD RPC-2.
Les mises à niveau firmware peuvent être trouvées sur cette
page de firmware.
Si il n'y a pas de mise à niveau de firmware disponible pour votre périphérique,
utilisez l'outil
de réglage de région pour changer le code de région de votre lecteur DVD (sous Linux).
Attention :
Vous ne pouvez changer la région 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
.
Les CD-ROM SCSI Plextor et certains Toshiba, entre autres, 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 en programmation SCSI, merci de
nous aider à implémenter un
support SCSI générique pour les VCDs.
En attendant vous pouvez extraire des données d'un VCD avec
readvcd
et lire le fichier obtenu avec MPlayer.
Structure d'un VCD
Un CD Video (VCD) est constitué de secteurs CD-ROM XA, c'est-à-dire CD-ROM mode 2
forme 1 et 2 pistes :
La première piste est en mode 2 forme 2 ce qui signifie qu'elle utilise une
correction d'erreur L2. La piste contient un système de fichiers ISO-9660 avec 2048
octets/secteur. Ce système de fichiers contient des informations VCD meta-donnée, aussi
bien que les images fixes souvent utilisées dans les menus. Les segments MPEG pour les menus
peuvent aussi être stockés dans la première piste, mais les données MPEG doivent être cassées
en séries de bouts de 150 secteurs. Le système de fichiers ISO-9660 peut contenir d'autres
fichiers ou programmes qui ne sont pas essentiels pour les
opérations VCD.
La seconde piste et les suivantes sont des pistes MPEG brutes (film) à 2324 octets/secteur,
contenant un paquet de données MPEG PS par secteur. Celles-ci sont formatées selon le mode 2 forme 1,
elles stockent donc plus de données par secteur au détriment de la correction d'erreur.
Il est aussi permis d'avoir des pistes CD-DA dans un VCD après la première piste.
Sur certains systèmes d'exploitation, il y a quelques astuces qui permettent de faire
apparaître ces pistes non-ISO-9660 dans un système de fichiers. Sur d'autres systèmes
d'exploitation comme GNU/Linux cela n'est pas le cas (pas encore).
Ici les données MPEG ne peuvent être montées.
Comme la plupart des films sont à l'intérieur de ce genre de piste, vous devrez
tout d'abord essayer .
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.
La définition du standard Video CD est appelée le
"Livre Blanc" Philips et n'est généralement pas disponible en ligne, étant donné
qu'elle doit être achetée auprès de Philips. Une information plus détaillée sur le Video
CD peut être trouvée dans la
documentation de vcdimager.
À 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 informations parasites).
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 d'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 fichier image et
cdrdao, une application
d'enregistrement/copie bit-à-bit).