mirror of
https://github.com/mpv-player/mpv
synced 2024-12-15 11:25:10 +00:00
f5513c3440
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11544 b3059339-0415-0410-9bf9-f77b7e298cf2
387 lines
17 KiB
XML
387 lines
17 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- synced with 1.9 -->
|
|
<chapter id="cd-dvd">
|
|
<title>Używanie CD/DVD</title>
|
|
|
|
<sect1 id="drives">
|
|
<title>Napędy CD/DVD</title>
|
|
<para>
|
|
Fragment dokumentacji Linuksa:
|
|
</para>
|
|
|
|
<para>
|
|
Nowoczesne napędy CD-ROM osiągają bardzo duże prędkości. Niektóre z nich są
|
|
dodatkowo zdolne do pracy przy zredukowanych prędkościach. Oto kilka powodów,
|
|
dla których powinniśmy zastanowić się czy nie należy zredukować prędkości
|
|
naszego napędu:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Istnieją doniesienia o błędach odczytu przy dużych prędkościach, szczególnie
|
|
podczas używania uszkodzonych bądź wadliwie wytłoczonych/nagranych płyt CD.
|
|
Redukcja prędkości odczytu może uchronić nas przed utratą danych w takich
|
|
przypadkach.
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
Wiele napędów CD jest dokuczliwie głośnych. Redukcja prędkości może zmniejszyć
|
|
natężenie hałasu.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Redukcję prędkości napędu CD z interfejsem IDE możemy uzystać korzystając z
|
|
<command>hdparm</command> bądź programu <command>setcd</command>. Działają one w
|
|
następujący sposób:
|
|
|
|
<screen>hdparm -E <replaceable>[prędkość]</replaceable> <replaceable>[urządzenie cdrom]</replaceable></screen>
|
|
<screen>setcd -x <replaceable>[prędkość]</replaceable> <replaceable>[urządzenie cdrom]</replaceable></screen>
|
|
</para>
|
|
|
|
<para>
|
|
Jeżeli masz uprawnienia roota, to pomóc może także następująca komenda:
|
|
<screen>echo file_readahead:2000000 > /proc/ide/<replaceable>[urządzenie cdrom]</replaceable>/settings</screen>
|
|
</para>
|
|
|
|
|
|
<para>
|
|
Ustawiamy w ten sposób wielkość bufora odczytu na 2MB, co pomaga przy odczycie
|
|
porysowanych płyt. Jeżeli ustawimy zbyt dużą wielkość tego bufora, napęd będzie
|
|
stale rozkręcał się i zwalniał, co spowoduje bardzo znaczny spadek wydajności.
|
|
Zaleca się również dostrojenie napędu CD-ROM przy użyciu
|
|
<command>hdparm</command>:
|
|
<screen>hdparm -d1 -a8 -u1 <replaceable>[urządzenie cdrom]</replaceable></screen>
|
|
</para>
|
|
|
|
<para>
|
|
Włączamy w ten sposób dostęp DMA do dysku, czytanie z wyprzedzeniem i
|
|
odmaskowanie IRQ (IRQ unmasking) (więcej przeczytasz na stronach man do
|
|
<command>hdparm</command>)
|
|
</para>
|
|
|
|
<para>
|
|
Proszę sprawdzić "<filename>/proc/ide/<replaceable>urządzenie
|
|
cdrom</replaceable>/settings"</filename>
|
|
dla dostrojenia swojego napędu CD-ROM.
|
|
</para>
|
|
|
|
<para>
|
|
Dla napędów SCSI nie istnieje jednolity sposób ustawiawiania tych parametrów
|
|
(jeżeli znasz jakiś to napisz nam o nim). Istnieje narzędzie które działa z
|
|
<ulink url="http://das.ist.org/~georg/">napędami SCSI Plextor</ulink>.
|
|
</para>
|
|
|
|
<para>FreeBSD:</para>
|
|
<para>Prędkość: <command>cdcontrol [-f <replaceable>device</replaceable>] speed <replaceable>speed</replaceable></command></para>
|
|
<para>DMA: <command>sysctl hw.ata.atapi_dma=1</command></para>
|
|
</sect1>
|
|
|
|
<sect1 id="dvd">
|
|
<title>Odtwarzanie DVD</title>
|
|
<para>
|
|
Aby poznać pełną listę dostępnych opcji, proszę przeczytać odpowiednie strony
|
|
man. Składnia dla standardowego DVD (Digital Versatile Disc) jest następująca:
|
|
<screen>mplayer dvd://<replaceable><ścieżka></replaceable> [-dvd-device <replaceable><urządzenie></replaceable>]</screen>
|
|
</para>
|
|
|
|
<para>
|
|
Przykład:
|
|
<screen>mplayer dvd://1 -dvd-device /dev/hdc</screen>
|
|
</para>
|
|
|
|
<para>
|
|
Domyślnym urządzeniem (device) DVD jest <filename>/dev/dvd</filename>. Jeżeli
|
|
Twoje ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie
|
|
urządzenie (device) w linii polecenia korzystając z opcji
|
|
<option>-dvd-device</option>.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title>Obsługa DVD - nowy sposób (mpdvdkit2)</title>
|
|
<para>
|
|
<application>MPlayer</application> używa <systemitem>libdvdread</systemitem>
|
|
oraz <systemitem>libdvdcss</systemitem> do dekodowania i odtwarzania DVD. Te
|
|
dwie biblioteki są zawarte w podkatalogu <filename class="directory">libmpdvdkit2/</filename>
|
|
w głównym drzewie katalogów <application>MPlayera</application>, nie trzeba
|
|
instalować ich osobno. Wybraliśmy tę opcję ponieważ musieliśmy poprawić błąd
|
|
<systemitem>libdvdread</systemitem> i zastosować łatkę (patch), która dodaje
|
|
obsługę <emphasis role="bold">buforowania złamanych kluczy CSS</emphasis> do
|
|
<systemitem>libdvdcss</systemitem>. Skutkuje to dużym wzrostem szybkości
|
|
ponieważ klucze nie muszą być łamane za każdym razem przed odtwarzaniem.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<note><para>
|
|
Jeśli występują problemy z dekodowaniem DVD, spróbuj wyłączyć supermount albo
|
|
inne tego typu usługi.
|
|
</para></note>
|
|
|
|
<para>
|
|
<application>MPlayer</application> potrafi także używać bibliotek systemowych
|
|
<systemitem>libdvdread</systemitem>
|
|
oraz <systemitem>libdvdcss</systemitem>, ale to rozwiązanie jest
|
|
<emphasis role="bold">nie</emphasis> zalecane, gdyż może powodować błędy,
|
|
niekompatybilności bibliotek oraz zmniejszenie prędkości.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title>Obsługa DVD - stary sposób - OPCJONALNE</title>
|
|
<para>
|
|
Użyteczne, jeżeli chcesz odtwarzać zakodowane pliki VOB z
|
|
<emphasis role="bold">twardego dysku</emphasis>.
|
|
W tym celu skompiluj i zainstaluj <emphasis role="bold">libcss</emphasis> 0.0.1
|
|
(nie nowsze) (Jeżeli MPlayer nie radzi sobie, użyj opcji
|
|
<option>-csslib /ścieżka/do/libcss.so</option>). Aby użyć tej metody musisz mieć
|
|
uprawnienia roota, binarka <application>MPlayer</application> musi miec suid lub
|
|
pozwól <application>MPlayerowi</application> na uruchamianie owijacza (wrapper)
|
|
fibmap_mplayer z suid-root.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title>Struktura dysku DVD</title>
|
|
<para>
|
|
Dyski DVD mają po 2048 bajtów na sektor z ECC/CRC. Zwykle posiadają system
|
|
plików UDF na pojedynczej ścieżce zawierającej różnorakie pliki (małe pliki .IFO
|
|
i .BUK oraz duże (1GB) pliki .VOB).
|
|
Są one rzeczywistymi plikami i mogą być kopiowane/odtwarzane z podmontowanego
|
|
systemu plików niezakodowanego DVD.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
Pliki .IFO zawierają informacje nawigacyjne filmu (rozdział/tytuł/mapa
|
|
zaczepów/tablica języków, itp) i są konieczne do odczytu i interpretacji
|
|
zawartości pliku .VOB (filmu). Pliki .BUK są kopiami zapasowymi plików .IFO.
|
|
Używają <emphasis role="bold">sektorów</emphasis> wszędzie, więc aby
|
|
zaimplementować nawigację na DVD lub rozszyfrować zawartość, należy używać
|
|
adresowania sektorów dysku w trybie raw.
|
|
</para>
|
|
|
|
<para>
|
|
Z tego powodu obsługa DVD w starym stylu z użyciem
|
|
<systemitem>libcss</systemitem> wymaga podmontowanego systemu plików DVD oraz
|
|
dostępu do urządzenia w trybie raw bazującym na sektorach. Niestety wymagane
|
|
jest (pod Linuksem) posiadanie uprawnień roota aby móc korzystać z sektorowego
|
|
adresowania pliku. Wybór jest następujący:
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Posiadać uprawnienia roota lub używać programu wykonywalnego
|
|
<application>MPlayera</application> posiadającego prawa suid-root.
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
Pozwolić <application>MPlayerowi</application> na uruchamianie owijacza
|
|
(wrapper) fibmap_mplayer w trybie suid-root w celu uzyskania dostępu do DVD
|
|
(używane przy odtwarzaniu DVD starą metodą poprzez
|
|
<systemitem>libcss</systemitem>).
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
Wcale nie używać sterownika systemu plików zawartego w jądrze lecz korzystać
|
|
jedynie z narzędzi działających w przestrzeni użytkownika. Zajmują się tym
|
|
biblioteki <systemitem>libdvdread</systemitem> 0.9.x i
|
|
<systemitem>libmpdvdkit</systemitem> (obsługa DVD nowym sposobem). Sterownik
|
|
systemu plików UDF zawarty w jądrze nie jest wymagany ponieważ wspomniane
|
|
biblioteki zawierają własny, wbudowany sterownik systemu plików UDF. DVD nie
|
|
musi być podmontowany, bowiem używany jest jedynie dostęp w trybie raw.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Czasami <filename>/dev/dvd</filename> nie może być czytany przez użytkowników,
|
|
zatem autorzy <systemitem>libdvdread</systemitem> zaimplementowali emulację
|
|
warstwy, która przenosi adresowanie sektorowe na nazwy plików i offsety, aby już
|
|
u źródeł podmontowanego systemu plików emulować dostęp w trybie raw, na równi z
|
|
dostępem do dysku twardego.
|
|
</para>
|
|
|
|
<para>
|
|
<systemitem>libdvdread</systemitem> równie dobrze akceptuje miejsce
|
|
podmontowania (mountpoint) jak i nazwę urządzenia przy dostępie w trybie raw i
|
|
sprawdza <filename>/proc/mounts</filename> w celu odnalezienia odpowiedniej
|
|
nazwy urządzenia (device). Zostało to napisane z myślą o systemie Solaris, gdzie
|
|
nazwy urządzeń są przydzielane automatycznie.
|
|
</para>
|
|
|
|
<para>
|
|
Domyślnym urządzeniem (device) DVD jest <filename>/dev/dvd</filename>. Jeżeli
|
|
Twoje ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie
|
|
urządzenie w linii polecenia korzystając z opcji <option>-dvd-device</option>.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title>Autoryzacja DVD</title>
|
|
<para>
|
|
Metoda autoryzacji i rozszyfrowywania używana gdy korzystamy z DVD przy użyciu
|
|
nowego sposobu polega na korzystaniu ze zmodyfikowanej biblioteki
|
|
<systemitem>libdvdcss</systemitem> (patrz wyżej). Ta metoda może być określona
|
|
poprzez zmienna środowiskową <envar>DVDCSS_METHOD</envar>, która może być
|
|
ustawiona na "key", "disk" albo "title".
|
|
</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
Jeżeli żadna wartość nie jest ustawiona, próbowane są następujące metody
|
|
(domyślnie: "key", "title request"):
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">bus key</emphasis>: Ten klucz jest ustalany podczas
|
|
autoryzacji (długa mieszanina ioctl'i i rozmaite wymiany kluczy, bajery
|
|
kryptograficzne) oraz jest używany do szyfrowania tytułu i kluczy dyskowych
|
|
przed wysłaniem ich nieszyfrowaną magistralą (by zapobiec podsłuchiwaniu). Bus
|
|
key jest wymagany do pobrania i wstępnego rozszyfrowania zaszyfrowanego klucza
|
|
dyskowego (disk key).
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
<emphasis role="bold">cached key</emphasis>: <application>MPlayer</application>
|
|
wyszukuje już złamane klucze tytułów, które są przechowywane w katalogu
|
|
<filename class="directory">~/.mplayer/DVDKeys</filename> (szybkie ;) ).
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
<emphasis role="bold">key</emphasis>: Jeżeli żaden zbuforowany klucz nie jest
|
|
dostępny, <application>MPlayer</application> próbuje rozszyfrować klucz dyskowy
|
|
korzystając z garści kluczy zaszytych w odtwarzaczu.
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
<emphasis role="bold">disk</emphasis>: Jeżeli metoda "key" zawodzi (np. brak
|
|
kluczy zaszytych w odtwarzaczu), <application>MPlayer</application> złamie klucz
|
|
dyskowy używając algorytmu ataku brutalnego. Proces ten jest bardzo
|
|
procesorochłonny i wymaga 64 MB pamięci (16777216 (16*2^20) 32-bitowych pól
|
|
tabeli hash) do przechowywania tymczasowych danych. Ta metoda powinna zadziałać
|
|
zawsze (niestety jest wolna).
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
<emphasis role="bold">title request</emphasis>: Mając klucz dyskowy
|
|
<application>MPlayer</application> pobiera zaszyfrowane klucze tytułowe (title
|
|
key), które są zawarte w <emphasis>ukrytych sektorach (hidden
|
|
sectors)</emphasis> używając <systemitem>ioctl()</systemitem>. Ochrona
|
|
regionalna w napędach RPC-2 jest realizowana w tym kroku i może się nie udać na
|
|
tych napędach. Jeśli jednak się uda, klucze tytułowe zostają rozszyfrowane przy
|
|
użyciu magistrali i klucza dyskowego.
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
<emphasis role="bold">title</emphasis>: Ta metoda jest używana jeżeli zapytanie
|
|
o tytuł zakończyło się niepowodzeniem i nie można polegać na żadnej wymianie
|
|
kluczy z napędem DVD. Używa ona ataku kryptograficznego w celu odgadnięcia
|
|
klucza tytułowego (title key) wprost (poprzez szukanie powtarzającego się ciągu
|
|
znaków (wzoru) w rozszyfrowanej zawartości pliku VOB oraz poprzez zgadywanie, że
|
|
czysty tekst odpowiadający pierwszym zaszyfrowanym bajtom jest kontynuacją
|
|
wzoru). Metoda ta jest także znana jako "znany czysto-tekstowy atak (known
|
|
plaintext attack)" bądź "DeCSSPlus". Rzadko zdarza się, ale się
|
|
zdarza, że metoda ta może zawieść ponieważ jest niewystarczająco dużo
|
|
zaszyfrowanych danych na dysku aby spełnić założenia statystycznego ataku lub
|
|
ponieważ klucz zmienia się w trakcie tytułu. Jest to jedyna metoda, aby
|
|
zdeszyfrować DVD przechowywane na twardym dysku lub DVD ze złym regionem na
|
|
napędzie RPC2 (powolne).
|
|
</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Napędy DVD RPC-1 zabezpieczają ustawienia regionu jedynie poprzez
|
|
oprogramowanie. Napędy RPC-2 mają sprzętowe zabezpieczenie, które pozwala na co
|
|
najwyżej 5 zmian. Jeżeli posiadamy napęd DVD RPC-2 wymagana/zalecana jest
|
|
aktualizacja firmware'u do RPC-1 . Nowe wersje firmware'ów można znaleźć na tej
|
|
<ulink url="http://www.firmware-flash.com">stronie z firmware'ami</ulink>.
|
|
Jeżeli nie ma tam nowej wersji firmware'u dla naszego urządzenia, użyj
|
|
<ulink url="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset tool
|
|
(narzędzia do zmiany regionów)</ulink> aby ustawić kod regionu na swoim napędzie
|
|
DVD (pod Linuksem). <emphasis role="bold">Ostrzeżenie</emphasis>: Możesz
|
|
ustawić region tylko 5 razy.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="vcd">
|
|
<title>Odtwarzanie VCD</title>
|
|
<para>
|
|
Pełna lista dostępnych opcji znajduje się na stronie man. Składnia dla
|
|
standardowego Video CD (VCD) jest następująca:
|
|
<screen>mplayer vcd://<replaceable><ścieżka></replaceable> [-cdrom-device <replaceable><urządzenie></replaceable>]</screen>
|
|
Przykład:
|
|
<screen>mplayer vcd://2 -cdrom-device /dev/hdc</screen>
|
|
Domyślnym urządzeniem VCD jest <filename>/dev/cdrom</filename>. Jeśli
|
|
Twoje ustawienia są inne, utwórz dowiązanie symboliczne
|
|
lub podaj prawidłowe urządzenie w linii poleceń za pomocą opcji
|
|
<option>-cdrom-device</option>
|
|
</para>
|
|
|
|
<note><para>
|
|
Przynajmniej napędy CD-ROM SCSI firmy Plextor i niektóre modele Toshiby
|
|
mają beznadziejną wydajność przy odczycie VCD. Jest to spowodowane
|
|
niekompletną implementacją <systemitem>ioctl</systemitem>'a CDROMREADRAW dla
|
|
tych urządzeń. Jeśli masz jakieś pojęcie o programowaniu SCSI,
|
|
<ulink url="../../tech/patches.txt">pomóż nam</ulink> zaimplementować ogólną
|
|
obsługę SCSI dla VCD.
|
|
</para></note>
|
|
|
|
<para>
|
|
W międzyczasie możesz wyciągać dane z VCD za pomocą
|
|
<ulink url="http://140.132.1.204/OS/Linux/packages/X/viewers/readvcd/">readvcd</ulink>
|
|
i odtwarzać plik wynikowy za pomocą <application>MPlayera</application>
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title>Struktura VCD</title>
|
|
<para>Płyty VCD składają się z jednej lub więcej ścieżek:</para>
|
|
</formalpara>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Pierwsza ścieżka jest małą ścieżką o gęstości 2048 bajtów/sektor z danymi w
|
|
systemie plików iso9660, zwykle zawierająca windowsowy odtwarzacz VCD i być
|
|
może inne informacje (obrazy, tekst, itp.).
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
Druga i pozostałe ścieżki o gęstości 2324 bajtów/sektor zawierają po jednym
|
|
pakiecie czystego strumienia MPEG PS na sektor zamiast systemu plików.
|
|
Podobnie, jak w przypadku ścieżek audio CD, ścieżki te <emphasis role="bold">nie
|
|
mogą być montowane</emphasis> (Czy kiedykolwiek montowałeś płytę audio CD by
|
|
ją odtworzyć?). Biorąc pod uwagę, że filmy znajdują się na tej ścieżce,
|
|
powinieneś spróbować na początek opcji <option>vcd://2</option>.
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
Istnieją również płyty VCD bez pierwszej ścieżki (pojedyncza ścieżka i
|
|
brak systemu plików w ogóle). Je również da się odtwarzać, ale nie da
|
|
się ich montować.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<formalpara>
|
|
<title>O plikach .DAT</title>
|
|
<para>
|
|
Plik o rozmiarze ok. 600 MB widoczny na pierwszej ścieżce zamontowanego VCD
|
|
nie jest prawdziwym plikiem ! Jest on tzw. bramką ISO, utworzoną by
|
|
Windows mógł obsługiwać takie ścieżki (Windows w ogóle nie zezwala aplikacjom
|
|
na dostęp do urządzeń w trybie raw). Pod Linuksem nie możesz kopiować ani
|
|
odtwarzać tych plików (zawierają "śmieci"). Pod Windows jest to możliwe, gdyż
|
|
jego sterownik iso9660 symuluje odczyt ścieżek w trybie raw za pomocą tego
|
|
pliku. By móc odtwarzać pliki .DAT, musisz mieć sterownik do jądra, który
|
|
dostarczany jest z linuksową wersją PowerDVD. Posiada on zmodyfikowany sterownik
|
|
systemu plików iso9660 (<filename>vcdfs/isofs-2.4.X.o</filename>), który jest w
|
|
stanie symulować odczyt ścieżek w trybie raw za pomocą pliku .DAT. Jeśli
|
|
podmontujesz płytę używając ich sterownika, możesz kopiować, a nawet odtwarzać
|
|
pliki .DAT za pomocą <application>MPlayera</application>. Ale nie będzie to
|
|
działało za pomocą standardowego sterownika iso9660 dostarczonego z jądrem
|
|
Linuksa! Zamiast tego użyj opcji <option>vcd://</option>. Alternatywą dla
|
|
kopiowania VCD jest nowy sterownik:
|
|
<ulink url="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</ulink> (nie jest
|
|
częścią oficjalnego jądra), który wyświetla sesje CD jako pliki obrazów, oraz
|
|
<ulink url="http://cdrdao.sourceforge.net/">cdrdao</ulink>, program do zgrywania
|
|
płyt CD bit po bicie.
|
|
</para>
|
|
</formalpara>
|
|
</sect1>
|
|
</chapter>
|