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 -dvd-device.
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.