mirror of https://github.com/mpv-player/mpv
323 lines
16 KiB
HTML
323 lines
16 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML>
|
|
|
|
<HEAD>
|
|
<TITLE>CD, DVD, VCD - MPlayer - The Movie Player for Linux</TITLE>
|
|
<LINK REL="stylesheet" TYPE="text/css" HREF="default.css">
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
</HEAD>
|
|
|
|
<BODY>
|
|
|
|
|
|
<H2><A NAME="drives">4.1 CD-ROM- und DVD-ROM-Laufwerke</A></H2>
|
|
|
|
<P>Auszug aus der Linux-Dokumentation:</P>
|
|
|
|
<P>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:</P>
|
|
|
|
<UL>
|
|
<LI>Es gibt Berichte, dass diese Laufwerke bei hohen Geschwindkeiten
|
|
Lesefehler erzeugen, vor allem bei schlecht gepressten CD-ROMs. Das
|
|
Herabsetzen der Geschwindigkeit kann in diesen Fällen die
|
|
Datenverluste verringern.</LI>
|
|
<LI>Viele CD-ROM Laufwerke erzeugen störend laute Geräusche, die
|
|
eine niedrigere Geschwindigkeit ebenfalls reduzieren kann.</LI>
|
|
</UL>
|
|
|
|
<P>Die Lesegeschwindigkeit eines IDE-CD-Laufwerkes kann mit <CODE>hdparm</CODE>
|
|
oder einem Programm namens <CODE>setcd</CODE> verringert werden. Das geht
|
|
so:</P>
|
|
|
|
<P> <CODE>hdparm -E <Geschwindigkeit>
|
|
<CD-ROM-Device></CODE></P>
|
|
|
|
<P> <CODE>setcd -x <Geschwindigkeit>
|
|
<CD-ROM-Device></CODE></P>
|
|
|
|
<P>Du kannst auch folgendes probieren:</P>
|
|
|
|
<P> <CODE>echo current_speed:4 >
|
|
/proc/ide/[CDROM-Device]/settings</CODE></P>
|
|
|
|
<P>Aber dafür brauchst du Root-Privilegien. Der folgende Befehl
|
|
könnte ebenfalls helfen:</P>
|
|
|
|
<P> <CODE>echo file_readahead:2000000 >
|
|
/proc/ide/[CDROM-Device]/settings</CODE></P>
|
|
|
|
<P>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:</P>
|
|
|
|
<P> <CODE>hdparm -d1 -a8 -u1 <CDROM-Device>
|
|
</CODE></P>
|
|
|
|
<P>Dies aktiviert den DMA-Zugriff, Vorauslesen und IRQ-Unmasking
|
|
(genauere Details dazu findest du in der <CODE>hdparm</CODE>-Manpage)</P>
|
|
|
|
<P>Bitte schau dir "<CODE>/proc/ide/[CDROM-Device]/settings</CODE>" an, um
|
|
das CD-ROM feineinzustellen.</P>
|
|
|
|
<P>SCSI-Laufwerke kennen keine einheitliche Schnittstelle zum Setzen dieser
|
|
Werte (oder kennst du eine? Dann sag sie uns!) Es gibt ein Tool, das mit <A
|
|
HREF="http://das.ist.org/~georg/">Plextor-SCSI-Laufwerken</A> funktioniert.</P>
|
|
|
|
<P>FreeBSD:</P>
|
|
|
|
<P> Speed: <CODE>cdcontrol [-f device] speed [speed]
|
|
</CODE></P>
|
|
<P> DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P>
|
|
|
|
|
|
<H2><A NAME="dvd">4.2 DVD-Wiedergabe</A></H2>
|
|
|
|
<P>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:</P>
|
|
|
|
<P><CODE>mplayer -dvd <track> [-dvd-device <Gerät>]</CODE></P>
|
|
|
|
<P>Beispiel: <CODE>mplayer -dvd 1 -dvd-device /dev/hdc</CODE></P>
|
|
|
|
<P>Das Standard-DVD-Gerät ist <CODE>/dev/dvd</CODE>. 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 <CODE>-dvd-device</CODE> an.
|
|
</P>
|
|
|
|
<P>MPlayer benutzt <CODE>libdvdread</CODE> und <CODE>libdvdcss</CODE>
|
|
für die DVD Entschlüsselung und Wiedergabe. Diese beiden Bibliotheken
|
|
sind im <CODE>libmpdvdkit2/</CODE>-Unterverzeichnis enthalten und müssen
|
|
nicht separat installiert werden. Wir haben uns dazu entschlossen, da wir einen
|
|
Fehler in der <CODE>libdvdread</CODE> beheben mussten und einen Patch
|
|
hinzufügt haben, welcher <B>Caching-Support für gecrackte
|
|
CSS-Keys</B> für <CODE>libdvdcss</CODE> ermöglicht. Dies führt
|
|
zu einer Geschwindigkeitssteigerung, da MPlayer nicht vor jeder
|
|
Wiedergabe die Verschlüsselung erneut knacken muss.</P>
|
|
|
|
<P>MPlayer kann jedoch auch die systemweiten <CODE>libdvdread</CODE>-
|
|
und <CODE>libdvdcss</CODE>-Bibliotheken verwenden. Diese Lösung wird
|
|
jedoch aus oben den oben genannten Gründen <B>nicht</B> empfohlen.
|
|
Ausßerdem kann es zu Fehlern, Inkompatibilitäten zwischen den
|
|
Bibliotheken und niedriger Geschwindigkeit führen.</P>
|
|
|
|
<H4>Unterstützung für DVD-Navigation</H4>
|
|
|
|
<P>An einer Unterstützung für DVD-Navigation via <CODE>dvdnav</CODE>
|
|
wird gearbeitet. Sie ist jedoch noch nicht vollendet und wird momentan nicht
|
|
gewartet. Wer weiß - vielleicht lässt sie sich sogar
|
|
compilieren.</P>
|
|
|
|
<H4>Alte DVD-Unterstützung - OPTIONAL</H4>
|
|
|
|
<P>Nützlich, wenn du verschlüsselte VOBs von der Festplatte abspielen
|
|
willst. Kompiliere und installiere <B>libcss</B> 0.0.1 (nicht neuer). Wenn
|
|
MPlayer sie nicht findet, dann benutze die Option <CODE>-csslib
|
|
/pfad/zu/libcss.so</CODE>. 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.</P>
|
|
|
|
<H4>DVD-Strukturen</H4>
|
|
|
|
<P>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.</P>
|
|
|
|
<P>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
|
|
<B>Sektornummern</B> 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.</P>
|
|
|
|
<P>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:</P>
|
|
|
|
<UL>
|
|
<LI>Sei root oder gib der mplayer-Programmdatei das SUID-Bit.</LI>
|
|
<LI>Lass MPlayer das Wrapper-Programm fibmap_mplayer ausführen,
|
|
welches das SUID-Bit gesetzt hat, um Zugriff auf die DVD zu bekommen
|
|
(wird bei der alten DVD-Unterstützung mit der <CODE>libcss</CODE> so
|
|
sgemacht).</LI>
|
|
<LI>Lass die Dateisystemtreiber des Kernels links liegen und programmiere
|
|
den Support dafür erneut im User-Space. <CODE>libdvdread</CODE>
|
|
0.9.x und <CODE>libmpdvdkit2</CODE> 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.</LI>
|
|
</UL>
|
|
|
|
<P>Manchmal hat ein Benutzer keinen Zugriff auf das Device (z.B.
|
|
<CODE>/dev/dvd</CODE>). Deswegen haben die Autoren der <CODE>libdvdread</CODE>
|
|
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.</P>
|
|
|
|
<P><CODE>libdvdread</CODE> akzeptiert sogar Mountpoints anstelle von
|
|
Devicenamen. Dabei schaut sie in <CODE>/proc/mounts</CODE> nach, um den
|
|
tatsächlichen Devicenamen für den Sektorzugriff herauszufinden.
|
|
Entwickelt wurde diees Verfahren für Solaris, da Solaris Devicenamen
|
|
dynamisch vergibt.</P>
|
|
|
|
<P>Der Standardname für das DVD-Device ist <CODE>/dev/dvd</CODE>. Sollte
|
|
das bei dir anders sein, so erstelle einen symbolischen Link auf das richtige
|
|
Device, oder gib es beim Starten mit der Option <CODE>-dvd-device</CODE>
|
|
separat an.
|
|
|
|
<H4>DVD-Authentifizierung</H4>
|
|
|
|
<P>Die Authentifizierung und Entschlüsselung der neuen
|
|
DVD-Unterstützung wird durch eine gepatchte <CODE>libdvdcss</CODE>
|
|
ermöglicht (siehe oben). Die Zugriffsmethoden können über die
|
|
Umgebungsvariable <CODE>DVDCSS_METHOD</CODE> gewählt werden. Gäultige
|
|
Werte sind <CODE>key</CODE>, <CODE>disk</CODE> und <CODE>title</CODE>.</P>
|
|
|
|
<P>Wird nichts angegeben, so versucht libdvdcss die folgenden Methoden
|
|
(Standardwerte: key, title-Request):</P>
|
|
|
|
<OL>
|
|
<LI><B>bus key:</B>Dieser Schlüssel wird während der
|
|
Authentifizierung (eine lange Mischung aus ioctls und verschiedenen
|
|
Schlüsselaustauschen, dient der Entschlüsselung) verhandelt.
|
|
Er wird benutzt, um die title- und disk-Schlüssel vor dem Versand
|
|
über den ungeschützten Systembus zu verschlüsseln und damit
|
|
ein Ablauschen der Schlüssel zu verhindern. Der bus key ist
|
|
erforderlich, um den verschlüsselten disk key zu erhalten und zu
|
|
entschlüsseln.</LI>
|
|
<LI><B>cached key:</B> MPlayer sucht nach bereits gecrackten
|
|
Schlüsseln, die im <CODE>~/.mplayer/DVDKeys</CODE>-Verzeichnis
|
|
gespeichert werden (das ist schnell ;).</LI>
|
|
<LI><B>key:</B> Falls kein cached key vorhanden ist, so versucht
|
|
MPlayer den disk key mit Hilfe einer Reihe von mitgelieferten
|
|
und eincompilierten player keys zu entschlüsseln.</LI>
|
|
<LI><B>disk:</B> Wenn die key-Methode fehlschlägt (z.B. wenn keine
|
|
Player-Schlüssel dabei sind), so versucht MPlayer, den
|
|
disk key mit Hilfe eines brute-force-Algorithmusses zu knacken. Dieser
|
|
Prozess belastet die CPU sehr und benötigt mindestens 64MB Speicher
|
|
(16M 32Bit breite Einträge in einer Hashtabelle), um temporäre
|
|
Werte zu speichern. Diese Methode sollte immer funktionieren, ist aber
|
|
langsam.</LI>
|
|
<LI><B>title request:</B> Mit dem disk key kann MPlayer den
|
|
verschlüsselten title key anfordern, der auf <I>versteckten
|
|
Sektoren</I>, die mit <CODE>ioctl()</CODE> 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.</LI>
|
|
<LI><B>title:</B> Diese Methode wird dann benutzt, wenn die Anforderung
|
|
für den title key fehlgeschlagen ist. Sie basiert nicht auf einem
|
|
Datenaustausch mit dem DVD-Laufwerk sondern benutzt einen kryptographischen
|
|
Angriff, der den title key versucht zu erraten. (Dabei wird versucht, sich
|
|
wiederholende Muster im entschlüsselten Inhalt der VOBs zu finden.
|
|
Geraten wird dann, dass die ersten verschlüsselten Bytes des dazu
|
|
passenden verschlüsselten Textes
|
|
eine Weiterführung dieser Muster sind.) Diese Methode ist auch als
|
|
"known plaintext attack" (Angriff bei bekanntem Klartext) oder "DeCSSPlus"
|
|
bekannt. In seltenen Fällen kann auch diese Methode fehlschlagen,
|
|
wenn nicht genug verschlüsselte Daten auf der DVD vorhanden sind,
|
|
um einen statistischen Angriff zu starten, oder weil sich der Schlüssel
|
|
mitten in einem Titel ändert. Diese Methode ist die
|
|
einzige Möglichkeit, den auf der Festplatte gespeicherten Inhalt einer
|
|
DVD zu entschlüsseln und bei RPC2-Laufwerken mit falschem Regionalcode
|
|
(langsam).</LI>
|
|
</OL>
|
|
|
|
<P>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
|
|
<A HREF="http://perso.club-internet.fr/farzeno/firmware/">Firmwareseite</A>
|
|
gefunden werden. Solltest du dort keine Firmware für dein Laufwerk finden,
|
|
so kannst du mit dem
|
|
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">
|
|
region set tool</A> den Gebietscode deines DVD-Laufwerks ändern (klappt
|
|
nur unter Linux). <B>Warnung:</B> Du kannst nur fünf mal den Gebietscode
|
|
ädnern.</P>
|
|
|
|
|
|
<H2><A NAME="vcd">4.3 VCD Wiedergabe</A></H2>
|
|
|
|
<P><B>Abspielen von Standard Video-CDs:</B></P>
|
|
|
|
<P><CODE>mplayer -vcd <Tracknummer> [-cdrom-device
|
|
<Gerät>]</CODE></P>
|
|
|
|
<P>Beispiele:<BR>
|
|
<CODE>mplayer -vcd 2 -cdrom-device /dev/hdc</CODE><BR></P>
|
|
|
|
<P>Das Standard-CD-Rom-Laufwerk ist <CODE>/dev/cdrom</CODE>. Falls das bei dir
|
|
nicht der Fall ist, erstelle einen symbolischen Link oder gib das richtige
|
|
Gerät mit <CODE>-cdrom-device</CODE> auf der Kommandozeile an.</P>
|
|
|
|
<P><B>Anmerkung</B>: 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
|
|
<A HREF="../tech/patches.txt">hilf uns</A>, generische Unterstützung
|
|
für VCD auf SCSI-Laufwerken zu implementieren.</P>
|
|
|
|
<P>Bis dahin kannst du mit
|
|
<A HREF="http://140.132.1.204/OS/Linux/packages/X/viewers/readvcd/">readvcd</A>
|
|
Daten von der VCD extrahieren und diese mit MPlayer abspielen.</P>
|
|
|
|
<H4>VCD-Struktur</H4>
|
|
|
|
<P>Eine VCD besteht aus einem oder mehreren Spuren:</P>
|
|
|
|
<UL>
|
|
<LI>Die erste Spur ist eine kleine Datenspur mit 2048 Bytes pro Sektor, die
|
|
ein ISO9660-Dateisystem enthält, auf dem meist ein VCD-Player
|
|
für Windows und eventuell auch andere Informationen (Bilder, Texte
|
|
etc.) gespeichert sind.</LI>
|
|
<LI>Die zweite Spur und alle folgenden sind MPEG-Spuren mit 2324 Bytes pro
|
|
Sektor, die ein MPEG-PS-Datenpaket pro Sektor anstelle des Dateisystems
|
|
enthalten. Ähnlich wie bei Audio-CDs können diese Spuren
|
|
<B>nicht gemountet</B> werden (hast du jemals eine Audio-CD gemountet,
|
|
um sie abzuspielen?). Da die meisten Filme sich auf der zweiten Spur
|
|
befinden, solltest du zuerst <CODE>-vcd 2</CODE> ausprobieren.</LI>
|
|
<LI>Es existieren auch VCDs ohne die erste Spur (nur eine Spur, überhaupt
|
|
kein Dateisystem). Diese lassen sich abspielen aber nicht mounten.</LI>
|
|
</UL>
|
|
|
|
<H4>Über .DAT-Dateien:</H4>
|
|
|
|
<P>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 (<CODE>vcdfs/isofs-2.4.X.o</CODE>),
|
|
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 <B>nicht</B> mit dem Standard-ISO9660-Treiber funktionieren! Benutze dabei
|
|
<CODE>-vcd</CODE>. Alternativen für's Kopieren einer VCD sind der neue <A
|
|
HREF="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</A>-Kerneltreiber (der
|
|
nicht Teil des offiziellen Kernels ist), der CD-<I>Sessions</I> als Abbilder
|
|
anzeigt, und <A HREF="http://cdrdao.sourceforge.net/">cdrdao</A>, ein
|
|
Anwendung zum Bit-für-Bit-Grabben/Kopieren von CDs.</P>
|
|
|
|
</BODY>
|
|
</HTML>
|