mirror of
https://github.com/mpv-player/mpv
synced 2024-12-22 14:52:43 +00:00
dae951d466
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9865 b3059339-0415-0410-9bf9-f77b7e298cf2
264 lines
14 KiB
HTML
264 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML>
|
|
<!-- Synced with english version 1.56 -->
|
|
<HEAD>
|
|
<TITLE>CD, DVD, VCD - MPlayer - Movie Player per 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. Lettori CD/DVD</A></H2>
|
|
|
|
<P>Dalla documentazione di Linux:</P>
|
|
|
|
<P>Alcuni lettori CDROM sono capaci di cambiare la loro velocità. Ci sono varie
|
|
ragioni per cambiare la velocità di un CD-ROM. CDROM pressati male possono avere
|
|
benefici da una velocità minore della massima. I moderni lettori CDROM possono raggiungere
|
|
velocità molto alte (fino a 24-volte è comune). E' stato riportato che questi lettori
|
|
possono dare errori di lettura a queste alte velocità, ridurre la velocità può prevenire
|
|
perdite di dati in queste circostanze. In fine, alcuni di questi lettori possono
|
|
produrre un fastidioso rumore, che si può ridurre a velocità più basse.</P>
|
|
|
|
<P>Per ridurre la velocità del lettore si può usare hdparm o un programma chiamato setcd.
|
|
Usali così:</P>
|
|
|
|
<P> <CODE>hdparm -E [velocità] [cdrom]</CODE></P>
|
|
<P> <CODE>setcd -x [velocità] [cdrom]</CODE></P>
|
|
|
|
<P>Puoi anche provare:</P>
|
|
|
|
<P> <CODE>echo current_speed:4 >/proc/ide/[cdrom device]/settings</CODE></P>
|
|
|
|
<P>ma devi avere i privilegi di root. Può aiutare anche il seguente comando:</P>
|
|
|
|
<P> <CODE>echo file_readahead:2000000 >/proc/ide/[cdrom device]/settings</CODE></P>
|
|
|
|
<P>per leggere 2MB in anticipo dal file (è utile per i CDROM rigati).
|
|
Se viene impostato ad un valore troppo alto, il lettore continuerà a girare e a
|
|
fermarsi, riducendo drasticamente la performance.
|
|
Si consiglia anche di regolare il tuo lettore CDROM anche con hdparm:</P>
|
|
|
|
<P> <CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P>
|
|
|
|
<P>per abilitare l'accesso DMA, readahead, e l' IRQ unmasking.
|
|
(se non capisci, *leggi la pagina di man di hdparm*)</P>
|
|
|
|
<P>Per favore fai riferimento a "<CODE>/proc/ide/[cdrom device]/settings</CODE>" per una regolazione fine del
|
|
CDROM.</P>
|
|
|
|
<P>I lettori SCSI non hanno un modo comune per regolare questi parametri (ne conosci
|
|
uno? Diccelo!) Esiste una utility che funziona con i
|
|
<A HREF="http://das.ist.org/~georg/">lettori SCSI Plextor</A>.</P>
|
|
|
|
<P>FreeBSD:</P>
|
|
|
|
<P> Velocità: <CODE>cdcontrol [-f device] speed [velocità]</CODE></P>
|
|
<P> DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P>
|
|
|
|
|
|
<H2><A NAME="dvd">4.2. Vedere i DVD</A></H2>
|
|
|
|
<P>Per la lista completa delle opzioni disponibili, leggete la pagina di man.
|
|
La sintassi per la riproduzione di un DVD standard è la seguente:</P>
|
|
|
|
<P><CODE>mplayer -dvd <track> [-dvd-device <device>]</CODE></P>
|
|
|
|
<P>Esempio:<CODE>mplayer -dvd 1 -dvd-device /dev/hdc</CODE></P>
|
|
|
|
<P>Il dispositivo DVD predefinito è <CODE>/dev/dvd</CODE>. Se il tuo sistema è
|
|
diverso, crea un symlink o specifica il dispositivo corretto sulla linea di comando
|
|
con l'opzione <CODE>-dvd-device</CODE>.</P>
|
|
|
|
<H4>Supporto DVD nuovo stile (mpdvdkit2)</H4>
|
|
|
|
<P><B>MPlayer</B> usa <CODE>libdvdread</CODE> e <CODE>libdvdcss</CODE> per
|
|
decifrare e leggere i DVD. Queste due librerie si trovano nella subdirectory
|
|
<CODE>libmpdvdkit2/</CODE> dell'albero di <B>MPlayer</B>, non
|
|
devi installarle separatamente. Abbiamo optato per questa soluzione perchè
|
|
abbiamo dovuto correggere un bug di libdvdread, e applicare una patch che aggiunge
|
|
il <B>supporto al caching delle chiavi CSS crackate</B> per libdvdcss. Risulta un grande
|
|
aumento della velocità perchè le chiavi non devono essere crackate ogni volta
|
|
prima della riproduzione . Queste chiavi vengono conservate nella
|
|
directory <CODE>$HOME/.mplayer/DVDKeys</CODE>.</P>
|
|
|
|
<P>MPlayer può anche utilizzare le librerie <CODE>libdvdread</CODE> e
|
|
<CODE>libdvdcss</CODE> installate nel sistema, ma questa soluzione <B>non</B> è
|
|
consigliata, in quanto possono risultare bug, incompatibilità di librerie, e minore velocità.</P>
|
|
|
|
<H4>Supporto DVD Navigation (dvdnav)</H4>
|
|
|
|
<P>Il supporto per DVD navigation attraverso <CODE>dvdnav</CODE> era in implementazione, ma
|
|
non è mai stato completato del tutto ed è quindi <B>sconsigliato</B>!</P>
|
|
|
|
<H4>Supporto DVD vecchio stile - <I>OPZIONALE</I></H4>
|
|
|
|
<P>Utile se vuoi leggere file VOB dall' hardisk. Compila e
|
|
installa <B>libcss</B> 0.0.1 (non più recente) (se <B>MPlayer</B> non lo trova,
|
|
usa l'opzione <CODE>-csslib /percorso/di/libcss.so</CODE>). Per usarlo,
|
|
devi essere root, usare un binario di Mplayer suid root o far richiamare ad MPlayer il programma
|
|
wrapper fibmap_mplayer che è suid root.</P>
|
|
|
|
<H4>Struttura dei DVD</H4>
|
|
|
|
<P>I dischi DVD hanno settori da 2048 byte/settore con ECC/CRC. Solitamente hanno un
|
|
filesystem UDF su una singola traccia, che contiene vari file (piccoli file .IFO e .BUK
|
|
e grandi (1GB) file .VOB). Questi sono veri file e possono essere copiati/riprodotti
|
|
dal filesystem montato di un DVD non criptato.</P>
|
|
|
|
<P>I file .IFO contengono le informazioni per la navigazione del film (capitoli/titoli/mappa
|
|
delle angolazioni, tabella delle lingue, ecc.) ed è necessario per leggere ed interpretare il
|
|
contenuto .VOB (film). I file .BUK sono i loro backup. Usano i <B>settori</B> ovunque,
|
|
quindi bisogna usare il puro indirizzamento dei settori del disco per implementare la navigazione
|
|
dei DVD navigation. Questo è necessario anche per decrittare il contenuto.</P>
|
|
|
|
<P>L'intero supporto DVD vecchio stile con libcss deve quindi avere il filesystem del DVD
|
|
montato e l'accesso a basso livello ai settori della device. Sfortunatamente devi essere root
|
|
(sotto Linux) per avere l'indirizzo del settore di un file. Hai quindi le seguenti
|
|
possibilità:</P>
|
|
|
|
<UL>
|
|
<LI>Essere root o usare un binario di mplayer suid-root.</LI>
|
|
<LI>Far chiamare ad MPlayer il programma wrapper fibmap_mplayer (che è suid root) per accedere
|
|
al DVD (usato col metodo che utilizzava libcss).</LI>
|
|
<LI>Non usare per nulla il driver di filesystem del kernel e reimplementarlo in
|
|
userspace. libdvdread 0.9.x e libmpdvdkit fanno questo (supporto DVD
|
|
nuovo stile). Il driver per il filesystem udf del kernel non è necessario in quanto
|
|
hanno già il proprio driver per l'udf. Inoltre il dvd non deve essere montato
|
|
in quanto viene usato solo l'accesso a basso livello ai settori.</LI>
|
|
</UL>
|
|
|
|
<P>A volte /dev/dvd non può essere letto dagli utenti, quindi gli autori di libdvdread
|
|
hanno implementato un livello di emulazione che trasferisce gli indirizzi dei settori in
|
|
nomifile+offset, per simulare un accesso a basso livello su un filesystem montato
|
|
o anche su un hard disk.</P>
|
|
|
|
<P>libdvdread accetta anche il punto di mount al posto del nome del dispositivo
|
|
e controlla in <CODE>/proc/mounts</CODE> per ottenere il nome del device. E' stato
|
|
sviluppato per Solaris, dove i nomi dei dispositivi sono assegnati dinamicamente.</P>
|
|
|
|
<P>Il dispositivo DVD di default è <CODE>/dev/dvd</CODE>. Se la tua impostazione è diversa,
|
|
fai un symlink, o specifica la device corretta alla riga di comando con l'opzione
|
|
<CODE>-dvd-device</CODE>.</P>
|
|
|
|
<H4>Autenticazione del DVD</H4>
|
|
|
|
<P>Il metodo di autenticazione e decrittazione del supporto DVD nuovo stile usa
|
|
un libdvdcss modificato (vedi sopra). Il metodo può essere specificato con
|
|
la variabile d'ambiente <CODE>DVDCSS_METHOD</CODE> che può avere i valori
|
|
<CODE>key</CODE>, <CODE>disk</CODE> o <CODE>title</CODE>.</P>
|
|
|
|
<P>Se non è specificato nulla vengono provati i seguenti metodi
|
|
(default: key, title request):</P>
|
|
|
|
<OL>
|
|
<LI><B>bus key:</B> Questa chiave è negoziata durante l'autenticazione (un lungo miscuglio
|
|
di ioctls e vari scambi di chiavi, roba crittografica) ed è usata per criptare le chiavi
|
|
del titolo e del disco prima di mandarle sul bus non protetto
|
|
(per prevenire l'eavesdropping). La chiave del bus è necessaria per ottenere e pre-decriptare
|
|
la chiave del disco.</LI>
|
|
<LI><B>cached key:</B> MPlayer cerca chiavi di titolo eventualmente già scoperte
|
|
che sono salvate nella directory <CODE>~/.mplayer/DVDKeys</CODE>
|
|
(veloce ;).</LI>
|
|
<LI><B>key:</B> Se non è disponibile nessuna chiave già salvata, MPlayer prova a decriptare
|
|
la chiave del disco con un insieme di chiavi incluse.</LI>
|
|
<LI><B>disk:</B> Se il metodo della chave fallisce (es. nessuna chiave inclusa),
|
|
MPlayer romperà la chiave del disco usando un algoritmo a forza bruta.
|
|
Questo processo consuma molta CPU e richiede 64 MB di memoria (tabella di hash
|
|
da 16M con 32bit di elementi) per salvare i dati temporanei. Questo metodo dovrebbe funzionare
|
|
sempre (lento).</LI>
|
|
<LI><B>title request:</B> Con la chiave del disco MPlayer richiede le chiavi criptate
|
|
del titolo, che sono contenute in <I>settori nascosti</I> usando <CODE>ioctl()</CODE>.
|
|
La protezione regionale dei lettori RPC-2 avviene a questo passaggio e potrebbe fallire
|
|
su queto tipo di lettori. Se ha successo, le chiavi del titolo verranno decripttate usando
|
|
la chiave del bus e la chiave del disco.</LI>
|
|
<LI><B>title:</B> Questo metodo è usato se fallisce la title request e non si
|
|
basa sullo scambio di chiavi con il lettore DVD. Usa un attacco criptografico per
|
|
indovinare direttamente la chiave del titolo (trovando un modello che si ripete nel contenuto
|
|
VOB e supponendo che il testo in chiaro dei primi byte criptati siano una continuazione
|
|
di quel modello).
|
|
Il metodo è conosciuto anche come "known plaintext attack" o "DeCSSPlus".
|
|
In rari casi può fallire perchè non ci sono abbastanza dati criptati sul disco
|
|
per implementare un attacco statistico o perchè la chiave cambia nel mezzo di un titolo.
|
|
D'altra parte è l'unico modo per decriptare un DVD
|
|
salvato su un hard disk o un DVD con la regione sbagliata su un lettore RPC2
|
|
(lento).</LI>
|
|
</OL>
|
|
|
|
<P>I lettori DVD RPC-1 proteggono le impostazioni regionali solo su lettori DVD software.
|
|
I lettori RPC-2 hanno una protezione hardware che permette solo 5 cambiamenti. Potrebbe
|
|
essere necessario/consigliato aggiornare il firmware a RPC-1 se hai un lettore DVD RPC-2.
|
|
Aggiornamenti del firmware possono essere trovati
|
|
<A HREF="http://www.firmware-flash.com">qui</A>. Se non c'è un aggiornamento
|
|
del firmware per il tuo lettore, usa l'applicazione
|
|
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset</A>
|
|
per impostare il codice regionale del tuo lettore DVD (sotto Linux).
|
|
<B>Attenzione:</B> Si può impostare la regione solo 5 volte.</P>
|
|
|
|
<H2><A NAME="vcd">4.3 Vedere i VCD</A></H2>
|
|
|
|
<P>Per la lista completa delle opzioni disponibili, leggete la pagina di man.
|
|
La sintassi per vedere i Video CD standard (VCD) è la seguente:</P>
|
|
|
|
<P>
|
|
mplayer -vcd <I>numerotraccia</I> [-cdrom-device device]<BR><BR>
|
|
Esempi:<BR>
|
|
mplayer -vcd 1<BR>
|
|
mplayer -fs -vcd 2 -cdrom-device /dev/hdc<BR>
|
|
</P>
|
|
|
|
<P><B>Nota:</B> Almeno i Plextor e alcuni CD-ROM SCSI della Toshiba hanno
|
|
terribili prestazioni nella lettura dei VCD. Questo perchè l'ioctl CDROMREADRAW
|
|
non è del tutto implementato per questi lettori. Se hai conoscenze nella programmazione SCSI,
|
|
per favore <A HREF="../tech/patches.txt">aiutaci</A> ad implementare il supporto
|
|
SCSI generico per i VCD.</P>
|
|
|
|
<P>Nel frattempo puoi estrarre i dati dal VCD con
|
|
<A HREF="http://140.132.1.204/OS/Linux/packages/X/viewers/readvcd/">readvdc</A>
|
|
e vedere il file risultante con MPlayer.</P>
|
|
|
|
<H4>Struttura dei VCD</H4>
|
|
|
|
<P>I dischi VCD contengono una o più tracce:</P>
|
|
|
|
<UL>
|
|
<LI>La prima è una piccola traccia da 2048 byte/settore, con un filesystem iso9660,
|
|
contenente di solito programmi win32 per la riproduzione di VCD e a volte altre informazioni
|
|
(jpeg, testi, ecc).</LI>
|
|
<LI>La seconda e le successive tracce sono pure tracce mpeg da 2324 byte/settore, senza
|
|
alcun filesystem ma puri dati mpeg ps, un pacchetto per settore. Questi contengono il
|
|
film... Le tracce <B>non possono essere montate</B>! E' come con le tracce audio
|
|
(es. Tu non hai mai montato un cd audio per leggerlo, vero?).
|
|
Dato che di solito i film sono contenuti nella traccia due, dovresti provare
|
|
l'opzione <CODE>-vcd 2</CODE> per prima.</LI>
|
|
<LI>Esistono anche dischi VCD senza la prima traccia (traccia singola e privi
|
|
di qualunque filesystem). Sono sempre leggibili, ma non possono essere montati.</LI>
|
|
</UL>
|
|
|
|
<P>Circa i file .DAT:</P>
|
|
|
|
<P>Il file da ~600 MB visibile sulla prima traccia vcd montato non è un vero file!
|
|
E' un così detto iso gateway, creato per permettere a Windows di gestire quel tipo di tracce
|
|
(Windows non consente assolutamente alle applicazioni un accesso a basso livello ai dispositivi).
|
|
Sotto linux, non puoi copiare o riprodurre tali file (contengono schifezze).
|
|
Sotto Windows è possibile perchè il suo driver iso9660 emula la lettura delle tracce pure
|
|
in questo file. Per riprodurre un file .DAT devi usare un driver del kernel che si può
|
|
trovare nella versione Linux di PowerDVD. Ha un driver per il filesystem iso9660 modificato
|
|
(vcdfs/isofs-2.4.X.o). Se monti il disco col loro driver puoi copiare e riprodurre
|
|
il file .DAT con mplayer. Ma <B>non funzionerà</B>
|
|
col driver iso9660 standard contenuto nel kernel! Si consiglia invece di usare l'opzione
|
|
<CODE>-vcd</CODE>. Altre opzioni per la copia dei VCD sono
|
|
il nuovo driver del kernel <A HREF="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</A>
|
|
(mostra le <I>sessioni</I> del CD come file di immagine) e
|
|
<A HREF="http://cdrdao.sourceforge.net/">cdrdao</A> (un'applicazione che fa una copia bit-a-bit
|
|
dei cd).</P>
|
|
|
|
<P> Il dispositivo VCD di default è /dev/cdrom. Se il dispositivo è diverso, allora devi fare un
|
|
link simbolico, o specificarlo dalla linea di comando con l'opzione <CODE>-cdrom-device</CODE>.
|
|
</P>
|
|
|
|
</BODY>
|
|
</HTML>
|