WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere

WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere

Sin dai primi giorni di lavoro sul sistema di videosorveglianza cloud, ci siamo imbattuti in un problema la cui soluzione sembrava impossibile: era la nostra Everest, la cui scalata ci ha richiesto enormi sforzi, ma ora finalmente abbiamo piantato la piccozza sulla vetta di questo rompicapo multipiattaforma.

Il sistema di trasmissione audio e video su Internet non dovrebbe dipendere dall'hardware, dai client Web e dagli standard supportati, e dovrebbe funzionare correttamente anche in presenza di Network Address Translators e firewall. L'utente della videosorveglianza cloud desidera accedere al servizio anche se utilizza telecamere analogiche e preferisce visualizzare la trasmissione di un video in diretta su un dispositivo all'avanguardia.

È molto significativo che l'utente voglia guardare video con la minima latenza. L'unica possibilità per mostrare video a bassa latenza nel browser è utilizzare WebRTC (web real-time communications). WebRTC è un insieme di tecnologie per la trasmissione peer-to-peer di video e audio nei browser, originariamente progettato per la trasmissione e riproduzione di flussi video a bassa latenza. Questo, tra l'altro, utilizza il protocollo UDP.

Prima di spiegarti cosa offre all'utente il nuovo motore, ti ricorderemo perché e per quale motivo supportiamo le tecnologie HLS e perché abbiamo deciso di andare avanti.

Motore HLS: pro e contro

WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere
(c)

La tecnologia HLS (HTTP Live Streaming) è stata sviluppata da Apple, quindi non sorprende che inizialmente il suo supporto sia apparso sui dispositivi di questo marchio. Oggi, il video in formato HLS è supportato praticamente da tutte le TV set-top box e molti dispositivi che utilizzano il sistema operativo Android.

Il motore HLS utilizza il ben noto codec video H264 insieme a flussi audio AAC o MP3 per la trasmissione in streaming dei dati video. L'intero flusso di dati audio e video viene imballato in un contenitore MPEG-TS. Per la trasmissione tramite il protocollo HTTP, le informazioni contenute nel flusso vengono suddivise in segmenti descritti nelle playlist m3u8. Solo allora questi segmenti vengono trasmessi insieme alle playlist tramite HTTP. La suddivisione in segmenti implica automaticamente un ritardo in secondi. Questa è una caratteristica del contenitore MPEG-TS.

Il motore HLS supporta anche flussi multibit-rate, Live/VOD.

Principali vantaggi dell'HLS:

  • supporto integrato in tutti i principali browser;
  • semplicità di implementazione (rispetto a WebRTC);
  • è molto comodo ed efficace organizzare vari eventi per un grande pubblico grazie al fatto che si possono caricare segmenti una sola volta su CDN.

Nonostante la semplicità del motore, non tutto è così fluido come sembra. Il principale problema è che gli sviluppatori di lettori di terze parti si sono discostati dalle raccomandazioni di Apple, ad esempio per quanto riguarda i formati audio supportati. In particolare, molti sviluppatori hanno iniziato ad aggiungere la possibilità di lavorare con flussi audio popolari: mpeg2 video, mpeg2 audio, ecc. Di conseguenza, è stato necessario creare diversi formati di playlist per lettori diversi.

Ma uno dei maggiori problemi del motore HLS è l'alto ritardo nella trasmissione dei dati.

Le origini dei "lag"

La principale causa dell'alto ritardo in HLS risiede nel fatto che i programmatori hanno creato il motore per ottenere la massima qualità dell'immagine. Pertanto, i parametri dell'intervallo di frame e il volume del buffer di riproduzione non sono adatti per le trasmissioni video in diretta. Questo porta a un ritardo piuttosto elevato nella trasmissione video, che può raggiungere i 5-7 secondi.

Da un lato, questo è poco, ad esempio, per chi guarda un film da un server di video hosting. Ma per i sistemi di videosorveglianza il ritardo nella trasmissione video può essere molto rilevante.

Se stai monitorando un ufficio dove i dipendenti si allontanano dallo schermo ogni ora, allora un ritardo di 5 secondi non ha alcun valore. Ma le persone hanno iniziato a lamentarsi che, ad esempio, durante la trasmissione di una partita di calcio, nel chat hanno già scritto GOOOOOL, mentre nel video questo non è ancora apparso :). Abbiamo già diversi casi d'uso in cui Ivideon deve praticamente sostituire Skype.

Si può eliminare il ritardo in HLS? La risposta a questa domanda suona come un discorso di un esperto cacciatore di ratti in una lezione per nuovi derattizzatori: "Non si possono estirpare i ratti, ma la loro popolazione può essere ridotta a un minimo ragionevole." Così è con il ritardo in HLS, non sarà possibile ridurlo a zero, ma sul mercato ci sono soluzioni che consentono di ridurre notevolmente il ritardo.

Segmentazione fine

Un altro svantaggio del motore è l'uso di file di dimensioni ridotte per la trasmissione dei dati. Sembra che non ci sia nulla di male in questo?

