TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Guarda la TV digitale terrestre con il PC
Dalla configurazione della scheda TV, alla registrazione dei programmi sull’hard disk, fino alla trasmissione dei canali verso gli altri PC della rete
(pagina 2 di 3)


Le schede Tv

Nome: Pinnacle PCTV DVB-T Stick Ultimate • Tipo: scheda DVB-T • Interfaccia: USB 2.0 • Ingressi: antenna • Supporto HDTV: assente • Formato di registrazione: MPEG-1/2, DivX • Produttore: Pinnacle Systems • Sito web: www.pinnaclesys.com/PublicSite/it/Home


 In genere, ogni scheda TV digitale è composta da un tuner che riceve il segnale di trasmissione su una particolare frequenza; un demodulatore che estrae l'informazione dal segnale ricevuto; un demultiplexer (o demux) che separa i vari canali e/o i segnali audio/video; un chip di cattura dei dati che fa anche da interfaccia verso il bus utilizzato per la connessione al PC: USB, PCI o PCMCIA. A differenza delle schede per la TV analogica, quelle digitali non necessitano del convertitore A/D poiché i dati trasmessi sono già in formato digitale. Il demux, infatti, produce direttamente i dati per il flusso digitale da immettere sul bus. Purtroppo non esistono i driver GNU/Linux per tutte le schede sul mercato, per cui, l'analisi dei vari componenti di base e dei relativi chip contenuti sulla scheda TV, spesso è indispensabile per capire se questa è ben supportata dal sistema e poter scegliere, di conseguenza, come intervenire. In genere sono da preferire le schede di tipo PCI, in quanto quelle USB sono meno supportate e quando lo sono necessitano di una procedura di installazione molto più articolata. In particolare, comunque, nel caso si riscontri qualche problema durante l'installazione è necessario individuare il cosiddetto frontend, che rappresenta l'insieme del tuner e del demodulatore, e il chip di cattura dei dati. Nel nostro caso ci siamo serviti di una AVerTV DVB-T 771(una cosiddetta budget card, cioè una scheda a basso costo con componenti elettronici di base). Ben supportato (il produttore la rilascia come GNU/Linux compatibile) è anche il nuovo modello AverTV DVB-T 777,che permette la ricezione di canali in alta definizione (1080i/720p). In pratica, queste due schede sono riconosiute dal sistema in automatico e il dispositivo risulta immediatamente funzionante. Diverso è il caso di alcune schede USB, per le quali sono necessarie operazioni abbastanza complesse, come, ad esempio, accade per la nuova Pinnacle PCTV DVBT Stick Ultimate, che utilizza il nuovo chipset 72e, per la quale è necessario seguire la procedura riportata di seguito:
wget http://www.barbak.org/
v4l_for_72e_dongle.tar.bz2
tar xvjf v4l_for_72e
_dongle.tar.bz2
cd v4l-dvb
cp firmware/dvb-usb-dib0700-
1.10.fw /lib/firmware/
make
make install
Tutto qui, a questo punto, non resta che riavviare il sistema. Ricordate solo di eseguire la procedura da root, quindi diventatelo con su sudo -s, e posizionatevi, magari, nella directory /tmp: cd /tmp. Per il resto, generalmente, dopo aver collegato la scheda al PC, per verificare se questa è stata riconosciuta, basta accertarsi che sia presente la directory /dev/dvb/adapter0 con all'interno i device (file di dispositivo) per l'accesso alla scheda TV. I più importanti sono /dev/dvb/adapter0 /frontend0, utilizzato per la sintonizzazione del tuner, e /dev/dvb/adapter0/dvr0, mediante il quale è possibile leggere il flusso MPEG2 del canale sintonizzato. Attenzione ai permessi dei file per rendere possibile l'accesso ai device da parte degli utenti diversi da root. Per essere ancora più sicuri dell'avvenuto riconoscimento, eseguiamo il comando dmesg | grep dvb e controlliamo che siano presenti stringhe simili a quelle seguenti (alcuni parametri dipendono dalla scheda utilizzata):
bttv0: detected: AVermedia
AverTV DVB-T 771 [card=123],
PCI subsystem ID is 1461:0771
...
DVB: registering new adapter
(bttv0).
DVB: registering frontend 0
(Zarlink MT352 DVB-T)...
Per approfondimenti sulla gestione di questo tipo di periferiche il sito è www.linuxtv.org.
I programmi necessari
Per capire bene come funziona la TV digitale terrestre, inizieremo utilizzando programmi a riga di comando. Tutti gli strumenti necessari sono disponibili nella suite dvb-apps prelevabile sempre dal sito LinuxTV (www.linuxtv.org). Per chi usa Debian GNU/Linux il pacchetto da installare è dvb-utils: apt-get install dvb-utils. Dopo aver appreso le basi con questi programmi, tratteremo anche l'utilizzo di Kaffeine ( http://kaffeine.sourceforge.net), ormai diventato il player multimediale predefinito all'interno delle distribuzioni che utilizzano KDE. Ma useremo, anche se “solo” da riga di comando, i player Xine ( www.xinehq.de), MPlayer ( www.mplayer hq.hu) e Vlc ( www.videolan.org/vlc).  Per iniziare, eseguiamo una console da K/Sistema/Konsole o da Applicazioni/Accessori/Terminale.
Ricerca dei canali
 Come primo passo bisogna esplorare l'etere alla ricerca dei canali digitali radiotelevisivi presenti nella propria zona: un po' come succede con la ricerca automatica del sintonizzatore TV tradizionale. A questo scopo ci serviremo del programma scan (o scandvb o dvbscan). Questo prende in input un particolare file che elenca le frequenze di trasmissione utilizzate dai transponder delle località geografiche in cui si risiede. Nei sistemi Debian GNU/Linux questi file si trovano nella directory /usr/share /doc/dvb-utils/ examples/scan/dvb-t. Supponiamo di abitare a Milano. In questo caso il comando è:
scan /usr/share/doc/dvb-
utils/examples/scan/dvb-t/it-
Milano 1>channel.conf 2>info.log
Così facendo creeremo il file channels.conf indispensabile a tutti i player che utilizzeremo più avanti. Nel paragrafo successivo i dettagli del contenuto di questo file.
Il File Channel.Conf
Si tratta di un file di testo di tipo CSV che utilizza come separatore il carattere “:”. Ogni riga contiene le informazioni riguardanti un canale. Utilizzando il comando awk seguente evidenziamo i singoli campi di ogni riga per poterlo leggere più facilmente:
awk 'BEGIN{FS=":"} {\
for(i=1;i<=NF;i++) {\
printf $i "\n"\
} \
printf "\n"\
}' channels.conf
Dopo aver eseguito il comando precedente otterremo qualcosa del genere:
RaiUno
818000000
INVERSION_AUTO
BANDWIDTH_8_MHZ
FEC_2_3
FEC_1_2
QAM_64
TRANSMISSION_MODE_8K
GUARD_INTERVAL_1_32
HIERARCHY_NONE
512
650
3401
...
Nel primo campo è visibile il nome del canale e nel secondo la frequenza del trasmettitore sulla quale bisogna sintonizzare il tuner. Il terzultimo e penultimo campo contengono, invece, i PID citati in precedenza che permettono al demodulatore di estrarre dal segnale il flusso audio/video del canale. Ad esempio, un canale con il terzultimo campo uguale a zero è di tipo radio. L'ultimo campo è un identificativo unico del programma trasmesso.
Sintonizzare i canali
A questo punto, stabilito quali sono i canali che riusciamo a ricevere nella nostra zona, è ancora necessario sintonizzarli correttamente affinché sia possibile visualizzarli mediante i programmi per la TV disponibili in GNU/Linux. Per farlo bisogna fare riferimento al file channel. conf. Vediamo come. Se una delle righe presenti all’interno di questo file contiene qualche stringa con il nome del canale, come, ad esempio, nel caso di RaiUno, significa che possiamo "girare la manopola del ricevitore" e sintonizzarci su questo utilizzando il comando tzap: tzap -r -c channels.conf RaiUno. Se a regime le righe di output terminano con la stringa FE_HAS_LOCK , significa che abbiamo agganciato il canale e il flusso MPEG2 corrispondente verrà indirizzato sul device (dispositivo) /dev/dvb/adapter0/dvr0. Nel paragrafo successivo, analizzeremo qualche ulteriore particolare dell'output prodotto dal programma tzap, di sicuro interesse per gli amanti dei dettagli tecnici.
L'Output di Tzap

I due comandi tzap e xine in azion


Il programma di sintonizzazione tzap produce i seguenti messaggi:
using '/dev/dvb/adapter0/
frontend0' and
'/dev/dvb/adapter0/demux0'
tuning to 818000000 Hz
video pid 0x0200, audio pid 0x028a
status 00 | signal
ffef | snr
0000 | ber 00000000 | unc
00000000 |
status 1f | signal
ee6f | snr
9090 | ber 00000000 | unc
00000000 | FE_HAS_LOCK
status 1f | signal ed2f
| snr
9292 | ber 00000000 | unc
00000000 | FE_HAS_LOCK
Quando le righe terminano con FE_HAS_LOCK significa che il frontend, ovvero il tuner, è in un certo senso bloccato su questa frequenza, cioè la sintonizzazione è andata a buon fine. Nel log è possibile leggere anche altre importanti informazioni; ad esempio, la bontà del segnale è tanto più alta quanto più il campo unc (uncorrectable code) è uguale a zero. Per chi vuole approfondire, sappiate che alcuni comandi del pacchetto dvb-utils permettono di analizzare le componenti del segnale digitale e realizzare statistiche sofisticate, come, ad esempio, dvbtraffic. In aggiunta, il comando dvbsnoop analizza il flusso di dati in modo simile agli sniffer di rete.
Guardare le Trasmissioni
 Per poter guardare ciò che riceviamo, non ci resta che leggere il flusso dal device /dev/dvb/adapter0/dvr0 mediante un qualsiasi player come Xine, MPlayer o Vlc. Ecco due esempi da riga comando che utilizzano Xine e MPlayer, rispettivamente: xine stdin:// mpeg2 < /dev/dvb/adapter0/dvr0 e mplayer - < /dev/dvb/adapter0/dvr0.  In alternativa, possiamo copiare il file channels.conf nelle directory .xine o .mplayer della nostra home ed eseguire: xine "dvb://RaiUno" o mplayer "dvb://RaiUno".
Registrare una Trasmissione
 Per registrare le trasmissioni sull'hard disk, dopo aver sintonizzato con tzap il canale è sufficiente eseguire il comando cat /dev/dvb/adapter0/dvr0 >filmato.mpg. Con Xine, invece, possiamo, interattivamente, avviare la registrazione premendo il tasto F1. Nel file così prodotto verrà salvato il flusso MPEG2 corrispondente al canale sintonizzato finché il comando non verrà interrotto. Come abbiamo visto in precedenza, poiché il sintonizzatore riceve su una stessa frequenza più canali, perché non salvare l'intero flusso MPEG TS e selezionare all'interno dello stesso, successivamente, il canale preferito? Per farlo basta installare il pacchetto dvbstream. Mentre tzap sintonizza il tuner su una certa frequenza, bisogna eseguire il comando dvb stream con uno speciale PID fisso, ossia 8192, che indica l'intero stream: dvbstream 8192 -o >filmato.mpg. per rivedere i vari canali contenuti nel file filmato. mpg basta reperire nel file channels.confi due PID, pid1 e pid2, (audio e video) del canale appartenente a quel flusso ed eseguire mplayer -aid pid1 -vid pid2 filmato.mpg.
Trasmettere in Rete
Se il computer sul quale è installata la scheda TV si trova all'interno di una rete locale è possibile distribuire il segnale televisivo a tutte le altre postazioni utilizzando le funzionalità di streaming multicast del player VLC. Se, ad esempio, gli indirizzi delle macchine presenti in rete sono del tipo 192.168.1.XXX, allora sulla macchina su cui è installata la scheda TV bisogna eseguire quanto segue:
vlc --daemon --intf http --
program 3401 --dvb-frequency
818000000 dvb: --sout
”#duplicate{dst=std{access=udp
,mux=ts,dst=192.168.1.0:1234}}"
I valori dei parametri program e dvb-frequency sono rispettivamente l'ultimo e il secondo campo della riga del canale da trasmettere in rete presente nel file channels.conf. Per visualizzare le trasmissioni sulle altre macchine basta eseguire il comando vlc udp://192.168.1.0:1234, oppure xine udp://192.168.1.0:1234. Attenzione ad abilitare il supporto del multicast da parte del kernel, di norma infatti è disabilitato. Quest'ultima possibilità permette di abbandonare il cablaggio delle nostre case con il vecchio cavo d'antenna particolarmente soggetto a deterioramento del segnale. In presenza di una rete locale, anche wireless, lo streaming multicast permette di guardare la TV in ogni stanza in cui è presente un PC utilizzando una sola scheda con un unico tuner e senza alcun deterioramento del segnale televisivo.
TV digitale terrestre con Kaffeine
Con il player di KDE possiamo visualizzare i canali, registrarli e trasmetterli
Configurazione del player

Pagina 2/3
Lascia un commento
Tag: Tv, digitale terrestre, Pc, Kaffeine
Condividi