Używanie CD/DVDNapędy CD/DVD
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.
Linux
Możesz zredukować prędkość napędu CD z interfejsem IDE korzystając
z hdparm, setcd lub
cdctl.
Działają one w następujący sposób:
hdparm -E [prędkość][urządzenie cdrom]setcd -x [prędkość][urządzenie cdrom]cdctl -bS [speed]
Jeśli używasz emulacji SCSI, możesz musieć zastosować ustawienia do prawdziwego
urządzenia IDE a nie emulowanego SCSI.
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"
by dostroić swój 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.
FreeBSDPrędkość:
cdcontrol [-f urządzenie] speed [prędkość]DMA:
sysctl hw.ata.atapi_dma=1
Odtwarzanie DVD
Aby poznać pełną listę dostępnych opcji, proszę przeczytać odpowiednie strony
man. Składnia do odtwarzania standardowego DVD jest następująca:
mplayer dvd://<ścieżka> [-dvd-device <urządzenie>]
Przykład:
mplayer dvd://1 -dvd-device /dev/hdc
Jeśli skompilowałeś MPlayera z obsługą dvdnav,
składnia jest taka sama, tylko musisz użyć dvdnav:// zamiast dvd://.
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
.
MPlayer używa libdvdread
oraz libdvdcss do odtwarzania i dekodowania DVD.
Te dwie biblioteki są zawarte
w głównym drzewie źródłowym MPlayera, nie trzeba
instalować ich osobno.
Możesz też użyć systemowych wersji tych bibliotek, ale nie jest to zalecane,
ponieważ może spowodować błędy, niekompatybilności bibliotek oraz zmniejszenie
prędkości.
Jeśli występują problemy z dekodowaniem DVD, spróbuj wyłączyć supermount lub
inne tego typu usługi. Niektóre napędy RPC-2 mogą również wymagać ustawienia
kodu regionu DVD.
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 (mapa
rozdziałów/tytułów/kątów kamery, 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 wymaga
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.
Dlatego też nie w ogóle używamy sterownika systemu plików pochodzącego
z jądra, ale reimplementujemy to w przestrzeni użytkownika.
Zajmuje się tym biblioteka libdvdread 0.9.x.
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 warstwę
emulacji, która tłumaczy adresowanie sektorowe na nazwy plików i offsety, aby
emulować dostęp w trybie raw na podmontowanym systemie plików albo nawet na
twardym dysku.
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.
Deszyfrowanie DVD
Do deszyfrowania DVD jest używana biblioteka
libdvdcss. Metoda jej działania może być określona
poprzez zmienna środowiskową DVDCSS_METHOD,
co jest dokładniej opisane na stronie man.
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źć w internecie.
Poszukiwania radzimy rozpocząć od
forum firmware'ów.
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 VCD
Video CD (VCD) składa się z sektorów CD-ROM XA, tzn. ścieżek CD-ROM
mode 2 form 1 i form 2:
Pierwsza ścieżka jest w formacie mode 2 form 2, który oznacza użycie korekcji
błędów L2. Ścieżka ta zawiera system plików ISO-9660 o gęstości 2048
bajtów/sektor. Ten system plików z kolei zawiera metainformacje VCD, a także
nieruchome klatki, często używane w menu. Segmenty MPEG dla menu mogą także
być składowane w tejże pierwszej ścieżce, ale MPEGi muszą być podzielone na
kawałki po 150 sektorów. System plików ISO-9660 może zawierać inne pliki bądź
programy, niekonieczne dla eksploatacji VCD.
Druga i pozostałe ścieżki są zwykle ścieżkami video MPEG typu raw o gęstości
2324 bajtów/sektor, zawierającymi jeden pakiet danych MGEG PS na sektor.
Ścieżki te są w formacje mode 2 form 1, więc przechowują one więcej danych na
sektor, w zamian za słabszą korekcję błędów. Możliwe są też ścieżki CD-DA na
VCD poza pierwszą ścieżką. Niektóre systemy operacyjne używają pewnych
trików aby ścieżki nie zawierające systemu plików ISO-9660 były widoczne
w systemie plików. W pozostałych systemach, jak na przykład w systemie
GNU/Linux, nie ma takiej możliwości (jeszcze). W takim przypadku dane MPEG
nie mogą być montowane.
Jako że większość filmów znajduje się na tego typu ś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ć.
Definicja standardu Video CD, nazywana "Białą Księgą" Phillipsa,
generalnie nie jest dostępna online, musi być zakupiona u Phillipsa.
Bardziej szczegółowe informacje na temat Video CD można znaleźć na
stronie dokumentacji vcdimagera.
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.