WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera

WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera

Od prvih dana rada na sustavu oblaka za video nadzor, suočili smo se s problemom bez čijeg rješenja na Ivideon nismo mogli računati – bio je to naš Everest, uspon na koji je oduzeo mnogo snage, ali sada smo, napokon, zabili cepin u vrh ovog krosplatformskog zagonetka.

Sustav prijenosa zvuka i videa preko Interneta ne smije ovisiti o opremi, web klijentima i standardima koje podržavaju, kao ni ispravno funkcionirati u prisutnosti mrežnih adresa translatora i vatrozida. Korisnik oblaka za video nadzor želi imati pristup servisu, čak i ako koristi analogne kamere, a prijenos živog videa želi gledati na najsuvremenijem uređaju.

Od velike je važnosti da korisnik želi gledati video s minimalnom latencijom. Gotovo jedini način za prikazivanje videa s niskom latencijom u pregledniku je korištenje WebRTC (web real-time communications). WebRTC je skup tehnologija za peer-to-peer prijenos videa i zvuka u preglednicima, prvotno dizajniran za prijenos i reprodukciju video streamova s niskom latencijom. Za to, između ostalog, koristi se UDP protokol.

Prije nego što vam objasnimo što novom motoru daje korisnika, podsjetit ćemo vas zašto i zbog čega podržavamo HLS tehnologije i radi čega smo odlučili ići naprijed.

HLS motor: prednosti i nedostaci

WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera
(c)

Tehnologija HLS (HTTP Live Streaming) razvijena je u Appleu, stoga nije iznenađujuće što je podrška za nju prvi puta pojavila na uređajima upravo tog brenda. Danas gotovo svi televizijski dekodiri i mnogi uređaji koji rade na Android operativnom sustavu mogu reproducirati video u HLS formatu.

HLS motor koristi dobro poznati video kodek H264 za striming video podataka zajedno s AAC ili MP3 audio streamovima. Cijeli audio i video stream se pakira u MPEG-TS transportni kontejner. Za prijenos putem HTTP-a, podaci sadržani u streamu dijele se na fragmente, opisane u m3u8 playlistrima. Tek tada se ti fragmenti zajedno s playlistama šalju putem HTTP-a. Dijeljenje na fragmente automatski znači zadržavanje u sekundama. Ova značajka MPEG-TS kontejnera.

HLS motor također podržava više bitrate streamova, Live/VOD.

Glavne prednosti HLS-a:

  • ugrađena podrška u svim glavnim preglednicima;
  • jednostavnost implementacije (u usporedbi s WebRTC);
  • vrlo je ugodno i učinkovito organizirati različite prijenose za veliku publiku zahvaljujući tome što se segmenti mogu učitati na CDN samo jednom.

Unatoč jednostavnosti enginea, situacija s njim nije tako glatka kao što izgleda. Glavni problem je u tome što su se programeri trećih strana odmaknuli od preporuka Applea, na primjer u pogledu podržanih audioformata. Konkretno, mnogi programeri su počeli dodavati mogućnost rada s popularnim audio streamovima: mpeg2 video, mpeg2 audio i sl. Kao rezultat toga, morali su se stvoriti različiti formati playlista za različite player-e.

Jedan od najvećih problema HLS enginea je visoka latencija prijenosa podataka.

Izvori "zakasnelosti"

Glavni uzrok visoke latencije kod HLS leži u tome što su programeri stvorili engine za postizanje maksimalne kvalitete slike. Stoga parametri korištenog intervala sličica i veličina reprodukcijskog predmemoriranja jednostavno nisu prikladni za vođenje izravnih video prijenosa. Kao rezultat toga, javlja se prilično visoka latencija u prijenosu videa, koja može iznositi 5-7 sekundi.

S jedne strane, to nije mnogo, primjerice, za one koji gledaju film s poslužitelja video hostinga. No, za sustave video nadzora, latencija u prijenosu videa može imati vrlo veliku važnost.

Ako promatrate ured gdje se zaposlenici svako toliko udaljavaju s monitora, tada latencija od 5 sekundi nema nikakvog značaja. No, ljudi su počeli prigovarati da, primjerice, prilikom prijenosa nogometne utakmice, u chatu su već napisali GOOOOL, a na videu toga još nema :). Već imamo niz korisničkih slučajeva gdje Ivideon praktički treba zamijeniti Skype.

Može li se prevladati latencija u HLS? Odgovor na ovo pitanje zvuči kao izlaganje iskusnog deratizatora pred početnicima: "Glodavce je nemoguće iskorijeniti, ali njihovu populaciju se može svesti na razuman minimum". Tako je i s latencijom u HLS, ne možemo je potpuno eliminirati, ali na tržištu postoje rješenja koja omogućuju značajno smanjenje latencije.

Sitno rezanje

Još jedan minus enginea je korištenje malih datoteka za prijenos podataka. Činilo bi se da tu nema ništa loše?

