Un caro amico, che aiuta a gestire un piccolo network televisivo della mia città, mi ha chiesto se fossi in grado di trovargli una soluzione economica per un problema nel quale era incorso. Doveva connettere due studi “televisivi” a circa 20Km di distanza, per permettere ad uno studio di trasmettere i video live verso l’altro. Purtroppo l’apparato ricevitore doveva avere obbligatoriamente una uscita analogica (per esempio una SCART), in modo da potersi interfacciare correttamente con le apparecchiature esistenti. Per questo motivo, ho deciso di provare a fare questa cosa con un Dreambox 🙂

Ecco un pò di ingredienti per la nostra ricetta:

  • Un Dreambox (La procedura è stata ideata su un DM600PVR senza HDD, ma qualsiasi Dreambox con un plug di rete dovrebbe andare)
  • Immagine Gemini per la versione di Dreambox che possiedi
  • VLC Media Player per Windows (>= v 0.8.5)
  • Un client FTP (per esempio: FileZilla)
  • Windows Media Encoder (WME) per Windows (mhmh dubito esista una versione per Linux di questo programma 🙂 )
  • Il plugin VLCF-Final per Gemini
  • Una telecamera collegabile al PC, compreso l’hardware per il collegamento (Firewire HUB, etc.)

Un pò di teoria

Ho perso un bel pò di tempo prima di capire come far funzionare questo streaming dalla telecamera verso il Dreambox. Ho fatto vari tentativi, tra cui provare a prendere il flusso dati direttamente dalla telecamera ed inviarlo via VLC senza usare WME. Non ha funzionato. Se solo avessi accesso al sorgente di VCLF-Final potrei provare a capire cosa non và quando non uso WME, in modo da sopprimere questo dispendioso passaggio di elaborazione. Ma come mai funziona quando usiamo WME?

VLCF-Final funge semplicemente da front-end per il programma VLC installato sul vostro PC (back-end). Non fà altro che dire al back-end di aprire il file da voi scelto sul Dreambox e di far partire lo streaming, eventualmente codificandolo. Il WME crea un file con estensione .WMV (sulla falsariga dei vecchi file in formato .ASF), che non necessitano di essere scritti completamente sul disco per essere visualizzati. Questo perchè sono progettati per il web, dove è conveniente che lo streaming avvenga prima che il file sia completamente scaricato (operazione che potrebbe richiedere molto tempo).

Windows Media Encoder altro non fà che trasferire sul file WMV, codificandolo, ciò che arriva dalla telecamera, mentre VLC lo legge (ri-codifica per il Dreambox) e lo invia al Dreambox.

Prepariamo il Dreambox

La prima cosa da fare è flashare sul Dreambox (1) l’immagine che abbiamo scelto (Gemini) . La rete è piena di tutorial a riguardo e non avrebbe veramente senso perdere tempo a spiegare questo procedimento da capo. Potete tranquillamente usare DreamUP per farlo. Quando questa operazione è conclusa, (2) è necessario configurare l’interfaccia di rete del Dreambox per farlo collegare ad Internet. Andate in “Impostazioni di rete” sul Dreambox ed inserite i dettagli relativi alla vostra rete locale (se avete bisogno di aiuto in tal senso, scrivete pure un commento a fondo pagina). Non appena avete fatto, riavviate il Dreambox (3), premete il tasto Blu sul telecomando ed andate nel menu Plugins. Scaricate la lista dei plugin (4) e cercate il plugin VLCF-Final. Scaricatelo (5). Installate il client FTP sul vostro PC e collegatevi via FTP al Dreambox utilizzando l’IP che avete impostato nelle sue impostazioni di rete (username: root, password: dreambox), navigate nella cartella /var/tuxbox/config e scaricate il file vlcf_original.xml sul vostro computer (6). Apritelo con un programma editor di testo (non usate blocco note di windows, invece usate qualcosa tipo PSPad) e modificatelo come segue:

– Prendete la prima linea che contiene il tag <server> (7): dovrebbe essere come quella qui sotto. Cambiate il valore del campo ip per rispecchiare l’IP del computer dove collegherete la telecamera.

<pre class="xml:nocontrols:firstline[4]"><server name="set1" ip="192.168.128.12" webif-port="8080" stream-port="9090" user="admin" pass="admin" />

– Prendete la prima linea che contiene il tag <config> (8) con lo stesso valore nel campo name di quello della riga <server> che avete appena modificato. Inserite in startdir il percorso alla cartella del vostro computer che conterrà il file dello stream. Dovrebbe essere circa così:

<pre class="xml:nocontrols:firstline[8]"><config name="set1" startdir="g:/" cddrive="f:" />

Caricate il file sul Dreambox (9), sovrascrivendo quello in /var/tuxbox/config (magari fate una copia del vecchio file) e riavviate di nuovo il box.

Preparazione del PC

Scaricate ed installate Windows Media Encoder e VLC per Windows (10). Avviate VLC ed andate in Impostazioni->Preferenze->Interfaccia->Interfacce principali ed abilitate “Interfaccia di controllo a distanza HTTP” (11). Salvate le modifiche ed uscite da VLC.

Test 1: streaming video al Dreambox

Avviate VLC sul PC e lasciatelo in esecuzione. Avviate il Dreambox, premete il tasto Blu ed andate nel menu Plugins. Avviate VLCF-Final. Ora dovrebbero apparire i files presenti nel percorso che avete specificato nel file vlcf_original.xml! Selezionate un qualsiasi file video, premete OK e dovrebbe partirne l’esecuzione 🙂 Se non funziona, sicuramente c’è stato qualche problema con la configurazione o con l’avvio di VLC sul vostro PC, oppure è stato fatto qualche errore ai passi (7) o (8). Per scrupolo ricontrollate la configurazione e verificate anche che VLC possa aprire il file che voi state cercando di visualizzare sul Dreambox.

Test 2: streaming da telecamera a Dreambox

Collegate la telecamera al PC e, se avete le casse accese, dovreste sentire il tipico rumore di periferica rilevata di Windows, “din dong”. avviate WME, andate su “File->New” e poi, nel pannello Wizards, selezionate “Broadcast a live event” (12). Quando vengono richieste le periferiche di input, selezionate la telecamera sia come input audio che video. Come metodo di broadcast selezionate “Pull from the encoder”. La prossima pagina dovrebbe contenere impostazioni relative alla sessione che a noi non interessano, quindi andate tranquillamente avanti. Nella pagina dei bitrate, giocate un pò con i parametri a seconda della potenza del vostro PC (ricordate che il PC si farà carico di un doppio encoding! Uno da parte di WME e uno da parte di VLC!). Ora dovrebbe chiedervi se volete salvare una copia del broadcast per l’archivio. Selezionate si e impostate come percorso di salvataggio lo stesso percorso che avete specificato nel file vlcf_original.xml. Cliccate su “Finish” e lo streaming dovrebbe cominciare. Andate al Dreambox e, analogamente a come fatto per il test 1, scorrete la lista dei file ma questa volta selezionate il file creato da WME. Ora dovrebbe partire lo stream! Ben fatto!

Spunti per miglioramenti

Questo mio metodo non è nè elegante, nè immediato. In realtà, è un vero casino 🙂 Per rendere tutto più semplice si potrebbe lavorare su:

  • Trovare impostazioni migliori per i bitrate su WME in modo da diminuire la latenza
  • Evitare l’uso di WME ed utilizzare lo streaming diretto dalla telecamera via VLC
  • Modificare il plugin VCLF-Final in modo da implementare una modalità di “ascolto”, in modo da non dover avviare manualmente l’esecuzione dello streaming

Spero vivamente che questa piccola guida serva a qualcuno! In ogni caso, per qualsiasi commento o suggerimento, non esitate a scrivere nell’apposito box a fondo pagina… ci conto! 😉