3.10. Ingresso TV

Questa sezione tratta di come abilitare la visione/acquisizione da sintonizzatori TV compatibili V4L. Vedi la pagina man per una descrizione delle opzioni e i controlli da tastiera per la TV.

3.10.1. Compilazione

  1. Per prima cosa, devi ricompilare. ./configure rileverà gli header del kernel per la roba v4l e l'esistenza delle voci /dev/video*. Se ciò esiste, il supporto TV verrà compilato (guarda l'emissione di ./configure).

  2. Assicurati che il tuo sintonizzatore funzioni con altri software TV per Linux, per esempio XawTV.

3.10.2. Consigli per l'uso

La lista completa delle opzioni è disponibile nella pagina di manuale. Qui ci sono giusto alcuni consigli:

  • Usa l'opzione channels. Un esempio:

    -tv channels=26-MTV1,23-TV2

    Spiegazione: con questa opzione, solo i canali 26 e 23 saranno utilizzabili. Ci sarà un simpatico testo OSD quando cambi canale, mostrante il nome del canale stesso. Gli spazi nel nome di canale devono essere sostituiti con il carattere "_".

  • Scegli una sana dimensione dell'immagine. Le dimensioni dell'immagine risultante dovrebbero essere divisibili per 16.

  • Se catturi il video con una risoluzione verticale maggiore di metà della risoluzione completa (per es. 288 per PAL o 240 per NTSC), allora i 'fotogrammi' che otterrai saranno reali coppie interlacciate di campi. A seconda di quello che vuoi fare con il video puoi lasciarle in questa forma, deinterlacciarle distruttivamente, oppure spezzare le coppie in campi singoli.

    In caso contrario otterrai un filmato che risulta distorto durante le scene ad alto movimento e il controllore della frequenza probabilmente sarà incapace di mantenere la frequenza specificata, visto che gli artefatti dell'interlacciamento producono un alto numero di dettagli e quindi occupano molta banda. Puoi abilitare il deinterlacciamento con -vf pp=DEINT_TYPE. Solitamente pp=lb fa un buon lavoro, ma può essere oggetto di preferenze personali. Vedi anche gli altri algoritmi di deinterlacciamento nel manuale e provali.

  • Taglia via le zone morte. Quando catturi video, le zone sui bordi spesso sono nere o contengono del disturbo. Questo consuma un sacco di banda non necessaria. Per essere precisi non sono le zone nere in sé, ma quel salto tra il nero e la parte chiara dell'immagine video che la sprecano, ma ciò non è importante per adesso. Prima di iniziare l'acquisizione, imposta gli argomenti dell'opzione crop affinché tutta la porcheria ai margini venga tagliata via. E ancora, non dimenticarti di mantenere 'sane' le dimensioni dell'immagine risultante.

  • Controlla il carico della CPU. Non dovrebbe oltrepassare il 90% nella maggior parte del tempo. Se hai un grosso buffer di cattura, MEncoder può gestire un sovraccarico per pochi secondi, ma non di più. E' meglio disattivare screensaver 3D OpenGL e cose del genere.

  • Non pacioccare con il clock di sistema. MEncoder usa il clock di sistema per gestire la sincronizzazione A/V. Se tu modifichi il clock di sistema (specialmente all'indietro nel tempo), MEncoder resta confuso e perderai dei fotogrammi. Questo è un fattore importante se sei collegato alla rete e usi un qualche software di sincronizzazione dell'ora come NTP. Dovresti disabilitare NTP durante il processo di acquisizione se vuoi che la cattura sia affidabile.

  • Non modificare outfmt (il formato di uscita) a meno che tu non sappia cosa stia facendo oppure la tua scheda/il tuo driver non supportino davvero quello di default (spazio colore YV12). Nelle precedenti versioni di MPlayer/MEncoder era necessario indicare il formato di uscita. Questo problema dovrebbe esser stato risolto nelle versioni correnti e outfmt non è più richiesto, e quello di default va bene la maggior parte delle volte. Per esempio, se stai catturando in DivX con libavcodec e specifichi outfmt=RGB24 per aumentare la qualità delle immagini acquisite, l'immagine stessa verraà comunque convertita di nuovo in YV12, perciò l'unica cosa che otterrai sarà spreco di CPU.

  • Ci sono vari modi per la cattura dell'audio. Puoi acquisire il suono sia usando la tua scheda audio attraverso una connessione via cavo esterna tra la scheda video e il line-in, sia usando l'ADC integrato nel chip bt878. Nell'ultimo caso, devi caricare il driver btaudio. Leggi il file linux/Documentation/sound/btaudio (nei sorgenti del kernel, non di MPlayer) per alcune istruzioni su come usare tale driver.

  • Se MEncoder non può aprire il dispositivo audio, assicurati che sia veramente disponibile. Ci sono alcuni problemi con sound server come aRts (KDE) o ESD (GNOME). Se hai una scheda audio full duplex (quasi tutte le schede decenti lo supportano, ad oggi), e stai usando KDE, prova a controllare l'opzione "full duplex" nel menu preferenze del sound server.

3.10.3. Esempi

Uscita fasulla, verso AAlib :)

mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://

Ingresso da V4L standard:

mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://

Un esempio più complesso. Questo fa sì che MEncoder catturi l'immagine PAL completa, tagli i margini, e deinterlacci l'immagine usando un algoritmo di sfumatura lineare. L'audio viene compresso con una frequenza costante di 64kbps, usando il codec LAME. Questa impostazione è utilizzabile per acquisire film.

mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
    -vf crop=720:544:24:16,pp=lb -o uscita.avi tv://

Questo in più ridimensionerà l'immagine a 384x288 e comprimerà il video con una frequenza di 350kbps in modalità ad alta qualità. L'opzione vqmax rilascia il quantizzatore e permette al compressore video di raggiungere davvero una così bassa frequenza anche a spese della qualità. Questo puà essere usato per acquisire lunghe serie TV, dove la qualità video non è così importante.

mencoder -tv driver=v4l:width=768:height=576 \
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
    -oac mp3lame -lameopts cbr:br=48 -sws 1 -o uscita.avi\
    -vf crop=720:540:24:18,pp=lb,scale=384:288 tv://

E' anche possibile specificare dimensioni immagine inferiori nell'opzione -tv e omettere il ridimensionamento software ma questo approccio usa la massima informazione disponibile ed è un po' più resiliente ai disturbi. I chip bt8x8 possono calcolare la media dei pixel solo sulla direzione orizzontale a causa di una limitazione hardware.