4.18. Decodificatori MPEG

4.18.1. Uscita e ingresso DVB

MPlayer supporta le schede con chipset DVB Siemens di produttori come Siemens, Technotrend, Galaxis o Hauppauge. I driver DVB più recenti sono disponibili sul sito di Linux TV. Se vuoi eseguire la transcodifica software dovresti avere almeno una CPU a 1GHz.

Configure dovrebbe rilevare la tua scheda DVB. Se non lo fa, forzalo con

./configure --enable-dvb

Se hai gli header ost in un percorso non standard, imposta il percorso con

./configure --extra-cflags=directory sorgenti DVB/ost/include

Poi compila ed installa come al solito.

USO.  La decodifica hardware di flussi contententi video MPEG-1/2 e/o audio MPEG puà essere effettuata con questo comando:

mplayer -ao mpegpes -vo mpegpes file.mpg|vob

La decodfica di qualsiasi altro tipo di flusso video richiede la transcodifica in MPEG-1, indi è lenta a potrebbe non valerne la pena, specialmente se il tuo computer è lento. Si puà ottenere usando un comando come questo:

mplayer -ao mpegpes -vo mpegpes tuofile.ext
mplayer -ao mpegpes -vo mpegpes -vf expand tuofile.ext

Fai attenzione che le schede DVB supportano solo le altezze 288 e 576 per PAL oppure 240 e 480 per NTSC. Devi ridimensionare le altre altezze aggiungendo scale=larghezza:altezza, con la larghezza e l'altezza volute, all'opzione -vf. Le schede DVB accettano diverse larghezze, come 720, 704, 640, 512, 480, 352 etc. ed effettuano il ridimensionamento hardware sulla direzione orizzontale, perciò nella maggior parte deiu casi non ti serve ridimensionare in orizzontale. Per un MPEG-4 (DivX) a 512x384 (aspetto 4:3), prova:

mplayer -ao mpegpes -vo mpegpes -vf scale=512:576

Se hai un film in widescreen e non vuoi ridimensionarlo ad altezza piena, puoi usare il filtro expand=w:h per aggiungere delle bande nere. Per guardare un MPEG-4 (DivX) a 640x384, prova:

mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 file.avi

Se la tua CPU è troppo lenta per un MPEG-4 (DivX) intero a 720x576, prova a rimpicciolirlo:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 file.avi

Se la velocità non migliora, prova a rimpicciolirlo anche in verticale:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 file.avi

Per l'OSD e i sottotitoli usa la caratteristica OSD del filtro expand. Quindi, al posto di expand=w:h o expand=w:h:x:y, usa expand=w:h:x:y:1 (il quinto parametro :1 alla fine abiliterà il rendering dell'OSD). Potresti voler spostare leggermente verso l'alto l'immagine per ottenere una banda nera più ampia per i sottotitoli. Potresti anche voler spostare più in alto i sottotitoli, se sono al di fuori dello schermo della tua TV, usa l'opzione -subpos <0-100> (-subpos 80 è una buona scelta).

Per poter riprodurre un film non a 25fps su una TV PAL ovvero con una CPU lenta, aggiungi l'opzione -framedrop.

Per mantenere il rapporto di aspetto dei file MPEG-4 (DivX) e ottenere i parametri ottimali per il ridimensionamento (ridimensionamento orizzontale hardware e verticale software mantenendo il giusto rapporto di aspetto), usa il nuovo filtro dvbscale:

per una TV a  4:3: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
per una TV a 16:9: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1

TV Digitale (modulo d'ingresso DVB). Puoi usare la tua scheda TV per guardare la TV Digitale.

Dovresti avere installati i programmi scan e szap/tzap/czap/azap; essi sono inclusi nel pacchetto dei driver.

Verifica che i tuoi driver funzionino correttamente attraverso un programma tipo dvbstream (che è la base del modulo d'ingresso DVB).

Ora dovresti riempire un file ~/.mplayer/channels.conf, con la sintassi accettata da szap/tzap/czap/azap, o fare in modo che scan lo riempia per te.

Se hai più di un tipo di scheda (per es. Satellitare, Terrestre, Via Cavo e ATSC) puoi salvare i tuoi file dei canali come ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, e ~/.mplayer/channels.conf.atsc, rispettivamente, per spingere implicitamente MPlayer ad usare questi file invece che ~/.mplayer/channels.conf, e devi solamente specificare quale scheda usare.

Assicurati di avere solo canali in chiaro nel tuo file channels.conf, altrimenti MPlayer resterà in attesa di una trasmissione non criptata.

Nei tuoi campi audio e video puoi usare una sintassi espansa: ...:pid[+pid]:... (fino ad un massimo di 6 pid ciascuno); in questo caso MPlayer includerà nel flusso tutti i pid indicati, oltre al pid 0 (che contiene il PAT). Si consiglia di includere in ogni riga i pid PMT e PCR per il canale corrispondente (se conosciuti). Puoi anche specificare 8192, che seleziona tutti i pid su quella frequenza e puoi anche passare con TAB attraverso i programmi. Potrebbe aver bisogno di più banda, anche se le schede economiche passano sempre tutti canali al kernel, per cui non fa molta differenza per queste. Altri utilizzi possibili sono: pid televideo, seconda traccia audio, etc...

Se MPlayer si lamenta frequentemente di

Troppi pacchetti video/audio nel buffer

oppure noti una desincronizzazione crescente tra l'audio e il video, verifica la presenza del pid PCR nel tuo flusso (serve per adeguarsi alla modalità di buffering del trasmettitore) e/o prova ad usare il demuxer MPEG-TS di libavformat aggiungendo -demuxer lavf -lavfdopts probesize=128 alla tua riga comando.

Per vedere il primo dei canali presenti nella tua lista, esegui

mplayer dvb://

Se vuoi guardare un canale in particolare, come R1, esegui

mplayer dvb://R1

Se hai più di una scheda puoi anche dover specificare il numero della scheda dove il canale si vede (per es. 2) con la sintassi:

mplayer dvb://2@R1

Per cambiare canale premi i tasti h (successivo) e k (precedente), oppure usa il menu OSD.

Per disabilitare temporaneamente il flusso video o audio, copia quello che segue in ~/.mplayer/input.conf:

% set_property  switch_video -2
& step_property switch_video
? set_property  switch_audio -2
^ step_property switch_audio

(Reimpostando i comandi da tastiera come si preferisce.) Premendo il tasto corrispondente a switch_x -2, il flusso relativo verrà chiuso; premendo il tasto corrispondente a step_x il flusso verrà riaperto. Nota che quando ci sono più flussi audio e video nel multiplex questo meccanismo non funzionerà nel modo che ci si aspetta.

Durante la riproduzione (non durante la registrazione), per evitare saltellamenti e messaggi di errore tipo 'Il tuo sistema è troppo LENTO', si consiglia di aggiungere

-mc 10 -speed 0.97 -af scaletempo

alla riga comando, impostando i parametri di scaletempo come si preferisce.

Se il tuo ~/.mplayer/menu.conf contiene una voce <dvbsel>, come quella nel file di esempio etc/dvb-menu.conf (che puoi usare per sovrascrivere ~/.mplayer/menu.conf), il menu principale mostrerà una voce di sotto-menu che ti lascerà scegliere uno dei canali presenti nel tuo channels.conf, possibilmente preceduto da un menu con la lista delle schede disponibili, se ve ne è più di una utilizzabile da MPlayer.

Se vuoi salvare su disco un programma puoi usare

mplayer -dumpfile r1.ts -dumpstream dvb://R1

Se vuoi registrarlo in un formato diverso (ri-codificandolo) puoi invece lanciare un comando come

mencoder -o r1.avi -ovc xvid -xvidencopts bitrate=800 \
    -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1

Leggi la pagina man per una lista di opzioni che puoi passare al modulo di ingresso DVB.

FUTURO.  Se hai domande o vuoi ricevere gli annunci di nuove caratteristiche e vuoi partecipare a discussioni su questo argomento, iscriviti alla nostra mailing list MPlayer-DVB. Per favore tieni presente che la lingua della lista è l'inglese.

In futuro puoi aspettarti la possibilità di mostrare OSD e sottotitoli usando la caratteristica nativa delle schede DVB, così come una riproduzione più fluida di film non a 25fps e transcodifica in tempo reale tra MPEG-2 e MPEG-4 (decompressione parziale).

4.18.2. DXR2

MPlayer fornisce una riproduzione accelerata hardware con la scheda Creative DXR2.

Prima di tutto ti serviranno dei driver DXR2 correttamente installati. Puoi trovare i driver e le istruzioni per l'installazione sul sito DXR2 Resource Center.

USO

-vo dxr2

Abilita l'uscita TV.

-vo dxr2:x11 or -vo dxr2:xv

Abilita in X11 l'uscita su Overlay.

-dxr2 <option1:option2:...>

Questa opzione viene usata per controllare il driver DXR2.

Il chipset di overlay usato sulla DXR2 ha una qualità piuttosto bassa, ma le impostazioni di default dovrebbero funzionare per chiunque. L'OSD potrebbe essre utilizzabile con l'overlay (non sulla TV) disegnandolo nella chiave colore. Con le impostazioni di default della chiave colore puoi ottenere risultati variabili, spesso vedrai la chiave colore attorno ai caratteri o qualche altro effetto strambo. Ma se imposti correttamente le opzioni della chiave colore dovresti ricavare dei risultati accettabili.

Per favore vedi nella pagina man le opzioni disponibili.

4.18.3. DXR3/Hollywood+

MPlayer fornisce una riproduzione accelerata con le schede Creative DXR3 e Sigma Designs Hollywood Plus. Queste schede usano entrambe il chip em8300 di decodifica MPEG di Sigma Designs.

Prima di tutto ti serviranno dei driver DXR3/H+ correttamente installati, versione 0.12.0 o successiva. Puoi trovare i driver e le istruzioni per l'installazione sul sito DXR3 & Hollywood Plus per Linux. configure dovrebbe rilevare automaticamente la tua scheda, la compilazione dovrebbe concludersi senza problemi.

USO

-vo dxr3:prebuf:sync:norm=x:dispositivo

overlay attiva l'overlay (sovrapposizione) invece che l'uscita TV. Per funzionare richiede un'impostazione dell'overlay adeguatamente configurata. Il modo più semplice di configurare l'overlay è eseguire prima autocal. Poi lanciare mplayer con l'uscita dxr3 e, senza l'overlay abilitato, eseguire dxr3view. In dxr3view puoi giocherellare con le impostazioni dell'overlay e vederne il risultato in tempo reale, forse questa funzionalità sarà utilizzabile in futueo dalla GUI di MPlayer. Una volta che l'overlay sarà correttamente configurato, non ti servirà più dxr3view. prebuf abilita il pre-buffering. Il pre-buffering è una funzionalità del chip em8300 che gli permette di contenere più di un fotogramma video per volta. Questo significa che quando stai usando il pre-buffering, MPlayer cercherà di mantenere il buffer video constantemente pieno di dati. Se sei su una macchina lenta, l'uso della CPU di MPlayer sarà vicino, o pari, al 100%. Questo è particolarmente vero se riproduci flussi MPEG puri (come DVD, SVCD e così via), visto che MPlayer non dovrà ricodificarli in MPEG riempirà il buffer molto velocemente. Con il pre-buffering la riproduzione video è molto meno sensibile all'utilizzo della CPU da parte di altri programmi, non scarterà fotogrammi a meno che tale applicazione prenda possesso della CPU per un tempo lungo. Quando viene usato senza pre-buffering, l'em8300 è molto più sensibile al carico della CPU, per cui si consiglia caldamente di abilitare l'opzione -framedrop di MPlayer per evitare un'ulteriore perdita di sincronia. sync abiliterà il nuovo motore di sincronizzazione. Questa attualmente è una caratteristica sperimentale. Con il motore di sincronizzazione abilitato, l'orologio interno dell'em8300 verrà tenuto constantemente sotto controllo, se inizia a spostarsi dall'orologio di MPlayer verrà resettato causando lo scarto da parte dell'em8300 di tutti i fotogrammi rimasti indietro. norm=x imposterà la norma TV della scheda DXR3 senza il bisogno di strumenti esterni come em8300setup. Norme valide sono 5 = NTSC, 4 = PAL-60, 3 = PAL. Norme speciali sono 2 (auto-impostazione usando PAL/PAL-60) e 1 (auto-impostazione usando PAL/NTSC) poiché decidono quale norma usare in base alla frequenza fotogrammi del filmato. norm = 0 (default) non modifica la norma corrente. dispositivo = numero del dipositivo da usare se hai più di una scheda em8300. Ognuna di queste opzioni può essere tralasciata. :prebuf:sync sembra funzionare molto bene riproducendo filmati MPEG-4 (DivX). Alcune persone hanno notificato problemi usando l'opzione prebuf riproducendo file MPEG-1/2. Potresti voler provare dapprima l'esecuzione senza alcuna opzione, se hai problemi di sincronizzazione, o problemi coi sottotitoli DVD, fai un tentativo con :sync.

-ao oss:/dev/em8300_ma-X

Per l'uscita audio, dove X è il numero del dispositivo (0 per una scheda sola).

-af resample=xxxxx

This does not work with digital audio output (-ac hwac3). L'em8300 non può riprodurre frequenze inferiori a 44100Hz. Se la frequenza è minore di 44100Hz imposta 44100Hz oppure 48000Hz a seconda di quale sia la più prossima. Per es. se il film usa 22050Hz allora usa 44100Hz come 44100 / 2 = 22050, se è 24000Hz usa 48000Hz come 48000 / 2 = 24000 e così via.

-vf lavc

Per visualizzare contenuti non MPEG sull'em8300 (per es. MPEG-4 (DivX) o RealVideo) devi specificare un filtro video MPEG-1 come libavcodec (lavc). Vedi la pagina man per ulteriori informazioni circa -vf lavc. Attualmente non c'è modo di impostare gli fps dell'em8300, il che significa che sono fissati a 30000/1001 fps. A causa di ciò si raccomanda caldamente di usare -vf lavc=qualità:25 soprattutto se stai usando il pre-buffering. Allora perché 25 e non 30000/1001? Bene, il fatto è che quando usi 30000/1001 l'immagine diventa un pochino saltellante. La ragione di ciò ci è sconosciuta. Se li imposti a qualcosa tra 25 e 27 l'immagine diventa stabile. Per adesso tutto quello che possiamo fare è accettarlo empiricamente.

-vf expand=-1:-1:-1:-1:1

Anche se il driver DXR3 può posizionare qualche OSD sul video MPEG-1/2/4, ha una qualità decisamente inferiore del tipico OSD di MPlayer, e ha anche molti problemi di aggiornamento. La riga comando suddetta dapprima converte il video in ingresso a MPEG-4 (questo è obbligatorio, scusa), poi applica un filtro expand che non espande nulla (-1: default), ma aggiunge all'immagine l'OSD normale (questo è ciò che fa l'"1" alla fine).

-ac hwac3

L'em8300 supporta la riproduzione audio AC-3 (in surround) attraverso l'uscita digitale della scheda. Vedi l'opzione -ao oss più sopra, deve essere usata per specificare l'uscita DXR3 al posto di una scheda audio.