mpv/DOCS/it/cd-dvd.html

251 lines
13 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<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>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [velocità] [cdrom]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>setcd -x [velocità] [cdrom]</CODE></P>
<P>Puoi anche provare:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;Velocità: <CODE>cdcontrol [-f device] speed [velocità]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;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.</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>
<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 loreo driver puoi copyare 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>