3.6. DVD-Wiedergabe

Für eine komplette Liste der verfügbaren Optionen lies bitte die Manpage. Die Syntax für das Abspielen einer Standard-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-Wiedergabe und -Entschlüsselung. Diese beiden Bibliotheken sind im Unterverzeichnis MPlayer-Quelltextbaum, 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.

Anmerkung

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 tut 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 die Syntax derselbe, ausgenommen die Verwendung von dvdnav:// an Stelle von dvd://.

DVD-Entschlüsselung.  DVD-Entschlüsselung geschieht durch libdvdcss. Die dafür verwendete Methode kann durch Umgebungsvariable DVDCSS_METHOD festgelegt werden, siehe Manpage für Details.

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.