Affinché i robot possano diventare una parte sempre più importante della nostra società, devono essere in grado di interfacciarsi in modo intelligente con i loro ambienti dinamici. Una delle sfide principali nel raggiungere questo obiettivo è l'integrazione di grandi quantità di dati provenienti da numerose telecamere e sensori. I blocchi pre-scritti del software Linux® semplificano questo compito. In questo articolo di Qualcomm vengono esaminati esempi di applicazioni per l'inferenza dell'IA e il video in applicazioni di IoT e robotica.
Streaming a più telecamere
L'applicazione della riga di comando gst-multi-camera-example dimostra lo streaming simultaneo da due sensori della telecamera. Può applicare una composizione in parallelo dei flussi video da mostrare su un dispositivo di visualizzazione oppure può codificare e memorizzare i flussi in file.
La pipeline dell'applicazione si presenta in questo modo:

L'applicazione supporta due configurazioni:
- Composizione e visualizzazione: il plugin qtimmfsrc sulla telecamera 0 e sulla telecamera 1 cattura i dati dai due sensori della telecamera. qtivcomposer esegue la composizione, quindi waylandsink visualizza i flussi affiancati sullo schermo.
- Codifica video: il plugin qtimmfsrc sulla telecamera 0 e sulla telecamera 1 cattura i dati dai due sensori della telecamera e li passa al plugin v4l2h264enc. Il plugin codifica e comprime i flussi della telecamera nel formato H.264, quindi li passa all'analisi e al multiplexing utilizzando rispettivamente i plugin h264parse e mp4mux. Infine, i flussi vengono trasmessi al plugin filesink, che li salva come file.
Ecco un esempio del risultato della prima configurazione: l'immagine a destra è monocromatica, poiché anche il secondo sensore della telecamera nel kit di sviluppo è monocromatico.

Quando si utilizza questa applicazione?
gst-multi-camera-example è un componente fondamentale per l'acquisizione di dati da due sensori della telecamera, con opzioni per comporre e visualizzare i flussi video o codificarli e archiviarli in file. È possibile utilizzare questa app di esempio come base per le proprie applicazioni di acquisizione/codifica delle immagini della telecamera, tra cui dashcam e telecamere stereo.
Videowall – Decodifica e visualizzazione video multicanale
L'applicazione della riga di comando gst-concurrent-videoplay-composition facilita la decodifica e la riproduzione simultanea di video codificati in AVC. L'app esegue la composizione di più flussi video provenienti da file o dalla rete (ad esempio, telecamere IP) per la visualizzazione come videowall.
L'applicazione può accettare più file video (ad esempio 4 o 8) come input, decodificare tutti i video compressi, ridimensionarli e comporli come un videowall. L'applicazione richiede almeno un file video in input, in formato MP4 con codec AVC.
La pipeline dell'applicazione si presenta in questo modo per 4 canali:

Ogni canale utilizza dei plugin per eseguire le seguenti elaborazioni:
- Legge i dati video compressi da un file utilizzando filesrc.
- Demultiplexa il file con qtdemux.
- Analizza i flussi video H.264 utilizzando h264parse.
- Decodifica i flussi utilizzando v4l2h264dec.
I flussi decodificati da tutti i canali vengono poi composti insieme utilizzando qtivcomposer e visualizzati utilizzando waylandsink.
Ecco un esempio di utilizzo dell'app gst-concurrent-videoplay-composition su 4 flussi video:

Quando si utilizza questa applicazione?
Con gst-concurrent-videoplay-composition è possibile decodificare più flussi video compressi, quindi comporli in un videowall, ad esempio negli spazi commerciali e nella segnaletica digitale. Come edge box per la videosorveglianza, è possibile acquisire input da più telecamere IP e visualizzarli su un unico schermo. In un'applicazione per videoconferenze è possibile elaborare e visualizzare i feed di più persone partecipanti alla chiamata, con ciascun partecipante che trasmette un video.
Prossimi passi
È possibile ottenere queste applicazioni o l'intero Qualcomm Intelligent Multimedia SDK su GitHub. Sarà quindi possibile iniziare a integrarli nelle proprie applicazioni.
