4.2. Přehrávání DVD

Úplný seznam dostupných voleb naleznete v man stránce. Syntaxe pro standardní Digital Versatile Disc (DVD) je následující:

mplayer dvd://<track> [-dvd-device <DVD_zařízení>]

Příklad:

mplayer dvd://1 -dvd-device /dev/hdc

Pokud jste kompilovali MPlayer s podporou dvdnav, je syntaxe stejná až na to, že musíte používat dvdnav:// místo dvd://.

Výchozím DVD zařízením je /dev/dvd. Pokud se vaše nastavení liší, vytvořte symlink, nebo uveďte správné zařízení na příkazovém řádku pomocí volby -dvd-device.

Nový styl podpory DVD (mpdvdkit2).  MPlayer používá libdvdread a libdvdcss pro dekódování a přehrávání DVD. Tyto dvě knihovny jsou obsaženy v podadresáři libmpdvdkit2/ zdrojových kódů MPlayeru, nemusíte je tedy instalovat zvlášť Zvolili jsme tento způsob, protože jsme museli opravit chybu v libdvdread a aplikovat patch, který přidává podporu kešování zlomených CSS klíčů, na libdvdcss. To vedlo k výraznému zvýšení rychlosti, protože klíče nemusí být nyní lámány pokaždé před přehráváním.

MPlayer umí rovněž použít knihovny libdvdread a libdvdcss na systémové úrovni, ale toto řešení nedoporučujeme, protože může vést k chybám, nekompatibilitě knihovny a nižší rychlosti.

Poznámka

V případě problémů s dekódováním DVD, zkuste vypnout supermount a podobná udělátka. Některé RPC-2 mechaniky mohou rovněž vyžadovat nastavení region kódu.

Struktura DVD.  DVD disky mají 2048 bajtů na sektor s ECC/CRC. Obvykle mají souborový systém UDF v jediné stopě, obsahující různé soubory (malé .IFO a .BUK soubory a velké (1GB) .VOB soubory). Jsou to reálné soubory a mohou být kopírovány/přehrávány z připojeného systému souborů nešifrovaného DVD.

Soubory .IFO obsahují informace pro navigaci ve filmu (kapitola/titul/mapa úhlů, tabulka jazyků, atd) a jsou potřeba pro čtení a interpretaci obsahu .VOBu (filmu). Soubory .BUK jsou jejich zálohami. Všude používají sektory, takže musíte použít surové (RAW) adresování sektorů na disku, abyste se mohli navigovat v DVD, nebo dekryptovat jeho obsah.

Podpora DVD vyžaduje přímý sektorově-orientovaný přístup k zařízení. Naneštěstí musíte (pod Linuxem) být root, abyste dostali adresu sektoru souboru. To je důvod proč vůbec nepoužíváme modul souborového systému z kernelu a místo něj jej implementujeme v uživatelském prostoru. To zajišťují libdvdread 0.9.x a libmpdvdkit. UDF ovladač z kernelu není potřeba, jelikož tyto knihovny mají zabudován svůj vlastní. Rovněž nemusí být DVD přimountováno vzhledem k tomu že používáme pouze přímý (raw) přístup.

Někdy /dev/dvd nemůže být čteno uživateli, proto autoři libdvdread implementovali emulační vrstvu, která převádí sektorové adresy na soubor+offset za účelem emulace raw přístupu nad připojeným souborovým systémem nebo dokonce i hard diskem.

libdvdread dokonce přijme bod připojení (mountpoint) místo názvu zařízení pro přímý přístup a podívá se do /proc/mounts na jméno zařízení. To bylo vyvinuto pro Solaris, kde jsou názvy souborů dynamicky alokovány.

Výchozím DVD zařízením je /dev/dvd. Pokud se vaše nastavení liší, vytvořte symlink, nebo uveďte správné zařízení na příkazovém řádku pomocí volby -dvd-device.

DVD autentifikace.  Tato autentifikační a dekryptovací metoda nového stylu podpory DVD je zajišťována použitím patchované knihovny libdvdcss (viz výš). Metoda může být nastavena pomocí proměnné prostředí DVDCSS_METHOD nastavené na klíč, disk nebo titul.

Pokud není nastavena, zkouší se následující metody (výchozí: "key", "title request"):

  1. bus key: Tento klíč je dohodnut během autentifikace (dlouhá směs ioctl volání a výměn různých klíčů, kryptování) a je použit pro zašifrování klíčů titulu a disku než jsou odeslány přes nechráněnou sběrnici (jako prevence odposlechnutí). Klíč "bus key" je potřeba pro předdešifrování šifrovaného klíče disku.

  2. cached key: MPlayer se poohlédne po již zlomených klíčích titulu, které jsou uloženy v adresáři ~/.mplayer/DVDKeys (rychlé ;).

  3. key: Pokud není k dispozici "cached key", MPlayer zkusí rozšifrovat klíč disku pomocí sady přiložených klíčů přehrávače.

  4. disk: Pokud selže "key" metoda, (např. nejsou přiloženy klíče přehrávače), MPlayer crackne klíč disku algoritmem hrubé síly. Tento proces je náročný na CPU a vyžaduje 64 MB paměti (16M 32Bitových položek hash tabulky) pro uložení pracovních dat. Tato metoda by měla fungovat vždy (pomalé).

  5. title request: S pomocí klíče disku, požádá MPlayer o šifrované klíče titulu, které jsou ukryty ve skrytých sektorech pomocí ioctl(). Ochrana regiony v RPC-2 mechanikách je prováděna v tomto kroku a na některých mechanikách může selhat. Pokud uspěje, budou klíče titulu (title keys) dekryptovány pomocí klíče disku (disk key) a klíče sběrnice (bus key).

  6. title: Tato metoda je použita pokud selže požadavek na titul a nespoléhá se na výměnu klíčů s DVD mechanikou. Používá se zde kryptografický útok na přímé určení klíče (vyhledáváním opakujícího se vzoru v dešifrovaném obsahu VOB a rozhodnutím zda čistý text odpovídající prvním šifrovaným bajtům je pokračováním tohoto vzoru). Metoda je také známa jako "known plaintext attack" nebo "DeCSSPlus". V nemnoha případech může metoda selhat z důvodu nedostatku šifrovaných dat na disku pro provedení statistického útoku, nebo protože se klíč mění uprostřed titulu. Tato metoda je jediným způsobem jak dekryptovat DVD uložené na harddisku nebo DVD se špatným regionem na RPC2 mechanice (pomalé).

RPC-1 DVD mechaniky chrání nastavení regionu pouze softwarově. RPC-2 mechaniky mají hardwarovou ochranu umožňující pouze 5 změn. Může být potřeba/doporučeno provést upgrade firmwaru na RPC-1 pokud máte RPC-2 DVD mechaniku. Můžete zkusit najít upgrady firmwaru pro svou mechaniku na internetu, toto firmwarové fórum může být dobrým začátkem pro vaše hledání. Pokud pro vaši mechaniku není k dispozici upgrade firmwaru, použijte nástroj regionset pro nastavení region kódu vaší DVD mechaniky (pod Linux). Varování: Region můžete přenastavit pouze pětkrát.