Svaka osoba koja je pokušala kopirati veliki broj malih datoteka s jednog medija na drugi, sigurno je primijetila da je brzina pisanja takvog skupa znatno niža nego kod jedne velike datoteke iste veličine. Osim toga, intenzitet pristupa tvrdom disku znatno se povećava, što sveukupno negativno utječe na performanse cijelog računala. Stoga prijenos video podataka u obliku malih 10-sekundnih segmenata također pridonosi povećanoj latenciji motora.

Ukratko sažeto sve prednosti i nedostatke HLS tehnologije.

Prednosti HLS:

  1. Mogućnost rada sa svim uređajima. Možete gledati video na bilo kojem suvremenom uređaju, bio to pametni telefon, tablet, laptop ili stolno računalo. Najvažnije je da web preglednik bude suvremene verzije i kompatibilan s HTML5 i Media Source Extensions.
  2. Odlična kvaliteta slike. Funkcija adaptivnog prijenosa podataka omogućuje dinamičnu promjenu kvalitete prenesenog videa ovisno o propusnosti internetske veze, pri čemu algoritam nastoji zadržati kvalitetu maksimalnom.
  3. Nema potrebe za složenim podešavanjem korisničke opreme.

Nedostaci:

  1. Ograničena podrška za rad s motorom na nekim uređajima.
  2. Visoke latencije u prijenosu slike.
  3. Veliko povećanje troškova i složenost optimizacije zbog korištenja datoteka malih veličina. Zbog posebnosti kontejnera nikada nećemo moći postići latenciju manju od veličine segmenta.

Nedostaci HLS-a nadmašili su njegove prednosti i natjerali nas da tražimo alternativne opcije.

Što je WebRTC

WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera
(c)

Platforma WebRTC razvijena je od strane Googlea 2011. godine za prijenos streamanih video i audio podataka između pregledača i mobilnih aplikacija s minimalnom latencijom. Za to se koristi standardni protokol UDP i posebni algoritmi za upravljanje protokom. Danas je to projekt otvorenog koda koji aktivno podržava Google i razvija se.

WebRTC je skup tehnologija za peer-to-peer prijenos videa i zvuka. Drugim riječima, preglednici korisnika mogu putem WebRTC-a izravno razmjenjivati podatke jedni s drugima, bez korištenja udaljenih poslužitelja za pohranu i obradu podataka. Sve informacije također se obrađuju u preglednicima i mobilnim aplikacijama krajnjih korisnika.

Zgodnost i velike mogućnosti ove tehnologije cijenili su programeri svih popularnih preglednika. Danas je podrška za WebRTC implementirana u Mozilla Firefox, Operi, Google Chrome (i svim preglednicima temeljenim na Chromiumu), kao i u mobilnim aplikacijama za Android i iOS.

Unatoč svojim neosporivim prednostima, WebRTC ima nekoliko značajnih nedostataka.

Teškoće u izboru

Tehnologija WebRTC mnogo je složenija s obzirom na mrežne interakcije zbog P2P arhitekture. Teško ju je debagirati i testirati, a može se ponašati nepredvidivo. Osim toga, moramo prevladati NAT i firewall, te osigurati rad u mrežama gdje je UDP blokiran.

Implementaciju WebRTC-a od Googlea vrlo je teško koristiti. Čak postoji cijela tvrtka koja pruža usluge izrade SDK-a. Osim toga, implementaciju od Googlea bilo je vrlo teško integrirati s našim sustavom bez ponovne kodiranja cijelog videa.

Međutim, dugo smo željeli omogućiti korisnicima rad s pravim „živim” videom i minimizirati kašnjenje slike na ekranu u odnosu na stvarne događaje. Također, imali smo želju olakšati korištenje PTZ kamera, gdje su kašnjenja kritična.

Uzimajući u obzir da druge implementacije borbe protiv kašnjenja trenutno imaju ograničenu funkcionalnost i rade znatno lošije, odlučili smo koristiti WebRTC.

Što smo učinili

WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera

Ispravno implementirati platformu WebRTC nije lagan zadatak. Svaka greška ili netočnost mogu dovesti do toga da kašnjenja u prijenosu videa ne samo da se ne smanje u usporedbi s drugim platformama, već i da se povećaju.

Za ispravan rad WebRTC-a, prije svega, potrebno je provesti tehnološku modernizaciju stoga za rad s web videom. To smo i učinili.

Prvo smo implementirali signalnu protokol WebRTC preko Websocket-a, kao i postavili WebRTC peer-server u oblaku koristeći SDK webrtc.org. Njegova uloga je distribucija video streamova klijentima WebRTC peer-ovima u H.264 + Opus/G.711 formatu bez recodiranja videa.

Odabrali smo Websocket kao signalni protokol zbog njegove dobre podrške u svim popularnim web preglednicima. Na taj način možemo značajno smanjiti ne samo troškove razvoja, već i uštedjeti vrijeme i resurse na ponovnom TCP i TLS handshake-u u usporedbi s AJAX-om.

