WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere

WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere

Fin dai primi giorni di lavoro su un sistema di videosorveglianza in cloud, ci siamo trovati di fronte a un problema, senza una soluzione alla quale potevamo rinunciare a Ivideon: questo era il nostro Everest, scalata che ha richiesto molte energie, ma ora finalmente abbiamo ho infilato una piccozza nella parte superiore del puzzle multipiattaforma.

Il sistema per la trasmissione di audio e video su Internet non dovrebbe dipendere dalle apparecchiature, dai client Web e dagli standard da essi supportati e funzionare correttamente anche in presenza di traduttori di indirizzi di rete e firewall. Un utente di videosorveglianza cloud vuole accedere al servizio, anche se utilizza telecamere analogiche, e preferisce guardare la trasmissione video in diretta sul dispositivo più moderno.

È molto significativo che l'utente desideri guardare i video con un ritardo minimo. Quasi l'unico modo per mostrare video con bassa latenza in un browser è utilizzare WebRTC (comunicazioni web in tempo reale). WebRTC è un insieme di tecnologie per la trasmissione peer-to-peer di video e audio nei browser, inizialmente progettate per la trasmissione e la riproduzione di flussi video con bassa latenza. A questo scopo viene utilizzato tra l'altro il protocollo UDP.

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

Motore HLS: pro e contro

WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere
(c)

La tecnologia HLS (HTTP Live Streaming) è stata sviluppata da Apple, quindi non sorprende che sia stata supportata inizialmente sui dispositivi Apple. Oggi, il video HLS è supportato praticamente da tutti i decoder e da molti dispositivi che utilizzano il sistema operativo Apple. Android.

Il motore HLS utilizza il noto codec video H264 in combinazione con flussi audio AAC o MP3 per lo streaming di dati video. L'intero flusso di dati audio e video è racchiuso in un contenitore di trasporto MPEG-TS. Per la trasmissione tramite protocollo HTTP, le informazioni contenute nello stream sono suddivise in frammenti descritti nelle playlist m3u8. E solo allora questi frammenti, insieme alle playlist, vengono trasmessi tramite HTTP. Il Chunking significa automaticamente un ritardo in secondi. Questa è una caratteristica del contenitore MPEG-TS.

Il motore HLS supporta anche flussi multibitrate, Live/VOD.

Principali vantaggi di HLS:

  • supporto integrato in tutti i principali browser;
  • facilità di implementazione (rispetto a WebRTC);
  • È molto comodo ed efficiente organizzare tutti i tipi di trasmissioni per un vasto pubblico perché i segmenti possono essere caricati una sola volta su una CDN.

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

Ma uno dei maggiori problemi del motore HLS è l’elevata latenza nel trasferimento dei dati.

Le origini dei “freni”

Il motivo principale dell'elevata latenza di HLS risiede nel fatto che i programmatori hanno creato il motore per ottenere immagini della massima qualità. Pertanto i parametri utilizzati per l'intervallo dei fotogrammi e la dimensione del buffer di riproduzione semplicemente non sono adatti per le trasmissioni video in diretta. Per questo motivo, c'è un ritardo abbastanza elevato nella trasmissione delle riprese video, che può essere di 5-7 secondi.

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

Se stai osservando un ufficio in cui i dipendenti alzano lo sguardo dai monitor una volta ogni ora, un ritardo di 5 secondi non ha alcuna importanza. Ma la gente ha cominciato a lamentarsi del fatto che, ad esempio, durante la trasmissione di una partita di calcio, avevano già scritto GOOOOL nella chat, ma questo non è ancora nel video :). Abbiamo già una serie di casi utente in cui Ivideon dovrebbe praticamente sostituire Skype.

È possibile battere la latenza in HLS? La risposta a questa domanda suona come il discorso di un esperto disinfestatore di ratti durante una conferenza agli specialisti del controllo dei parassiti alle prime armi: "I ratti non possono essere sterminati, ma il loro numero può essere ridotto a un minimo ragionevole". Lo stesso vale per il ritardo in HLS, non sarà possibile ridurlo a zero, ma esistono soluzioni sul mercato che possono ridurre significativamente il ritardo.

Tagli pregiati

Un altro svantaggio del motore è l'utilizzo di piccoli file per il trasferimento dei dati. Sembrerebbe che cosa c'è di sbagliato in questo?

Chiunque abbia provato a copiare un gran numero di piccoli file da un supporto all'altro avrà probabilmente notato che la velocità di scrittura di un tale set è molto inferiore rispetto a quella di un file di grandi dimensioni della stessa dimensione. E l'intensità dell'accesso al disco rigido aumenta in modo significativo, il che generalmente influisce negativamente sulle prestazioni dell'intero computer. Pertanto, anche la trasmissione dei dati video in piccoli blocchi di 10 secondi contribuisce ad aumentare la latenza del motore.

