Auszug aus der Linux-Dokumentation:
Moderne CDROM-Laufwerke können sehr hohe Abtastgeschwindigkeiten erreichen. Einige können jedoch auch ihre Geschwindigkeit reduzieren. Es gibt mehrere Gründe, dies zu tun:
Die Lesegeschwindigkeit eines IDE-CD-Laufwerkes kann mit hdparm
oder einem Programm namens setcd
verringert werden. Das geht
so:
hdparm -E <Geschwindigkeit>
<CD-ROM-Device>
setcd -x <Geschwindigkeit>
<CD-ROM-Device>
Du kannst auch folgendes probieren:
echo current_speed:4 >
/proc/ide/[CDROM-Device]/settings
Aber dafür brauchst du Root-Privilegien. Der folgende Befehl könnte ebenfalls helfen:
echo file_readahead:2000000 >
/proc/ide/[CDROM-Device]/settings
Dies setzt einen 2MB Lesepuffer für die Daten, was sich bei zerkratzten CDs als nützlich erweist. Wenn du die Größe zu hoch wählst, dann wird das Laufwerk ständig beschleunigen und abbremsen und dadurch die Geschwindigkeit dramatisch verringern. Es ist auch empfehlenswert, das CD-ROM Laufwerk via hdparm auf performantere Werte einzustellen:
hdparm -d1 -a8 -u1 <CDROM-Device>
Dies aktiviert den DMA-Zugriff, Vorauslesen und IRQ-Unmasking
(genauere Details dazu findest du in der hdparm
-Manpage)
Bitte schau dir "/proc/ide/[CDROM-Device]/settings
" an, um
das CD-ROM feineinzustellen.
SCSI-Laufwerke kennen keine einheitliche Schnittstelle zum Setzen dieser Werte (oder kennst du eine? Dann sag sie uns!) Es gibt ein Tool, das mit Plextor-SCSI-Laufwerken funktioniert.
FreeBSD:
Speed: cdcontrol [-f device] speed [speed]
DMA: sysctl hw.ata.atapi_dma=1
Bitte schau in der man-Page nach, wenn du eine Auflistung aller verfügbaren Optionen willst. Die Syntax bei einer normalen Digital Versatile Disc (DVD) sieht wie folgt aus:
mplayer dvd://<track> [-dvd-device <Gerät>]
Beispiel: mplayer dvd://1 -dvd-device /dev/hdc
Das Standard-DVD-Gerät ist /dev/dvd
. Wenn das bei dir
anders ist, so erstelle einen symbolischen Link auf das richtige Gerät,
oder gib es auf der Kommandozeile mit der Option -dvd-device
an.
MPlayer benutzt libdvdread
und libdvdcss
für die DVD Entschlüsselung und Wiedergabe. Diese beiden Bibliotheken
sind im libmpdvdkit2/
-Unterverzeichnis enthalten und müssen
nicht separat installiert werden. Wir haben uns dazu entschlossen, da wir einen
Fehler in der libdvdread
beheben mussten und einen Patch
hinzufügt haben, welcher Caching-Support für gecrackte
CSS-Keys für libdvdcss
ermöglicht. Dies führt
zu einer Geschwindigkeitssteigerung, da MPlayer nicht vor jeder
Wiedergabe die Verschlüsselung erneut knacken muss.
MPlayer kann jedoch auch die systemweiten libdvdread
-
und libdvdcss
-Bibliotheken verwenden. Diese Lösung wird
jedoch aus oben den oben genannten Gründen nicht empfohlen.
Ausßerdem kann es zu Fehlern, Inkompatibilitäten zwischen den
Bibliotheken und niedriger Geschwindigkeit führen.
An einer Unterstützung für DVD-Navigation via dvdnav
wird gearbeitet. Sie ist jedoch noch nicht vollendet und wird momentan nicht
gewartet. Wer weiß - vielleicht lässt sie sich sogar
compilieren.
Nützlich, wenn du verschlüsselte VOBs von der Festplatte abspielen
willst. Kompiliere und installiere libcss 0.0.1 (nicht neuer). Wenn
MPlayer sie nicht findet, dann benutze die Option -csslib
/pfad/zu/libcss.so
. Um diese Bibliothek zu benutzen musst du root-Rechte
haben, das SUID-Bit für die MPlayer-Programmdatei setzen oder den
fibmap_mplayer-Wrapper benutzen, der das SUID-Bit gesetzt hat.
DVDs benutzen alle 2048 Bytes/Sektor mit ECC/CRC. Meistens beinhalten sie ein UDF-Dateisystem in einem einzigen Track. Dieses Dateisystem enthält mehrere Dateien (kleine .IFO- und .BUK-Dateien sowie die großen (1GB) .VOB-Dateien). Sie sind echte Dateien und kännen von einem in's Dateisystem eingehängten Dateisystem einer nicht verschläusselten DVD abgespielt oder kopiert werden.
Die .IFO-Dateien enthalten Filmnavigationsinformationen (z.B. Kapitel, Titel, verschiedene Kameraeinstellungen sofern vorhanden, Tabelle mit den Sprachen etc.) und werden benätigt, um den Inhalt der .VOB-Dateien (den eigentlichen Film) lesen und interpretieren zu können. Die .BUK-Dateien sind Backups der .IFO-Dateien. Sie benutzen ausschließlich Sektornummern zur Adressierung, sodass man zur DVD-Navigation das direkte Ansprechen einzelner Sektoren der DVD implementieren muss. .IFOs werden ebenfalls benätigt, um den Inhalt entschlässeln zu kännen.
Aus diesem Grund braucht die alte DVD-Unterstützung ein in den Dateibaum eingehängtes DVD-Dateisystem sowie zusätzlich Zugriff auf das Device, um einzelne Sektoren der DVD lesen zu können. Leider musst du (unter Linux) root-Rechte besitzen, um die Sektorenadresse einer Datei zu erhalten. Du hast nun die folgenden Möglichkeiten:
libcss
so
sgemacht).libdvdread
0.9.x und libmpdvdkit2
machen das genau so (neue
DVD-Unterstützung). Der
UDF-Treiber des Kernels wird nicht benötigt, da diese Bibliotheken
ihren eigenen UDF-Dateisystemtreiber mitbringen. Die DVD muss nicht einmal
in den Dateibaum eingehängt sein, da direkt auf die Sektoren der
DVD zugegriffen wird.Manchmal hat ein Benutzer keinen Zugriff auf das Device (z.B.
/dev/dvd
). Deswegen haben die Autoren der libdvdread
einen Emulationsmodus spendiert, der eine Umsetzung zwischen Sektornummern und
Dateinamen/Offsets vornimmt. Damit wird Sektorzugriff auch bei in das
Dateisystem eingehängten DVDs und sogar bei auf die Festplatte kopierten
Dateien ermöglicht.
libdvdread
akzeptiert sogar Mountpoints anstelle von
Devicenamen. Dabei schaut sie in /proc/mounts
nach, um den
tatsächlichen Devicenamen für den Sektorzugriff herauszufinden.
Entwickelt wurde diees Verfahren für Solaris, da Solaris Devicenamen
dynamisch vergibt.
Der Standardname für das DVD-Device ist /dev/dvd
. Sollte
das bei dir anders sein, so erstelle einen symbolischen Link auf das richtige
Device, oder gib es beim Starten mit der Option -dvd-device
separat an.
Die Authentifizierung und Entschlüsselung der neuen
DVD-Unterstützung wird durch eine gepatchte libdvdcss
ermöglicht (siehe oben). Die Zugriffsmethoden können über die
Umgebungsvariable DVDCSS_METHOD
gewählt werden. Gäultige
Werte sind key
, disk
und title
.
Wird nichts angegeben, so versucht libdvdcss die folgenden Methoden (Standardwerte: key, title-Request):
~/.mplayer/DVDKeys
-Verzeichnis
gespeichert werden (das ist schnell ;).ioctl()
ausgelesen werden, auf der DVD
gespeichert ist. Der Gebietsschutz der RPC-2-konformen DVD-Laufwerke
wird in diesem Schritt realisiert. Bei manchen Laufwerken kann dieser
Schritt fehlschlagen. Wenn die Anforderung erfolgreich war, wird der
title key mit dem bus key und dem disk key entschlüsselt.RPC-1-konforme DVD-Laufwerke sind nur über den Gebietsschutz geschützt, den der Softwareplayer bietet. RPC-2-konforme Laufwerke haben dagegen einen Hardwareschutz, der es nur fünf mal erlaubt, den Gebietscode zu ändern. Es ist evtl. nötig oder empfehlenswert, dass du Firmware für dein Laufwerk zu finden, die nur einen RPC-1-Schutz implementiert. Firmwareupgrades können auf dieser Firmwareseite gefunden werden. Solltest du dort keine Firmware für dein Laufwerk finden, so kannst du mit dem region set tool den Gebietscode deines DVD-Laufwerks ändern (klappt nur unter Linux). Warnung: Du kannst nur fünf mal den Gebietscode ädnern.
Abspielen von Standard Video-CDs:
mplayer vcd://<Tracknummer> [-cdrom-device
<Gerät>]
Beispiele:
mplayer vcd://2 -cdrom-device /dev/hdc
Das Standard-CD-Rom-Laufwerk ist /dev/cdrom
. Falls das bei dir
nicht der Fall ist, erstelle einen symbolischen Link oder gib das richtige
Gerät mit -cdrom-device
auf der Kommandozeile an.
Anmerkung: Zumindest einige Plextor- und Toshiba-SCSI-CD-Rom-Laufwerke haben eine grauenvolle Geschwindkeit beim Lesen von VCDs. Das liegt daran, dass der ioctl-Aufruf CDROMREADRAW nicht vollständig implementiert ist. Wenn du Ahnung von der SCSI-Programmierung hast, dann hilf uns, generische Unterstützung für VCD auf SCSI-Laufwerken zu implementieren.
Bis dahin kannst du mit readvcd Daten von der VCD extrahieren und diese mit MPlayer abspielen.
Eine VCD besteht aus einem oder mehreren Spuren:
vcd://2
ausprobieren.Die ca. 600MB große sichtbare Datei auf der ersten Spur der
gemounteten VCD ist keine echte Datei! Es handelt sich dabei um ein sogenanntes
ISO-Gateway, das erstellt wurde, um Windows zu ermöglichen, solche Spuren
zu lesen (Windows erlaubt Anwendungen den direkten Zugtriff auf das Laufwekr
nämlich nicht). Unter Linux kannst du diese Datei weder einfach kopieren
noch einfach abspielen (sie enthalten dann nur Müll). Unter Windows geht
das, weil der ISO9660-Treiber den direkten Zugriff auf die Spur emuliert. Um
eine .DAT-Datei abzuspielen, brauchst du einen Kerneltreiber, der in der
Linux-Version von PowerDVD enthalten ist. Er enthält einen modifizierten
Treiber für das ISO9660-Dateisystem (vcdfs/isofs-2.4.X.o
),
der ebenfalls in der Lage ist, das direkte Auslesen über diese .DAT-Datei
zu emulieren. Wenn du die Disc mit diesem Treiber mountest, dann kannst du die
.DAT-Datei kopieren und sogar direkt mit MPlayer abspielen. Das wird
aber nicht mit dem Standard-ISO9660-Treiber funktionieren! Benutze dabei
-vcd
. Alternativen für's Kopieren einer VCD sind der neue cdfs-Kerneltreiber (der
nicht Teil des offiziellen Kernels ist), der CD-Sessions als Abbilder
anzeigt, und cdrdao, ein
Anwendung zum Bit-für-Bit-Grabben/Kopieren von CDs.