view DOCS/it/cd-dvd.html @ 12894:1591792d4054

Fix segfault caused by changing a pointer that will be freed later Patch by Martin Simmons ( vyslnqaaxytp at spammotel dot com )
author rtognimp
date Sun, 25 Jul 2004 00:37:07 +0000
parents 7e22b762e1a8
children
line wrap: on
line source

<!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>&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.
La sintassi per la riproduzione di un DVD standard è la seguente:</P>

<P><CODE>mplayer dvd://&lt;track&gt; [-dvd-device &lt;device&gt;]</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>