Riassumiamo brevemente tutti i pro e i contro della tecnologia HLS.

Vantaggi dell'HLS:

  1. Capacità di lavorare con qualsiasi dispositivo. Puoi guardare video su qualsiasi dispositivo moderno, sia esso uno smartphone, un tablet, un laptop o un PC desktop. La cosa principale è che il browser web sia aggiornato e compatibile con HTML5 e Media Source Extensions.
  2. Eccellente qualità dell'immagine. La funzione di trasmissione dati adattiva utilizzata consente di modificare dinamicamente la qualità del video trasmesso in base alla larghezza di banda della connessione Internet, mentre l'algoritmo si sforza di mantenere la massima qualità.
  3. Non è necessaria una configurazione complessa dell'apparecchiatura dell'utente.

Svantaggi:

  1. Supporto limitato per l'utilizzo del motore su alcuni dispositivi.
  2. Elevati ritardi nella trasmissione delle immagini.
  3. Aumento significativo del sovraccarico e della complessità dell'ottimizzazione dovuto all'utilizzo di file di piccole dimensioni. A causa della natura del contenitore, non saremo mai in grado di ottenere una latenza inferiore alla dimensione del segmento.

Gli svantaggi di HLS hanno superato per noi i suoi vantaggi e ci hanno costretto a cercare opzioni alternative.

Cos'è WebRTC

WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere
(c)

La piattaforma WebRTC è stata sviluppata da Google nel 2011 per trasmettere dati audio e video in streaming tra browser e applicazioni mobili con una latenza minima. A tale scopo vengono utilizzati il ​​protocollo UDP standard e speciali algoritmi di controllo del flusso. Oggi è un progetto open source, è gestito attivamente da Google ed è in fase di sviluppo.

WebRTC è un insieme di tecnologie per la trasmissione video e audio peer-to-peer. Ciò significa, ad esempio, che i browser degli utenti che utilizzano WebRTC possono scambiarsi dati direttamente, senza utilizzare server remoti per archiviare ed elaborare i dati. Tutte le informazioni vengono elaborate anche dai browser e dalle applicazioni mobili degli utenti finali.

La praticità e le ampie capacità di questa tecnologia sono state apprezzate dagli sviluppatori di tutti i browser più diffusi. Il supporto WebRTC è attualmente disponibile in Mozilla Firefox, Opera, Google Chrome (e in tutti i browser basati su Chromium), nonché nelle app per dispositivi mobili in esecuzione su Android e iOS.

Nonostante tutti i suoi indubbi vantaggi, WebRTC presenta diversi svantaggi significativi.

Difficoltà nella scelta

La tecnologia WebRTC è molto più complessa in termini di interazioni di rete poiché si tratta di P2P. È difficile da eseguire il debug, testare e può comportarsi in modo imprevedibile. Allo stesso tempo, dobbiamo superare NAT e firewall, dobbiamo garantire il funzionamento nelle reti in cui UDP è bloccato.

L'implementazione WebRTC di Google è molto difficile da utilizzare. Esiste persino un'intera azienda che fornisce servizi di assemblaggio SDK. Inoltre, era molto difficile integrare l'implementazione di Google con il nostro sistema senza ricodificare l'intero video.

Tuttavia, desideriamo da tempo offrire agli utenti l'opportunità di lavorare con video "live" a tutti gli effetti e ridurre al minimo il ritardo tra l'immagine sullo schermo e gli eventi stessi. Inoltre, desideravamo rendere più confortevole l'uso delle telecamere PTZ, dove i ritardi sono critici.

Considerando che altre implementazioni anti-lag hanno ancora funzionalità limitate e funzionano notevolmente peggio, abbiamo deciso di utilizzare WebRTC.

Cosa abbiamo fatto

WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere

Implementare correttamente la piattaforma WebRTC non è un compito facile. Qualsiasi errore di calcolo o imprecisione può portare a ritardi nella trasmissione video non solo non in diminuzione rispetto ad altre piattaforme, ma addirittura in aumento.

Affinché WebRTC funzioni correttamente, è innanzitutto necessario effettuare un aggiornamento tecnologico dello stack per lavorare con i video web. Questo è quello che abbiamo fatto.

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