Chiunque abbia cercato di copiare un gran numero di piccoli file da un'unità a un'altra avrà sicuramente notato che la velocità di scrittura di un insieme del genere è notevolmente inferiore a quella di un singolo grande file di pari dimensioni. Inoltre, l'intensità delle operazioni sul disco rigido aumenta notevolmente, il che influisce negativamente sulle prestazioni complessive del computer. Pertanto, la trasmissione di dati video sotto forma di piccoli frammenti di 10 secondi contribuisce anche ad aumentare la latenza del motore.

Riassumiamo brevemente tutti i pro e contro della tecnologia HLS.

Vantaggi dell'HLS:

  1. Possibilità di lavorare con qualsiasi dispositivo. Puoi guardare video su qualsiasi dispositivo moderno, sia esso uno smartphone, un tablet, un laptop o un PC desktop. L'importante è che il browser web sia di una versione recente e compatibile con HTML5 e Media Source Extensions.
  2. Ottima qualità delle immagini. La funzione di streaming adattivo consente di modificare dinamicamente la qualità del video trasmesso in base alla larghezza di banda della connessione Internet, cercando di mantenere la massima qualità.
  3. Nessuna necessità di una configurazione complessa dell'hardware da parte dell'utente.

Svantaggi:

  1. Supporto limitato per il funzionamento del motore su alcuni dispositivi.
  2. Alte latenze nella trasmissione delle immagini.
  3. Aumento significativo delle inefficienze e complessità di ottimizzazione a causa dell'uso di file di piccole dimensioni. A causa delle caratteristiche del contenitore, non saremo mai in grado di ottenere una latenza inferiore alla dimensione del segmento.

Gli svantaggi dell'HLS hanno superato i suoi vantaggi e ci hanno costretti a cercare alternative.

Cos'è WebRTC

WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere
(c)

La piattaforma WebRTC è stata sviluppata da Google nel 2011 per la trasmissione di dati video e audio in streaming tra browser e app mobili con latenza minima. Per questo viene utilizzato il protocollo standard UDP e algoritmi speciali di gestione del flusso. Oggi è un progetto open source, attivamente supportato e sviluppato da Google.

WebRTC è un insieme di tecnologie per la trasmissione peer-to-peer di video e audio. Ciò significa che, ad esempio, i browser degli utenti possono utilizzare WebRTC per inviare dati direttamente l'uno all'altro, senza bisogno di server remoti per l'archiviazione e l'elaborazione dei dati. Tutte le informazioni vengono gestite dai browser e dalle applicazioni mobili degli utenti finali.

Le comodità e le grandi potenzialità di questa tecnologia sono state apprezzate dagli sviluppatori di tutti i browser popolari. Oggi, il supporto per WebRTC è implementato in Mozilla Firefox, Opera, Google Chrome (e in tutti i browser basati su Chromium), oltre che nelle applicazioni mobili per Android e iOS.

Nonostante i suoi indiscutibili vantaggi, WebRTC presenta alcuni svantaggi significativi.

Difficoltà di scelta

La tecnologia WebRTC è molto più complessa in termini di interazioni di rete poiché si basa sul P2P. È difficile da debug, da testare, e può comportarsi in modo imprevedibile. Inoltre, dobbiamo superare NAT e firewall, e garantire il funzionamento in reti dove l'UDP è bloccato.

L'implementazione di WebRTC da parte di Google è molto difficile da utilizzare. Esiste persino un'intera azienda che offre servizi di assemblaggio SDK. Inoltre, è stato molto complesso integrare l'implementazione di Google con il nostro sistema senza dover ricodificare tutto il video.

Tuttavia, volevamo da tempo offrire agli utenti la possibilità di lavorare con un video ‘live’ completo e minimizzare il ritardo dell'immagine sullo schermo rispetto agli eventi stessi. Inoltre, avevamo la volontà di rendere più confortevole l'uso di telecamere PTZ, dove i ritardi hanno un’importanza critica.

Considerando che altre implementazioni per combattere il lag hanno ancora funzionalità limitate e funzionano visibilmente peggio, abbiamo deciso di utilizzare WebRTC.

Cosa abbiamo fatto

WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere

Implementare correttamente la piattaforma WebRTC è un compito complicato. Ogni errore o imprecisione può comportare un aumento dei ritardi nella trasmissione del video, anziché una loro riduzione rispetto ad altre piattaforme.

Per il corretto funzionamento di WebRTC, è fondamentale effettuare un ammodernamento tecnologico dello stack per la gestione video web. E questo è esattamente ciò che abbiamo fatto.

Inizialmente abbiamo implementato un server di segnalazione del protocollo WebRTC sopra Websocket e abbiamo anche distribuito un server peer WebRTC nel cloud basato su SDK webrtc.org. Il suo compito è quello di distribuire flussi video ai peer WebRTC client in formato H.264 + Opus/G.711 senza riconversione video.

Abbiamo scelto Websocket come protocollo di segnalazione perché offre già un supporto di qualità in tutti i browser web più diffusi. Questo ci consente di ridurre notevolmente sia i costi di sviluppo che il tempo e le risorse spesi per ripetere handshake TCP e TLS rispetto ad AJAX.

Il fatto è che, per impostazione predefinita, WebRTC non fornisce un protocollo di segnalazione necessario per configurare, mantenere e interrompere correttamente le videochiamate in tempo reale tra le applicazioni sorgenti e client.

E per implementare autonomamente la tecnologia di segnalazione, era necessario sviluppare il nostro server di segnalazione con supporto per più protocolli web (Websocet, WebRTC). Inoltre, con la capacità di gestire in modo sicuro le sessioni e le notifiche in tempo reale, la gestione video e molti altri parametri.

Abbiamo superato le limitazioni P2P riducendo la latenza non a causa del P2P, ma attraverso UDP e gestione del flusso, mirata a ridurre la latenza. Questo è anche integrato in WebRTC, poiché il caso d'uso principale sono le conversazioni p2p attraverso il browser.

Nel client mobile abbiamo implementato un lettore utilizzando l'SDK webrtc.org, poiché solo in esso è gestita correttamente la gestione del flusso, sono presenti tutti i noti schemi di Forward Error Correction (FEC) e il meccanismo di ritrasmissione dei pacchetti è ben implementato per tutti i browser. Non è trascurabile il fatto che l'SDK webrtc.org è attivamente sviluppato da Google.

Qual è il risultato dell'implementazione di WebRTC?


Per la visione di video in diretta dalle telecamere, abbiamo aggiunto nel pannello personale un nuovo lettore ottimizzato basato su WebRTC. Questo garantisce un'alta velocità di caricamento del video e elimina completamente il problema dell'accumulo di ritardo man mano che aumenta il tempo di visione.

Dopo l'implementazione del supporto WebRTC nel servizio cloud di Ivideon, possiamo affermare con piena certezza che i nostri clienti possono ora accedere alla visione di un video in diretta completo. Attualmente, il ritardo nella trasmissione del video non supera un secondo! Per confronto, il precedente motore HLS garantiva la consegna del video con un ritardo di 5-7 secondi. La differenza nella velocità di visualizzazione del video è molto significativa e l'utente la notrà subito dopo aver iniziato a utilizzare il nostro servizio video.

Come prevedevamo, l'implementazione del nuovo lettore ha migliorato la reattività del PTZ e della comunicazione vocale con la telecamera.

WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere

C'è solo un dettaglio sottile a cui vogliamo richiamare l'attenzione. Il nuovo lettore WebRTC è attualmente in fase di test. Ecco perché non lo colleghiamo a tutti i nostri clienti di default. Ma puoi attivarlo autonomamente, attivando l'apposita opzione nelle impostazioni della telecamera (per fare ciò, devi andare nel panello di controllo).

Caratteristiche dell'implementazione di WebRTC nel servizio Ivideon

WebRTC e videosorveglianza: come abbiamo superato il ritardo video delle telecamere

WebRTC è ancora una tecnologia sperimentale. Il suo supporto non è ancora implementato correttamente in tutti i browser e dispositivi utente, così come in tutte le telecamere.

È proprio per questo che non abbiamo ancora reso il lettore WebRTC il predefinito per tutti gli utenti.

Per ora, ti consigliamo di utilizzare WebRTC solo nei browser Google Chrome. Le ultime versioni di Firefox e Safari supportano anche questa tecnologia, ma purtroppo sono ancora instabili.

Non abbiamo ancora implementato il supporto WebRTC per i browser sui dispositivi mobili. Attualmente, se accedi da un dispositivo mobile e attivi WebRTC, questa modalità non funzionerà. Tuttavia, WebRTC è presente nelle nostre applicazioni mobili per Android e iOS.

E concludendo la nostra esposizione delle caratteristiche dell'implementazione di WebRTC nel nostro servizio, evidenziamo ulteriori due dettagli sottili.

In primo luogo, la tecnologia è orientata alla trasmissione di video in diretta in tempo reale. Pertanto, se la larghezza di banda del tuo canale non sarà sufficiente per la trasmissione del video, noterai delle cadute di frame (con l'HLS noterai congelamenti del video e un aumento del ritardo, mentre i frame non cadranno), ma il video continuerà comunque a essere trasmesso in tempo reale.

In secondo luogo, poiché la tecnologia è progettata per funzionare specificamente con video dal vivo in tempo reale, non la utilizziamo per lavorare con dati video archiviati.

Altre modifiche al servizio

Attualmente, Flash non è più coinvolto nel meccanismo di selezione automatica del motore. È ancora possibile utilizzare un lettore di questo tipo, ma è necessario selezionarlo manualmente nelle impostazioni dell'account o della telecamera. Non è una questione di moda, ma semplicemente per statistiche del nostro servizio, praticamente non ci sono più utenti che utilizzano Flash. E per l'eventuale tentativo di determinare se il browser dell'utente supporta Flash, perdiamo circa 2 secondi di tempo prezioso.

Ecco un breve riassunto delle modifiche che vi aspettano nel nostro sistema di videosorveglianza cloud e nel vostro pannello di controllo. Rimanete con noi e seguite le novità!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster