Realizzare un videowall con VLC e AutoHotKey

Di - 11 June 2014 - in
Post image for Realizzare un videowall con VLC e AutoHotKey

Questo articolo nasce da una mia personale esperienza durante la messa in servizio dei sistemi di controllo e di sicurezza di un tunnel stradale all’estero. Troppo spesso capita, come è successo a me, di diffidare di soluzioni “fai-da-te” (ritenute pregiudizialmente poco professionali) per affidarsi a prodotti commerciali che promettono completezza, affidabilità e supporto tecnico: se un prodotto “licenziato” assicura un tempo di start-up rapido, questo viene ovviamente preferito rispetto alla soluzione da pensare e da realizzare. Ma non sempre le cose vanno per il verso giusto.

Non citerò, ovviamente il prodotto “incriminato”, regolarmente acquistato e dimostratosi inutilizzabile, ma vi racconterò che cosa mi aspettavo, che cosa non ha funzionato e come abbiamo risolto il problema. La specifica ci chiede di realizzare un video-wall, ovvero un set di display ancorati in parete che offrano agli operatori della control room la visuale completa su tutte le telecamere di sorveglianza installate nel tunnel. I display sono 8 e su ognuno devono essere rappresentati gli stream live di 4 telecamere.

VideoWallEngeene2

Un dettaglio del videowall

Abbiamo scelto di collegare gli 8 display ad una workstation entro un armadio rack con a bordo una Matrox M9188 PCIe x16 multi-display Octal graphics card (questa la cito perché sono soddisfatto delle prestazioni che ha dimostrato!) alloggiata in una macchina molto performante, un Intel i7 a 8 core con 8 Gb di RAM.

L’applicazione acquistata promette, oltre alla visualizzazione degli stream, anche il monitoraggio diagnostico delle telecamere, il guard-tour (la modalità che permette di ciclare telecamere diverse su finestre in posizione fissa sullo schermo), la visualizzazione delle registrazioni. Tutte feature extra che potremmo avere anche su un’altra macchina: è difficile lavorare su uno schermo, per quanto grande, a 2 metri del banco di comando.

Iniziano i problemi: il software non si riesce ad installarlo. Troviamo una versione aggiornata e ritentiamo. Non c’è niente da fare. Il caso vuole che però funzioni su una workstation a monitor singolo, ma sul video-wall server crasha in continuazione (ok, crasha anche sulla workstation, ma con minore frequenza). Si scopre che “forse”, “può darsi”, “si vede che” non supporta le schede grafiche Matrox.

Benissimo. Siamo senza video-wall a una settimana dai collaudi.

Alternative per visualizzare gli stream rtsp in h264? VLC, l’onnipotente.

Il problema è che gli stream sono 30. Aprire 30 finestre e trascinarle attraverso 8 display alla loro esatta posizione non è un’opzione perseguibile, se lo facciamo a mano. Ricordo allora di aver sentito parlare di un motore di macro/scripting molto potente: si chiama AutoHotKey, e consente di scrivere script interpretati che svolgono operazioni sui controlli di interfaccia a schermo come se fosse un utente a compierli. Lo scarico al volo e lo installo. Resto sorpreso dalle possibilità che offre e inizio ad esplorare frettolosamente la guida alla ricerca di qualcosa che mi faccia posizionare le finestre in modo automatico. La sicurezza, in questo specifico caso, non è un grosso problema: la workstation è connessa in rete, ma non ha accesso a internet, le porte USB sono disabilitate e comunque inaccessibili dentro l’armadio rack. Non avrà grossi problemi.

Finisco, due giorni dopo, con una serie di script che aprono gli stream, li posizionano in automatico, rieffettuano la connessione agli stream che dovessero per qualunque motivo disconnettersi, e riaprono le finestre erroneamente chiuse dall’utente andando a riposizionarle correttamente.

Il videowall è stabile, gli stream sono fluidi, eventuali telecamere con problemi di connessione sono ripristinate automaticamente e facendo doppio click su un flusso si commuta la rappresentazione tra finestra e fullscreen: un videowall non deve fare altro, e il nostro lo sta facendo egregiamente, certamente meglio di un prodotto commerciale buggato e instabile che non vale più della suola delle scarpe di VideoLAN. Con un po’ di lavoro in più sarà possibile potenziare ancora molto le caratteristiche della realizzazione: potremmo pilotare da remoto degli scenari specifici di visualizzazione da attivare in caso di emergenze, oppure implementare un guard-tour tra gli stream in modo da vedere ogni stream in full-HD… le possibilità che si sono aperte con una soluzione “artigianale” sono infinite ed estremamente affidabili rispetto a quelle che si sarebbero proposte con il software commerciale consigliato.

Il videowall pronto

Con questo non voglio dire che non esistano software commerciali molto più evoluti, semplici da configurare ed ben più integri, ma che a volte, tra la soluzione commerciale economica (poco aggiornata, non supportata, ignorata dalla community) e quella Open Source, prevale la seconda e vince a mani basse!

Seguono alcune parti di codice che ho implementato con AutoHotKey per la gestione di base del videowall.

Apertura e riposizionamento di una finestra, viene eseguito per ogni flusso ogni minuto:

IfWinExist, <URL stream h264> {
WinActivate
WinMove,,, 0, 0, 1920, 540
}
else {
Run , vlc –width=”960″ –height=”540″ –aspect-ratio=”16:10″ –no-video-deco –no-qt-error-dialogs rtsp://<URL stream h264>
}

Verifica assenza stream video e tenta la riconnessione, viene eseguito ogni minuto:

loop {
IfWinExist, VLC media player {
WinActivate
Send p
Sleep, 2000
RunWait, <script che riposiziona la finestra>
Sleep, <delay prossimo tentativo>
}
}

VLC lo potete trovare qui: http://www.videolan.org/vlc/
AutoHotKey lo potete trovare qui: http://www.autohotkey.com/
Immagini rilasciate da Project s.r.l. (http://www.projectweb.it)

Leave a Reply

Michele Brami Articolo scritto da

Progettista di sistemi di automazione e supervisione industriali, appassionato di tecnologie e design innovativi. Ex-marinaio, sommergibilista a vita.

Contatta l'autore

Previous post:

Next post: