
Da i primi ghjorni di travaglià nantu à un sistema di surviglianza di video in nuvola, avemu statu affruntatu cù un prublema, senza una suluzione à quale pudemu rinunzià à Ivideon - questu era u nostru Everest, arrampicata chì hà pigliatu assai energia, ma avà avemu infine. ficcatu una picotta in a cima di u puzzle multiplataforma.
U sistema di trasmissione di l'audio è video nantu à Internet ùn deve micca dipende di l'equipaggiu, i clienti Web è i normi chì sustenenu, è ancu travaglià bè in presenza di traduttori di indirizzu di rete è firewalls. Un utilizatore di sorveglianza di video in nuvola vole accede à u serviziu, ancu s'ellu usa camere analogiche, è preferisce vede a trasmissione di video in diretta nantu à u dispositivu più mudernu.
Hè assai significativu chì l'utilizatore vole à fighjà video cun ritardu minimu. Quasi l'unicu modu per vede video cù bassa latenza in un navigatore hè di utilizà WebRTC (comunicazioni web in tempu reale). WebRTC hè un inseme di tecnulugia per a trasmissione peer-to-peer di video è audio in i navigatori, inizialmente pensatu per a trasmissione è a riproduzione di flussi video cù bassa latenza. Per questu scopu, frà altri cose, u protocolu UDP hè utilizatu.
Prima di dì ciò chì u novu mutore dà à l'utilizatori, vi ricurderemu perchè è perchè sustenemu e tecnulugia HLS, è perchè avemu decisu di passà.
Motore HLS: pro è cuntrariu

()
A tecnulugia HLS (HTTP Live Streaming) hè stata sviluppata da Apple, dunque ùn hè micca surprisante ch'ella sia stata prima supportata da i dispositivi Apple. Oghje, u video HLS hè ancu supportatu da praticamente tutti i set-top box è parechji dispositivi chì utilizanu u sistema operativu. Android.
U mutore HLS usa u famosu codec video H264 in combinazione cù flussi audio AAC o MP3 per trasmette dati video. Tuttu u flussu di dati audio è video hè imballatu in un containeru di trasportu MPEG-TS. Per a trasmissione via u protocolu HTTP, l'infurmazione cuntenuta in u flussu hè divisa in frammenti descritti in playlists m3u8. È solu allora sti frammenti, cù e playlists, sò trasmessi via HTTP. Chunking automaticamente significa un ritardu in seconde. Questa hè una caratteristica di u cuntinuu MPEG-TS.
U mutore HLS supporta ancu flussi multibitrate, Live / VOD.
Vantaghji principali di HLS:
- supportu integratu in tutti i navigatori principali;
- facilità di implementazione (paragunatu à WebRTC);
- Hè assai còmuda è efficiente per urganizà ogni tipu di trasmissioni à un grande audience per u fattu chì i segmenti ponu esse caricati in un CDN una volta.
Malgradu a simplicità di u mutore, micca tuttu hè cusì liscia cum'è pare. U prublema principali hè chì i sviluppatori di terzu partitu sò alluntanati da i cunsiglii di Apple, per esempiu in quantu à i formati audio supportati. In particulare, parechji sviluppatori cuminciaru à aghjunghje l'abilità di travaglià cù i flussi di audio populari: mpeg2 video, mpeg2 audio, etc. In u risultatu, anu da creà diversi formati di playlist per diversi attori.
Ma unu di i prublemi maiò cù u mutore HLS hè l'alta latenza in u trasferimentu di dati.
L'origine di i "freni"
U mutivu principale di l'alta latenza di HLS si trova in u fattu chì i programatori anu creatu u mutore per ottene l'imaghjini di più alta qualità. Per quessa, i paràmetri di l'intervallu di fotogramma utilizatu è a dimensione di u buffer di riproduzione sò solu micca adattati per trasmissioni video in diretta. Per via di questu, ci hè un ritardu abbastanza altu in a trasmissione di filmati video, chì pò esse 5-7 seconde.
Da una banda, questu ùn hè micca assai, per esempiu, per quelli chì vedenu un filmu da un servitore di hosting video. Ma per i sistemi di surviglianza video, u ritardu in a trasmissione di video video pò esse assai impurtante.
Sè vo site un uffiziu induve l'impiegati cercanu da i so monitori una volta à l'ora, allora un ritardu di 5 seconde ùn importa micca. Ma a ghjente hà cuminciatu à lagnà chì, per esempiu, quandu trasmette una partita di football, hà digià scrittu GOOOOL in u chat, ma questu ùn hè micca ancu in u video :). Avemu digià una quantità di casi d'utilizatori induve Ivideon duveria praticamente rimpiazzà Skype.
Hè pussibule batte a latenza in HLS? A risposta à sta quistione sona cum'è u discorsu di un sterminatore di ratti sperimentatu in una conferenza à i specialisti di cuntrollu di pesti principianti: "I ratti ùn ponu micca esse sterminati, ma u so numeru pò esse ridutta à un minimu raghjone". U stessu cù u ritardu in HLS, ùn serà micca pussibule di riduce à cero, ma ci sò suluzioni nantu à u mercatu chì ponu riduce significativamente u ritardu.
Tagli fini
Un altru svantaghju di u mutore hè l'usu di picculi schedarii per u trasferimentu di dati. Sembra chì ciò chì hè sbagliatu in questu?
Qualchidunu chì hà pruvatu à copià un gran numaru di schedarii chjuchi da un mediu à l'altru hà prubabilmente nutatu chì a velocità di scrittura di un tali settore hè assai più bassu di un grande schedariu di a stessa dimensione. È l'intensità di l'accessu à u discu duru aumenta significativamente, chì generalmente affetta negativamente u rendiment di l'urdinatore sanu. Dunque, a trasmissione di dati video in picculi pezzi di 10 secondi cuntribuisce ancu à una latenza aumentata di u mutore.
Riassumemu brevemente tutti i pro è i contra di a tecnulugia HLS.
Vantaghji di HLS:
- Capacità di travaglià cù qualsiasi dispositi. Pudete vede video nantu à qualsiasi dispositivu mudernu, sia un smartphone, tableta, laptop o PC desktop. A cosa principal hè chì u navigatore web hè aghjurnatu è cumpatibile cù HTML5 è Media Source Extensions.
- Eccellente qualità di l'imagine. A funzione adattativa di trasmissione di dati utilizata permette di cambià dinamicamente a qualità di u video trasmessu secondu a larghezza di banda di a cunnessione Internet, mentre chì l'algoritmu strives per mantene a qualità massima.
- Ùn ci hè bisognu di cunfigurazione cumplessa di l'equipaggiu di l'utilizatori.
Tu me:
- Supportu limitatu per travaglià cù u mutore in certi dispositi.
- Ritardi elevati in a trasmissione di l'imagine.
- Aumentu significativu in overhead è cumplessità di ottimisazione per via di l'usu di picculi schedari. A causa di a natura di u cuntinuu, ùn pudemu mai avè una latenza più bassu di a dimensione di u segmentu.
I svantaghji di l'HLS anu superatu i so vantaghji per noi è ci furzò à circà l'opzioni alternative.
Cosa hè WebRTC

()
A piattaforma WebRTC hè stata sviluppata da Google in 2011 per trasmette streaming video è dati audio trà i navigatori è l'applicazioni mobili cù una latenza minima. Per questu, u protocolu standard UDP è l'algoritmi di cuntrollu di flussu speciale sò usati. Oghje hè un prughjettu open source, hè attivamente mantinutu da Google è hè sviluppatu.
WebRTC hè un inseme di tecnulugia per a trasmissione di video è audio peer-to-peer. Hè, per esempiu, i navigatori di l'utilizatori chì utilizanu WebRTC ponu trasfiriri dati à l'altri direttamente, senza aduprà servitori remoti per almacenà è trasfurmà e dati. Tutte l'infurmazioni sò ancu trattati da i navigatori di l'utilizatori finali è l'applicazioni mobili.
A cunvenienza è e capacità estese di sta tecnulugia sò state apprezzate da i sviluppatori di tutti i navigatori populari. U supportu WebRTC hè attualmente dispunibule in Mozilla Firefox, Opera, Google Chrome (è tutti i navigatori basati nantu à Chromium), è ancu in l'applicazioni mobili chì funzionanu. Android è iOS.
Per tutti i so vantaghji indubbiti, WebRTC hà parechji svantaghji significati.
Difficultà di scelta
A tecnulugia WebRTC hè assai più cumplessa in quantu à l'interazzione di a rete per u fattu chì si tratta di P2P. Hè difficiuli di debug, pruvà, è pò cumportà imprevisible. À u listessu tempu, avemu bisognu di superà NAT è firewall, avemu bisognu di assicurà l'operazione in e rete induve UDP hè bluccatu.
L'implementazione WebRTC di Google hè assai difficiule d'utilizà. Ci hè ancu una cumpagnia sana chì furnisce servizii di assemblea SDK. In più, l'implementazione di Google era assai difficiuli di integrà cù u nostru sistema senza ricudificà tuttu u video.
In ogni casu, avemu longu vulutu dà à l'utilizatori l'uppurtunità di travaglià cù video "live" cumpletu è minimizzà u lag trà l'imaghjini nantu à u screnu è l'avvenimenti stessi. In più, avemu avutu u desideriu di fà l'usu di e camere PTZ, induve i ritardi sò critichi, più còmode.
Cunsiderendu chì altre implementazioni anti-lag anu ancu una funziunalità limitata è travaglianu notevolmente peghju, avemu decisu di utilizà WebRTC.
Chì avemu fattu

Implementà bè a piattaforma WebRTC ùn hè micca un compitu faciule. Qualchese miscalculation o imprecisione pò purtà à ritardi in a trasmissione di video ùn solu micca diminuite in paragunà à altre piattaforme, ma ancu aumentendu.
Per WebRTC per travaglià bè, prima di tuttu, hè necessariu di realizà un aghjurnamentu tecnologicu di a pila per travaglià cù video web. Hè ciò chì avemu fattu.
Prima, avemu implementatu un servitore di protocolu di signalazione WebRTC nantu à Websocket, è ancu implementatu un servitore WebRTC peer in u nuvulu basatu annantu à u SDK webrtc.org. U so compitu hè di distribuisce flussi video à i clienti WebRTC parenti in u formatu H.264 + Opus/G.711 senza transcoding video.
Avemu sceltu Websocket cum'è u protocolu di signalazione perchè hà digià supportu di alta qualità in tutti i navigatori web populari. Per via di questu, pudete riduce significativamente micca solu i costi di sviluppu, ma ancu evità di perde u tempu è e risorse nantu à una stretta di mano TCP è TLS ripetuta cumparatu cù AJAX.
U fattu hè chì, per automaticamente, WebRTC ùn furnisce micca u protocolu di signalazione necessariu per cunfigurà bè, mantene è finisce a cumunicazione video in tempu reale trà a fonte è l'applicazioni cliente.
È per implementà indipindentamente a tecnulugia di signalazione, avemu bisognu di sviluppà u nostru servitore di signalazione cù supportu per parechji protokolli web (Websocet, WebRTC). È cù a capacità di gestisce in modu sicuru sessioni è notificazioni in tempu reale, gestione video è assai di più.
Superemu e limitazioni di P2P riducendu a latenza micca per P2P, ma per UDP è u cuntrollu di flussu per riduce a latenza. Questu hè ancu integratu in WebRTC, postu chì u casu d'usu principale hè conversazioni p2p via un navigatore.
In u cliente mobile, avemu implementatu u lettore utilizendu u webrtc.org SDK, postu chì solu implementa currettamente u cuntrollu di u flussu, hà tutti i schemi cunnisciuti di correzione di errore in avanti (FEC), è implementa currettamente u mecanismu per rinvià i pacchetti per tutti i navigatori. Hè ancu impurtante chì u webrtc.org SDK hè attivamente sviluppatu da Google.
Chì ghjè u risultatu di l'implementazione di WebRTC?
Per vede video in diretta da e camere, avemu aghjustatu un novu lettore ottimizzatu basatu in WebRTC à u vostru contu persunale. Fornisce velocità di carica veloce di video è elimina cumplettamente u prublema di l'accumulazione di latenza cum'è u tempu di visualizazione aumenta.
Dopu avè introduttu u supportu WebRTC in u serviziu di nuvola Ivideon, pudemu dì cun cunfidenza cumpleta chì i nostri clienti ponu avà fighjà video in diretta cumpletu. Avà u ritardu quandu trasmette e sequenze video ùn supera micca un secondu! Per paragunà, u mutore HLS precedente hà furnitu a consegna di video cun un ritardu di 5-7 seconde. A diffarenza di a velocità di dimostrazione di video hè assai significativa, è l'utilizatori l'avverà subitu dopu avè principiatu à travaglià cù u nostru serviziu di video.
Cumu l'aspittavamu, l'implementazione di u novu attore hà migliuratu a risposta di PTZ è a cumunicazione di voce cù a camera.