Abbiamo scelto Websocket come protocollo di segnalazione perché dispone già di un supporto di alta qualità in tutti i browser Web più diffusi. Grazie a ciò, è possibile ridurre in modo significativo non solo il sovraccarico di sviluppo, ma anche evitare sprechi di tempo e risorse con ripetuti handshake TCP e TLS rispetto ad AJAX.

Il fatto è che, per impostazione predefinita, WebRTC non fornisce il protocollo di segnalazione necessario per configurare, mantenere e terminare correttamente la comunicazione video in tempo reale tra l'origine e le applicazioni client.

E per implementare in modo indipendente la tecnologia di segnalazione, dovevamo sviluppare il nostro server di segnalazione con supporto per diversi protocolli web (Websocet, WebRTC). E con la possibilità di gestire in sicurezza sessioni e notifiche in tempo reale, gestione video e molto altro.

Abbiamo superato i limiti del P2P riducendo la latenza non tramite P2P, ma tramite UDP e controllo del flusso per ridurre la latenza. Anche questo è integrato in WebRTC, poiché il caso d'uso principale sono le conversazioni p2p tramite browser.

Nel client mobile, abbiamo implementato il player utilizzando l'SDK webrtc.org, poiché solo lui implementa correttamente il controllo del flusso, ha tutti gli schemi noti di Forward Error Correction (FEC) e implementa correttamente il meccanismo per il reinvio dei pacchetti per tutti i browser. È anche importante che l'SDK webrtc.org venga sviluppato attivamente da Google.

Qual è il risultato dell'implementazione di WebRTC?


Per visualizzare i video in diretta dalle telecamere, abbiamo aggiunto al tuo account personale un nuovo player ottimizzato basato su WebRTC. Fornisce velocità di caricamento video elevate ed elimina completamente il problema dell'accumulo di latenza con l'aumentare del tempo di visualizzazione.

Dopo aver introdotto il supporto WebRTC nel servizio cloud Ivideon, possiamo affermare con assoluta certezza che i nostri clienti possono ora guardare video live a tutti gli effetti. Ora il ritardo durante la trasmissione delle sequenze video non supera un secondo! Per fare un confronto, il precedente motore HLS forniva la consegna video con un ritardo di 5-7 secondi. La differenza nella velocità della dimostrazione video è molto significativa e l'utente se ne accorgerà subito dopo aver iniziato a lavorare con il nostro servizio video.

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

WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere

C'è solo un punto sottile su cui vogliamo attirare l'attenzione. Il nuovo lettore WebRTC sta attualmente funzionando in modalità test. Ed è per questo che non lo abilitiamo per tutti i nostri clienti per impostazione predefinita. Puoi però attivarla tu stesso abilitando la voce corrispondente nelle impostazioni della fotocamera (per farlo vai su ufficio privato).

Caratteristiche dell'implementazione di WebRTC nel servizio Ivideon

WebRTC e videosorveglianza: come abbiamo sconfitto la latenza video delle telecamere

WebRTC è ancora una tecnologia sperimentale al momento. Il suo supporto non è ancora implementato correttamente in tutti i browser e dispositivi utente, e nemmeno in tutte le fotocamere.

Questo è proprio il motivo per cui non abbiamo ancora reso il lettore WebRTC predefinito per tutti gli utenti.

Per ora, ti consigliamo di utilizzare WebRTC solo nei browser Google Chrome. Anche le ultime versioni di Firefox e Safari supportano questa tecnologia, ma purtroppo è ancora instabile.

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

E concludendo la storia sulle funzionalità dell'implementazione WebRTC nel nostro servizio, notiamo altri due punti sottili.

Innanzitutto, la tecnologia si concentra sulla trasmissione di video in diretta in tempo reale. Pertanto, se il tuo canale non ha larghezza di banda sufficiente per trasmettere il video, noterai cali di frame (con HLS noterai sbiadimento del video e aumento della latenza, ma non ci saranno cali di frame), ma il video verrà comunque trasmesso in realtà tempo.

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

Altre modifiche al servizio

Al momento Flash non è più coinvolto nel meccanismo di selezione automatica del motore. Puoi comunque utilizzare un lettore di questo tipo, ma per fare ciò devi selezionarlo manualmente nell'account o nelle impostazioni della fotocamera. Questo non è un omaggio alla moda, è solo che, secondo le statistiche del nostro servizio, non ci sono praticamente più utenti che lavorano con Flash. E cercando di determinare se il browser dell'utente lo supporta, perdiamo circa 2 secondi di tempo prezioso.

Ecco una breve panoramica dei cambiamenti che ti aspettano nel nostro sistema di videosorveglianza cloud e nel nostro account personale. Resta con noi e segui le novità!

Fonte: habr.com

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