CD/DVD NutzungCD/DVD-Laufwerke
Moderne CD-ROM-Laufwerke können sehr hohe Geschwindigkeiten
erreichen. Jedoch sind einige CD-ROM-Laufwerke in der Lage, mit gedrosselter
Geschwindigkeit zu laufen. Es gibt verschiedene Gründe, in Erwägung zu ziehen,
die Geschwindig eines CD-ROM-Laufwerks zu ändern:
Es gibt Berichte über Lesefehler bei hohen Geschwindigkeiten, besonders
bei schlecht gepressten CD-ROMs. Reduzierung der Geschwindigkeit kann
unter diesen Umständen Datenverlust verhindern.
Viele CD-ROM-Laufwerke sind nervend laut. Eine geringere Geschwindigkeit kann
die Geräsche reduzieren.
Linux
Du kannst die Geschwindigkeit von IDE CD-ROM-Laufwerken mit
hdparm, setcd oder
cdctl reduzieren. Dies funktioniert wie folgt:
hdparm -E [Geschwindigkeit][CD-ROM-Gerät]setcd -x [Geschwindigkeit][CD-ROM-Gerät]cdctl -bS [Geschwindigkeit]
Wenn du SCSI-Emulation benuzt, musst du die Einstellungen unter Umständen am
echten IDE-Gerät vornehmen und nicht am emuliertem SCSI-Gerät.
Wenn du über root-Rechte verfügst, kann das folgende Kommando
ebenso helfen:
echo file_readahead:2000000 > /proc/ide/[CD-ROM-Gerät]/settings
Dies setzt die Menge der vorausgehend gelesenen Daten auf 2MB, was bei
verkratzten CD-ROMs hilft.
Wenn du dies zu hoch setzt, wird das Laufwerk dauernd anlaufen und wieder langsamer werden;
dies wird die Leistung dramtisch verschlechtern.
Es wird ebenso empfohlen, dass du dein CD-ROM-Laufwerk mit hdparm
konfigurierst:
hdparm -d1 -a8 -u1 [CD-ROM-Gerät]
Dies aktiviert DMA-Zugriff, Read-ahead (vorausgehendes Lesen) und IRQ-Unmasking
(lies die hdparm Manpage für eine ausführliche Erklärung).
Wir verweisen hier auf
"/proc/ide/[CD-ROM-Gerät]/settings"
für Feineinstellungen an deinem CD-ROM.
SCSI-Laufwerke haben kein einheitliches Verfahren, diese Parameter zu
setzen. (Kennst du einen? Berichte ihn uns!) Es gibt ein Tool, welches mit
Plextor SCSI-Laufwerken
funktioniert.
FreeBSD
Geschwindigkeit:
cdcontrol [-f Gerät] speed [Geschwindigkeit]
DMA:
sysctl hw.ata.atapi_dma=1DVD-Wiedergabe
Für eine komplette Liste der verfügbaren Optionen lies bitte die Manpage.
Der Syntax für eine Standard Digital Versatile Disc (DVD) lautet wie folgt:
mplayer dvd://<Track> [-dvd-device <Gerät>]
Beispiel:
mplayer dvd://1 -dvd-device /dev/hdc
Das Standard-DVD-Laufwerk ist /dev/dvd. Wenn deine
Installation davon abweicht, erstelle einen Symlink oder gib das genaue Gerät auf
der Kommandozeile an mit der Option .
MPlayer verwendet libdvdread und
libdvdcss zur DVD-Entschuüsselung und -Wiedergabe.
Diese beiden Bibliotheken sind im Unterverzeichnis
libmpdvdkit2 des
MPlayer-Quelltextbaums.
Du brauchst sie nicht separat zu installieren. Du kannst auch systemweite
Versionen der beiden Bibliotheken verwenden, diese wird jedoch
nicht empfohlen, da dies zu Bugs,
Bibliotheksinkompatibilitäten und geringerer Geschwindigkeit führen kann.
In Fällen von DVD-Dekodierungs-Problemen versuche Supermount oder solche Hilfen
zu deaktivieren. Einige RPC-2 Laufwerke können verlangen, dass ein Regionalcode gesetzt ist.
DVD-Struktur
DVDs haben 2048 Bytes pro Sektor mit ECC/CRC. Sie haben üblicherweise
ein UDF-Dateisystem auf einem einzigem Track, welcher verschiedene Dateien
(kleine .IFO und .BUK Dateien und große .VOB Dateien) enthält.
Sie sind echte Dateien und können von einem gemounteten Dateisystem einer
unentschlüsselten DVD kopiert/abgespielt werden.
Die .IFO-Dateien enthalten die Informationen zur Filmnavigation
(Kapitel/Titel/Blickwinkel, Sprachtabellen etc.) und werden benötigt,
um den .VOB Inhalt (den Film) zu lesen und zu interpretieren. Die .BUK-Dateien
sind Backups davon. Sie nutzen überall Sektoren,
so dass du Direktaddressierung von Sektoren auf dem
Datenträger benötigst, um DVD-Navigation zu implementieren oder den
Inhalt zu entschlüsseln.
DVD-Unterstützung benötigt rohen Sektor-basierten Zugriff auf das
Laufwerk. Leider musst du (unter Linux) root sein, um die Sektoraddresse einer
Datei zu erhalten. Das ist der Grund, warum wir nicht den Dateisystemtreiber
des Kernels nutzen sondern es im Userspace reimplementiert haben.
libdvdread 0.9.x und
libmpdvdkit tun dies.
Der UDF-Dateisystemtreiber des Kernels wird nicht benötigt, da sie bereits
einen eigenen eingebauten UDF-Dateisystem-Treiber haben.
Ebenso muss die DVD nicht gemountet werden, da der direkte Sektor-basierte Zugriff
genutzt wird.
Manchmal kann /dev/dvd nicht von Benutzern gelesen
werden, deshalb implementierten die Autoren von libdvdread
einen Emulations-Layer, welcher die Sektorenadressen in Dateinamen+Offsets
überträgt und Raw-Zugriff auf dem gemounteten Dateisystem oder auch
auf Festplatten emuliert.
libdvdread akzeptiert sogar Mountpoints an Stelle von
Gerätenamen für Raw-Zugriff und überprüft
/proc/mounts, um den Gerätenamen herauszufinden.
Es wurde für Solaris entwickelt, wo Gerätenamen dynamisch
zugewiesen werden.
Wenn du MPlayer mit dvdnav-Unterstützung compiliert hast,
bleibt der Syntax derselbe, ausgenommen die Verwendung von dvdnav:// an Stelle von dvd://.
DVD-Authentifizierung
Die Authentifizierung und Entschlüsslungsmethode der neuen DVD-Unterstützung
wird von einer gepatchten libdvdcss-Bibliothek vorgenommen
(siehe oben). Die Methode kann festgelegt werden durch die Umgebungsvariable
DVDCSS_METHOD, welche auf key, disk oder title gesetzt werden
kann.
Wenn nichts angegeben wird, werden zuerst folgende Methoden probiert
(Standard: key, title request):
bus key: Dieser Schlüssel
ist ausgehandelt zwichen der Authentifizierung (ein langer Mix aus ioctls und
verschiedenen Schlüsselaustauschen, Crypto-Zeug) und wird benutzt,
um den Titel-Schlüssel und den Datenträger-Schlüssel
vor dem Senden über den ungeschützten Bus
(um Abhören zu verhinden) zu entschlüsseln.
Der Busschlüssel wird benötigt, um den verschlüsselten
Datenträger-Schlüssel zu erhalten und vorzuentschlüsseln.
cached key: MPlayer
sucht nach bereits geknackten Titel-Schüsseln, welche im
~/.mplayer/DVDKeys Verzeichnis
gespeichert werden (schnell ;).
key: Wenn kein zwichengespeicherter
Schlüssel verfügbar ist, versucht MPlayer
den Datenträgerschlüssel mittels einer Reihe enthaltener
Player-Schlüssel zu entschlüsseln.
disk: Wenn die Schlüsselmethode fehlschlägt
(z.B. keine Player-Schlüssel enthalten sind), wird MPlayer
den Datenträgerschlüssel mittels eines Brute-Force-Algorithmus knacken.
Dieser Prozess ist sehr CPU-lastig und benötigt 64 MB
Arbeitsspeicher (16M 32Bit Hash-Tabelle), um die temporären
Daten zu speichern. Diese Methode sollte immer funktionieren (langsam).
title request: Mit dem
Datenträgerschlüssel fordert MPlayer
die verschlüsselten Titelschlüssel an, welche in
versteckten Sektoren mittels ioctl()
ausgelesen werden.
Der Regionschutz von RPC-2-Laufwerken erfolgt an dieser Stelle und kann auf solchen
Laufwerken fehlschlagen. Bei Erfolg werden die Titelschlüssel mit dem Bus- und
dem Datenträgerschlüssel entschlüsselt.
title: Diese Methode wird genutzt, wenn die
Titelanforderung fehlgeschlagen ist und keinen Schlüsselaustausch mit dem
DVD-Laufwerk nötig ist.
Die Methode nutzt Crypto-Attacken, um den Titelschlüssel direkt zu erraten
(durch das Finden von wiederholenden Mustern im entschlüsselten VOB-Inhalt
und dem Erraten, dass der zu den ersten entschlüsselten Bytes gehörende
Klartext eine Fortsetzung dieses Musters ist).
Die Methode ist bekannt als "known plaintext attack"
oder "DeCSSPlus". In einigen wenigen Fällen kann dies
fehlschlagen, da sich nicht genug verschlüsselte Daten auf dem
Datenträger befinden, um eine statistische Attacke durchzufüren, oder
weil der Schlüssel sich mitten im Titel ändert. Diese Methode ist der
einzige Weg, eine DVD zu entschlüsseln, die auf einer Festplatte gespeichert
ist oder auf einer DVD mit einer falschen Region auf einem
RPC2-Laufwerk (langsam).
RPC-1 DVD-Laufwerke schützen Regionseinstellunge nur durch Software.
RPC-2-Laufwerke haben einen Hardwareschutz, welcher nur 5 Änderungen
erlaubt. Es kann notwendig/empfehlenswert sein, die Firmware auf RPC-1
zu aktualisieren, wenn du ein RPC-2 DVD-Laufwerk hast.
Du kannst versuchen ein Firmwareupgrade für dein Laufwerk im Internet zu finden,
dieses Firmware-Forum
kann ein guter Ausgangspunkt für deine Suche sein.
Wenn es kein Firmwareupgrade für dein Laufwerk gibt, benutze das
regionset-Tool,
um den Regionscode deines DVD-Laufwerks (unter Linux) zu setzen.
Warnung: Du kannst nur 5 mal den Regioncode ändern.
VCD-Wiedergabe
Für eine komplette Liste an verfügbaren Optionen lies bitte die
Manpage. Der Syntax für eine Standard Video CD (VCS) lautet wie folgt:
mplayer vcd://<Track> [-cdrom-device <Gerät>]
Beispiel:
mplayer vcd://2 -cdrom-device /dev/hdc
Das Standard-VCD-Gerät ist /dev/cdrom. Wenn deine
Installation davon abweicht, erstelle einen Symlink oder gib das genaue Gerät auf
der Kommandozeile an mit der Option .
Mindenstens Plextor und einige SCSI-CD-ROM-Laufwerke von Toshiba haben eine
schreckliche VCD-Leseleistung. Das liegt daran, daß der
ioctl CDROMREADRAW für diese Laufwerke
nicht vollstaendig implementiert ist. Wenn du ein bisschen Fachwissen über
SCSI- Programmierung hast, hilf uns
bitte, allgemeine SCSI-Unterstützggung für VCDs zu implementieren.
Inzwischen kannst du die Daten von VCDs mit
readvcd
extrahieren und die ausgegebene Datei mit MPlayer
abspielen.
VCD-Struktur
Eine Video CD (VCD) besteht aus CD-ROM XA Sektoren, z.B. CD-ROM Mode 2
Form 1 und 2 Tracks:
Der erste Track ist im Format Mode 2 Form 2, was bedeutet, dass es
L2-Fehlerkorrektur benutzt. Der Track enthält ein ISO-9660 Dateisystem
mit 2048 Bytes/Sektor. Das Dateisystem enthält VCD Metadata-Informationen
ebenso wie Standbilder, welche oft in Menüs benutzt werden.
MPEG-Segmente für Menüs können auch im ersten Track gespeichert
werden, die MPEGs müssen aber in eine Serie von 150-Sektoren-Einheiten
gestückelt werden. Das ISO-9660 Dateisystem kann auch noch andere Dateien oder
Programme enthalten, welche nicht für VCD-Betrieb erforderlich sind.
Der zweite und die restlichen Tracks sind generelle rohe 2324 Bytes/Sektor
MPEG (Film) Tracks, welche ein MPEG-PS-Datenpaket pro Sektor enthalten.
Diese sind im Format Mode 2 Form 1, so dass sie mehr Daten pro Sektor speichern
können unter dem Verlust einiger Fehlerkorrektur. Es ist ebenso
gültig, CD-DA Tracks in einer VCD nach dem ersten Track zu haben.
Auf manchen Betriebssystemen gibt es ein paar Tricks, diese nicht-ISO-9660-Tracks
im Dateisystem erscheinen zu lassen. Auf anderen Systemen wie GNU/Linux ist
dies (noch) nicht der Fall. Hier können die MPEG-Daten
nicht gemountet werden. Da sich die meisten Filme
in einer solchen Art von Track befinden, solltest du zuerst versuchen.
Es existieren ebenso VCDs ohne einen ersten Track (einzelner Track und
überhaupt kein Dateisystem). Diese sind trotzudem abspielbar,
können aber nicht gemountet werden.
Die Definition des Video-CD-Standards wird Philips "White Book" genannt und ist
im Allgemeinen nicht online verfügbar, da es von Philips käuflich erworben werden
muss. Detailliertere Informationen über Video-CDs befindet sich in der
vcdimager- Documentation.
.DAT Dateien
Die ~600 MB Datei, die auf dem ersten Track einer gemounteten VCD sichtbar
ist, ist keine richtige Datei! Es ist ein sogenanntes ISO-Gateway, geschaffen,
um Windows den Zugriff auf solche Tracks zu geben (Windows erlaubt überhaupt
keine direkten Zugriffe auf das Laufwerk). Unter Linux kannst du solche Dateien
weder kopieren noch abspielen (sie enthalten Müll). Unter Windows ist dies
möglich, da Windows ISO9660-Treiber das direkte Lesen der Tracks in diesen
Dateien emuliert. Um eine .DAT Datei wiederzugeben, benötigst du einen
Kernel-Treiber, welcher in der Linux-Version von PowerDVD zu finden ist.
Es hat einen modifizierten ISO9660 Dateisystem-Treiber
(vcdfs/isofs-2.4.X.o), welcher in der Lage ist,
die rohen Tracks durch diese Schatten-.DAT-Dateien zu emulieren. Wenn du
den Datenträger mit deren Treiber mountest, kannst du die .DAT Dateien
kopieren und sogar mit MPlayer abspielen.
Dies wird jedoch nicht mit dem Standard-ISO9660-Treiber des Linux-Kernels
funktionieren! Benutze statt dessen . Alternativen
für das Kopieren von VCDs sind der neue Kernel-Treiber
cdfs
(nicht Bestandteil des offiziellen Kernels), welcher CD-Sessions
als Imagedateien darstellt, und
cdrdao,
ein Bit-für-Bit CD-Grabbing/Kopier-Programm.