DVB Multicast Digitale Terrestre con Linux
Utilizziamo per questi test:
a) un HP MiniServer dotato di due slot PCIe
b) due schede DVB-T linux compatibili
Per un cliente dotato di numerose postazioni utente e sedi distaccate abbiamo effettuato una serie di test funzionali al file di trasmettere in rete locale il maggior numero di canali del digitale terrestre.
La trasmissione avverrà senza ricompressione o alterazione del flusso e sfruttando i multicast offerti dalla loro infrastruttura.
E’ risaputo che la trasmissione dei flussi digitali avviene per blocchi di frequenze (Multiplexer) ed è quindi sufficiente sintonizzare una scheda su una di queste frequenze per ricevere, e potenzialmente trasmettere, tutti i flussi video e audio presenti in quello specifico multiplex.
Abbiamo valutato che con due schede DVB-T dotate di due sintonizzatori avremmo coperto un discreto range di canali senza saturare le risorse hardware a disposizione (CPU e banda).
Abbiamo scelto Ubuntu Server su piattaforma 64 con un setup minimo che comprenda i tools di sviluppo per linux.
Abbiamo acquistato due schede PCIe DBV-T/T2 T982 Dual Twin Tuner e le abbiamo installate nei due slot liberi del Microserver.
Abbiamo compilato i drivers della scheda video resi disponibili dal produttore insieme all’ultimo layer Multimediale del kernel di linux.
Collegate le quattro prese antenna e riavviato il Microserver le schede ci rendono quindi disponibili 4 diversi sintonizzatori.
Effettuiamo quindi una scansione dei canali:
scan /usr/share/dvb/dvb-t/ ... -u > channels.txt
Ottenendo:
CBBC Channel:505833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621:4671 BBC Red Button:505833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:4479 BBC NEWS:505833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:640:641:4415 BBC THREE:505833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:4351 BBC TWO:505833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:610:611:4228 BBC ONE:505833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601:4164 ITV1:481833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:520:521:8261 ITV2:481833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:530:531:8325 Channel 4:481833330:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:560:561:8384
Dove:
Column A is the channel name.
Column B is the frequency (in Hz) of the multiplex this channel broadcasts on. The channels will be grouped together in the file by multiplex, so the frequency won’t change on every line.
Column D is the bandwidth. In the UK it will almost certainly be 8MHz.
Column G is the phase modulation type for the channel. I won’t try to explain it (you can delve into Wikipedia for that), suffice to say you’ll need to know it later. This should be the same for each channel that broadcasts on the same multiplex.
Column M (the last one) is the SID (service identifier) for the channel. This is very important as it is what dvblast uses to identify which channel to broadcast. Note that this is not the same as the EPG channel number, which isn’t shown in the file.
Multiplex 1
;BBC News
239.255.1.80:5004 1 4415
;BBC One
239.255.1.1:5004 1 4164
;BBC Red Button
239.255.1.105:5004 1 4479
;BBC Three
239.255.1.7:5004 1 4351
;BBC Two
239.255.1.2:5004 1 4228
;CBBC Channel
239.255.1.70:5004 1 4671
If your network switches support multicast, pick a multicast address. There’s a long and detailed document from the IANA about picking one, but unless you are already using multicast on your network then you really just need to pick something in the 239.255.000.000-239.255.255.255 range, which is identified by the IANA as the Site-Local Scope. Anything in this range should work. I used 239.255.1.1 as shown below.
If your network doesn’t support multicast, or you don’t want to use it for whatever reason, then enter the broadcast address for your local subnet.
dvblast -a 0 -c /root/M1.cfg -f 505833330 -m qam_16 -b 8 -e
-a n tells dvblast to use tuner number n for this multiplex. Obviously, you can’t use each tuner more than one at any one time. Numbering starts at 0, not 1, you idiots.
-c nameoffile.cfg tells dvblast to use the config file you just write. It doesn’t matter where you save it.
-f 000000000 is where you specify the frequency for this multiplex. Remember how you noted that down from the scan listing earlier? You better have done, because next you’ll need…
-m qam_x the modulation type for this multiplex. And then…
-b n the bandwidth for this multiplex.
-e Finally, -e tells dvblast to also stream the EPG data. You’ll see how to use this in VLC later, and it’s very exciting. No, really. Shut up, it’s exciting, damnit.
Dopo alcuni test abbiamo scelto di utilizzare singoli indirizzi IP per ogni canale invece di utilizzare lo stesso ip con porte diverse al fine di mantenere sotto controllo la banda utilizzata.
Infatti utilizzando lo stesso ip per tutti i canali si otteneva una ricezione da parte del client connesso di tutto il flusso dati emesso dal server e non del solo flusso relativo al canale desiderato.
Abbiamo poi implementato la trasmissione ciclica di filmati in diversi formati (MPEG4, H264, MPEG2) utilizzando VLC
vlc -vvv file:////path/to/file --sout '#rtp{access=udp,mux=ts,dst=224.3.1.100,port=1000,sap,group="Video",name="Test Multicast 1"}'
Dovrebbe anche essere possibile definire in ingresso un flusso dati (RadioWeb ad esempio) ed effettuarne il Multicast in rete, come dovrebbe essere possibile ricodificare il flusso audio/video all’interno dello stesso comando.
Funzioni che testeremo alla prima necessità.
Radio24 http://shoutcast.radio24.it:8000/
Riferimenti:
LINK
LINK
LINK
LINK
LINK
LINK
A.Gagliardi 2014
- Pubblicato il Sistemistica, Tips & Tricks