Używanie CD/DVDNapędy CD/DVD
Fragment dokumentacji Linuksa:
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:
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.
Wiele napędów CD jest dokuczliwie głośnych. Redukcja prędkości może zmniejszyć natężenie
hałasu.
Redukcję prędkości napędu CD z interfejsem IDE możemy uzystać korzystając z
hdparm bądź programu setcd. Działają one w
następujący sposób:
hdparm -E [prędkość][urządzenie
cdrom]setcd -x [prędkość][urządzenie
cdrom]
Jeżeli masz uprawnienia roota, to pomóc może także następująca komenda:
echo file_readahead:2000000 > /proc/ide/[urządzenie
cdrom]/settings
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 hdparm:
hdparm -d1 -a8 -u1 [urządzenie cdrom]
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 hdparm)
Proszę sprawdzić "/proc/ide/urządzenie
cdrom/settings"
dla dostrojenia swojego napędu CD-ROM.
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
napędami SCSI Plextor.
FreeBSD:Prędkość: cdcontrol [-f device] speed
speedDMA: sysctl hw.ata.atapi_dma=1Odtwarzanie DVD
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:
mplayer dvd://<ścieżka> [-dvd-device <urządzenie>]
Przykład:
mplayer dvd://1 -dvd-device /dev/hdc
Domyślnym urządzeniem (device) DVD jest /dev/dvd. Jeżeli Twoje
ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie urządzenie (device)
w linii polecenia korzystając z opcji .
Obsługa DVD - nowy sposób (mpdvdkit2)MPlayer używa libdvdread oraz
libdvdcss do dekodowania i odtwarzania DVD. Te dwie
biblioteki są zawarte w podkatalogu libmpdvdkit2/
w głównym drzewie katalogów MPlayera, nie trzeba instalować ich osobno.
Wybraliśmy tę opcję ponieważ musieliśmy poprawić błąd libdvdread
i zastosować łatkę (patch), która dodaje obsługę buforowania
złamanych kluczy CSS do libdvdcss. Skutkuje to dużym
wzrostem szybkości ponieważ klucze nie muszą być łamane za każdym razem przed
odtwarzaniem.
Jeśli występują problemy z dekodowaniem DVD, spróbuj wyłączyć supermount albo
inne tego typu usługi.
MPlayer potrafi także używać bibliotek systemowych
libdvdread
oraz libdvdcss, ale to rozwiązanie jest
nie zalecane, gdyż może powodować błędy,
niekompatybilności bibliotek oraz zmniejszenie prędkości.
Obsługa DVD - stary sposób - OPCJONALNE
Użyteczne, jeżeli chcesz odtwarzać zakodowane pliki VOB z twardego
dysku.
W tym celu skompiluj i zainstaluj libcss 0.0.1 (nie
nowsze) (Jeżeli MPlayer nie radzi sobie, użyj opcji
). Aby użyć tej metody musisz mieć uprawnienia roota,
binarka MPlayer musi miec suid lub pozwól MPlayerowi na uruchamianie owijacza (wrapper)
fibmap_mplayer z suid-root.
Struktura dysku DVD
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.
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ą
sektorów wszędzie, więc aby zaimplementować nawigację
na DVD lub rozszyfrować zawartość, należy używać adresowania sektorów dysku w trybie raw.
Z tego powodu obsługa DVD w starym stylu z użyciem
libcss 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:
Posiadać uprawnienia roota lub używać programu wykonywalnego
MPlayera posiadającego prawa suid-root.
Pozwolić MPlayerowi 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 libcss).
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 libdvdread 0.9.x
i libmpdvdkit (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.
Czasami /dev/dvd nie może być czytany przez użytkowników, zatem
autorzy libdvdread 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.
libdvdread równie dobrze akceptuje miejsce podmontowania
(mountpoint) jak i nazwę urządzenia przy dostępie w trybie
raw i sprawdza /proc/mounts 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.
Domyślnym urządzeniem (device) DVD jest /dev/dvd. Jeżeli Twoje
ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie urządzenie w linii
polecenia korzystając z opcji .
Autoryzacja DVD
Metoda autoryzacji i rozszyfrowywania używana gdy korzystamy z DVD przy użyciu nowego
sposobu polega na korzystaniu ze zmodyfikowanej biblioteki
libdvdcss (patrz wyżej). Ta metoda może być określona poprzez
zmienna środowiskową DVDCSS_METHOD, która może być ustawiona na "key",
"disk" albo "title".
Jeżeli żadna wartość nie jest ustawiona, próbowane są następujące metody (domyślnie:
"key", "title request"):
bus key: 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).
cached key: MPlayer
wyszukuje już złamane klucze tytułów, które są przechowywane w katalogu
~/.mplayer/DVDKeys (szybkie ;) ).
key: Jeżeli żaden zbuforowany klucz nie jest dostępny,
MPlayer próbuje rozszyfrować klucz dyskowy korzystając z
garści kluczy zaszytych w odtwarzaczu.
disk: Jeżeli metoda "key" zawodzi (np. brak kluczy
zaszytych w odtwarzaczu), MPlayer 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).
title request: Mając klucz dyskowy
MPlayer
pobiera zaszyfrowane klucze tytułowe (title key), które są zawarte w
ukrytych sektorach (hidden sectors) używając
ioctl(). 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.
title: 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).
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 stronie z
firmware'ami. Jeżeli nie ma tam nowej wersji
firmware'u dla naszego urządzenia, użyj regionset tool
(narzędzia do zmiany regionów) aby ustawić kod regionu na swoim napędzie DVD (pod Linuksem).
Ostrzeżenie: Możesz ustawić region tylko 5 razy.
Odtwarzanie VCD
Pełna lista dostępnych opcji znajduje się na stronie man.
Składnia dla standardowego Video CD (VCD) jest następująca:
mplayer vcd://<ścieżka>
[-cdrom-device <urządzenie>]
Przykład:
mplayer vcd://2 -cdrom-device /dev/hdc
Domyślnym urządzeniem VCD jest /dev/cdrom. Jeśli
Twoje ustawienia są inne, utwórz dowiązanie symboliczne
lub podaj prawidłowe urządzenie w linii poleceń za pomocą opcji
Przynajmniej napędy CD-ROM SCSI firmy Plextor i niektóre modele Toshiby
mają beznadziejną wydajność przy odczycie VCD. Jest to spowodowane
niekompletną
implementacją ioctl'a CDROMREADRAW dla tych urządzeń.
Jeśli masz jakieś pojęcie o programowaniu SCSI,
pomóż nam zaimplementować
ogólną obsługę SCSI dla VCD.
W międzyczasie możesz wyciągać dane z VCD za pomocą
readvcd
i odtwarzać plik wynikowy za pomocą MPlayeraStruktura VCDPłyty VCD składają się z jednej lub więcej ścieżek:
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.).
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 nie mogą
być montowane (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 .
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ć.
O plikach .DAT
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
(vcdfs/isofs-2.4.X.o), 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ą
MPlayera. Ale nie będzie to
działało za pomocą standardowego sterownika iso9660 dostarczonego z jądrem Linuksa !
Zamiast tego użyj opcji .
Alternatywą dla kopiowania VCD jest nowy sterownik:
cdfs (nie
jest częścią oficjalnego jądra), który wyświetla sesje CD jako pliki obrazów, oraz
cdrdao, program do
zgrywania płyt CD bit po bicie.