Ci hè solu un puntu sottile chì vulemu attirà l'attenzione. U novu lettore WebRTC travaglia attualmente in modu di prova. È hè per quessa chì ùn l'avemu micca attivatu per tutti i nostri clienti per difettu. Ma pudete attivà sè stessu attivendu l'elementu currispondente in i paràmetri di a camera (per fà questu, andate à ).
Caratteristiche di l'implementazione di WebRTC in u serviziu Ivideon

WebRTC hè sempre una tecnulugia sperimentale à u mumentu. U so supportu ùn hè ancu implementatu currettamente in tutti i navigatori è i dispositi d'utilizatori, è ancu micca in tutte e camere.
Hè precisamente per quessa chì ùn avemu micca ancu fattu u lettore WebRTC u predeterminatu per tutti l'utilizatori.
Per avà, ricumandemu di utilizà WebRTC solu in i navigatori Google Chrome. L'ultime versioni di Firefox è Safari supportanu ancu sta tecnulugia, ma, sfurtunatamenti, hè sempre inestabile.
Ùn avemu ancu implementatu u supportu WebRTC per i navigatori nantu à i dispositi mobili. Attualmente, se accede da un dispositivu mobile è attivate WebRTC, stu modu ùn funziona micca. Tuttavia, WebRTC hè dispunibule in e nostre applicazioni mobili per и .
E cuncludi a storia nantu à e caratteristiche di l'implementazione WebRTC in u nostru serviziu, notemu dui punti più sottili.
Prima, a tecnulugia hè focu annantu à a trasmissione di video in diretta in tempu reale. Dunque, se u vostru canale ùn hà micca abbastanza larghezza di banda per trasmette u video, noterete gocce di frame (cù HLS noterete sbiadimentu di u video è una latenza aumentata, ma ùn ci sarà micca gocce di frame), ma u video serà sempre trasmessu in realità. tempu.
Siconda, postu chì a tecnulugia hè pensata per travaglià specificamente cù video in diretta in tempu reale, ùn l'utilizamu micca per travaglià cù dati video archiviati.
Altri cambiamenti à u serviziu
À questu tempu, Flash ùn hè più implicatu in u mecanismu di selezzione automatica di u mutore. Pudete ancu aduprà un tali lettore, ma per fà questu, avete bisognu di selezziunà manualmente in i paràmetri di u contu o di a camera. Questu ùn hè micca un tributu à a moda, hè solu chì secondu e statistiche di u nostru serviziu, ùn ci sò praticamenti micca utilizatori chì travaglianu cù Flash. E pruvendu à determinà se u navigatore di l'utilizatori sustene, perdemu circa 2 seconde di tempu preziosu.
Eccu una breve panoramica di i cambiamenti chì vi aspettanu in u nostru sistema di surviglianza video in nuvola è u contu persunale. Resta cun noi è seguitate e nutizie !
Source: www.habr.com