Naime, WebRTC po defaultu ne pruža signalni protokol potreban za pravilno postavljanje, održavanje i prekid video veze u stvarnom vremenu između izvornih i klijentskih aplikacija.

Kako bismo sami implementirali signalizacijsku tehnologiju, bilo je potrebno razviti vlastiti signalni server s podrškom za nekoliko web protokola (WebSocket, WebRTC). Također, omogućili smo sigurno upravljanje sesijama i notifikacijama u stvarnom vremenu, upravljanje videom i mnogim drugim parametrima.

Ograničenja P2P prevladali smo smanjenjem latencije ne oslanjajući se na P2P, već na UDP i upravljanje protokom usmjereno na smanjenje latencije. To je također ugrađeno u WebRTC, jer je glavni use-case P2P razgovor kroz preglednik.

U mobilnom klijentu implementirali smo plejer koristeći SDK webrtc.org, jer samo on ispravno upravlja protokom, ima sve poznate sheme Forward Error Correction (FEC), i pravilno implementira mehanizam ponovne slanja paketa za sve preglednike. Također je važno napomenuti da Google aktivno razvija SDK webrtc.org.

Koji su rezultati implementacije WebRTC-a?


Za gledanje živog videa s kamera dodali smo novi optimizirani plejer temeljen na WebRTC-u u korisničkom računalu. Osigurava visoku brzinu učitavanja video zapisa i potpuno eliminira problem nakupljanja latencije s porastom vremena gledanja.

Nakon uvođenja podrške za WebRTC u oblaku Ivideon, s punim povjerenjem možemo reći da je našim korisnicima sada dostupan pregled punokrvnog živog videa. Sada kašnjenje tijekom prijenosa video sadržaja ne prelazi jednu sekundu! Za usporedbu, prethodni HLS motor isporučivao je video s kašnjenjem od 5-7 sekundi. Razlika u brzini prikazivanja videa je vrlo značajna i korisnici će je primijetiti odmah nakon početka rada s našom video uslugom.

Kao što smo i predviđali, implementacija novog playera omogućila je poboljšanu reakciju PTZ camere i glasovne komunikacije.

WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera

Postoji samo jedan suptilni aspekt na koji želimo skrenuti pažnju. Novi WebRTC player trenutno radi u testnom režimu. Zbog toga ga ne aktiviramo automatski svim korisnicima. Međutim, možete ga aktivirati sami uključivanjem odgovarajuće opcije u postavkama kamere (za to morate otići u osobni račun).

Osobitosti implementacije WebRTC u Ivideon servisu

WebRTC i video nadzor: kako smo pobijedili kašnjenje videa s kamera

WebRTC je trenutno još uvijek eksperimentalna tehnologija. Njegova podrška još nije adekvatno implementirana u svim browserima i korisničkim uređajima, kao ni u svim kamerama.

Upravo je to razlog što još nismo učinili WebRTC player glavnim kao zadanu opciju za sve korisnike.

Za sada preporučujemo korištenje WebRTC-a samo u browserima Google Chrome. Posljednje verzije Firefoxa i Safarija također podržavaju ovu tehnologiju, ali, nažalost, još uvijek su nestabilne.

Za sada nismo implementirali podršku za WebRTC u mobilnim browserima. Ako se prijavite s mobilnog uređaja i aktivirate WebRTC, ovaj način rada neće funkcionirati. Ipak, WebRTC je dostupan u našim mobilnim aplikacijama za Android i iOS.

I završavajući priču o osobitostima implementacije WebRTC u našoj usluzi, istaknut ćemo još dva suptilna aspekta.

Prvo, tehnologija je usmjerena na prijenos upravo živog videa u stvarnom vremenu. Stoga, ako propusnost vaše veze bude nedostatna za prijenos video sadržaja, primijetit ćete gubitak okvira (s HLS-om ćete primijetiti zamrzavanje videa i povećanje kašnjenja, dok okviri neće ispasti), ali video će i dalje biti prenošen u stvarnom vremenu.

Drugo, budući da je tehnologija osmišljena za rad s živim videozapisima u stvarnom vremenu, ne koristimo je za rad s arhivskim video podacima.

Druge promjene u usluzi

U ovom trenutku Flash više nije uključen u mehanizam automatskog odabira motora. Taj player se još uvijek može koristiti, ali ga treba ručno odabrati u postavkama računa ili kamere. To nije jednostavno modna, već prema statistikama našeg servisa gotovo da više nema korisnika koji koriste Flash. A na pokušaj da se utvrdi podržava li ga preglednik korisnika, gubimo oko 2 sekunde dragocjenog vremena.

Evo ukratko o promjenama koje vas očekuju u našem oblaku za video nadzor i korisničkom računu. Ostanite s nama i pratite novosti!

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster