
Od prvih dana rada na sistemu video nadzora u oblaku bili smo suočeni sa problemom, bez rješenja kojeg bismo mogli odustati od Ivideona - ovo je bio naš Everest, penjanje na koje je oduzimalo puno energije, ali sada smo konačno zabio cepin u vrh slagalice na više platformi.
Sistem za prenos zvuka i videa preko Interneta ne treba da zavisi od opreme, Web klijenata i standarda koje oni podržavaju, a takođe treba da radi ispravno u prisustvu prevodilaca mrežnih adresa i zaštitnih zidova. Korisnik video nadzora u oblaku želi da pristupi servisu, čak i ako koristi analogne kamere, a radije gleda video prenos uživo na najsavremenijem uređaju.
Veoma je značajno da korisnik želi da gleda video zapise sa minimalnim kašnjenjem. Gotovo jedini način za prikazivanje videa s malim kašnjenjem u pretraživaču je korištenje WebRTC (web komunikacija u realnom vremenu). WebRTC je skup tehnologija za peer-to-peer prijenos videa i zvuka u pretraživačima, prvobitno dizajniran za prijenos i reprodukciju video tokova s malim kašnjenjem. U tu svrhu, između ostalog, koristi se UDP protokol.
Pre nego što vam kažemo šta novi motor daje korisniku, podsetićemo vas zašto i zašto podržavamo HLS tehnologije i zašto smo odlučili da idemo dalje.
HLS motor: prednosti i mane

()
HLS (HTTP Live Streaming) tehnologiju je razvio Apple, tako da ne čudi da je prvo podržana na Apple uređajima. Danas HLS video podržavaju i gotovo svi set-top box uređaji i mnogi uređaji koji koriste taj operativni sistem. Android.
HLS motor koristi dobro poznati H264 video kodek u kombinaciji sa AAC ili MP3 audio streamovima za striming video podataka. Cijeli tok audio i video podataka je upakovan u MPEG-TS transportni kontejner. Za prijenos putem HTTP protokola, informacije sadržane u streamu se dijele na fragmente opisane u m3u8 playlistama. I tek tada se ovi fragmenti, zajedno s playlistama, prenose putem HTTP-a. Sjeckanje automatski znači kašnjenje u sekundama. Ovo je karakteristika MPEG-TS kontejnera.
HLS mehanizam takođe podržava multibitrate streamove, uživo/VOD.
Glavne prednosti HLS-a:
- ugrađena podrška u svim glavnim pretraživačima;
- jednostavnost implementacije (u poređenju sa WebRTC-om);
- Veoma je zgodno i efikasno organizovati sve vrste emitovanja za veliku publiku zbog činjenice da se segmenti mogu učitati na CDN jednom.
Uprkos jednostavnosti motora, nije sve tako glatko kao što se čini. Glavni problem je što su se programeri plejera treće strane odmakli od Appleovih preporuka, na primjer u pogledu podržanih audio formata. Konkretno, mnogi programeri su počeli da dodaju mogućnost rada sa popularnim audio streamovima: mpeg2 video, mpeg2 audio, itd. Kao rezultat toga, morali su da kreiraju različite formate plejlista za različite plejere.
Ali jedan od najvećih problema s HLS motorom je velika latencija u prijenosu podataka.
Poreklo "kočnica"
Glavni razlog velike latencije HLS-a leži u činjenici da su programeri kreirali motor da bi dobili najkvalitetnije slike. Stoga, parametri korištenog intervala kadrova i veličina bafera za reprodukciju jednostavno nisu prikladni za video prijenose uživo. Zbog toga postoji prilično veliko kašnjenje u prijenosu video zapisa, koje može biti 5-7 sekundi.
S jedne strane, to nije mnogo, na primjer, za one koji gledaju film sa servera za video hosting. Ali za sisteme video nadzora, kašnjenje u prenosu video zapisa može biti veoma važno.
Ako gledate kancelariju u kojoj zaposleni podižu pogled sa svojih monitora jednom na sat, onda kašnjenje od 5 sekundi uopšte nije važno. Ali ljudi su počeli da se žale da su, na primjer, prilikom prijenosa fudbalske utakmice već napisali GOOOOL u chatu, ali ovo još nije na snimku :). Već imamo niz korisničkih slučajeva u kojima bi Ivideon praktično trebao zamijeniti Skype.
Da li je moguće nadmašiti kašnjenje u HLS-u? Odgovor na ovo pitanje zvuči kao govor iskusnog deratista na predavanju početnicima specijalistima za suzbijanje štetočina: „Štakori se ne mogu istrijebiti, ali se njihov broj može svesti na razuman minimum.“ Isto je i sa kašnjenjem u HLS-u, neće ga biti moguće svesti na nulu, ali na tržištu postoje rješenja koja mogu značajno smanjiti kašnjenje.
Fini rezovi
Još jedan nedostatak motora je korištenje malih datoteka za prijenos podataka. Čini se da šta nije u redu sa ovim?
Svako ko je pokušao da kopira veliki broj malih fajlova sa jednog medija na drugi verovatno je primetio da je brzina pisanja takvog skupa mnogo manja od jedne velike datoteke iste veličine. I intenzitet pristupa čvrstom disku značajno se povećava, što općenito negativno utiče na performanse cijelog računala. Stoga, prijenos video podataka u malim dijelovima od 10 sekundi također doprinosi povećanju latencije motora.
Hajde da ukratko sumiramo sve prednosti i nedostatke HLS tehnologije.
Prednosti HLS-a:
- Mogućnost rada sa bilo kojim uređajem. Možete gledati video zapise na bilo kojem modernom uređaju, bilo da se radi o pametnom telefonu, tabletu, laptopu ili desktop računaru. Glavna stvar je da je web pretraživač ažuran i kompatibilan sa HTML5 i ekstenzijama izvora medija.
- Odličan kvalitet slike. Korištena funkcija adaptivnog prijenosa podataka omogućava vam da dinamički mijenjate kvalitetu prenesenog videa ovisno o propusnosti internetske veze, dok algoritam nastoji održati maksimalan kvalitet.
- Nema potrebe za složenom konfiguracijom opreme korisnika.
nedostaci:
- Ograničena podrška za rad sa motorom na nekim uređajima.
- Velika kašnjenja u prijenosu slike.
- Značajno povećanje troškova i složenosti optimizacije zbog upotrebe malih datoteka. Zbog prirode kontejnera, nikada nećemo moći dobiti kašnjenje manje od veličine segmenta.
Nedostaci HLS-a za nas su nadmašili njegove prednosti i primorali nas da tražimo alternativne opcije.
Šta je WebRTC?

()
WebRTC platformu je razvio Google 2011. za prijenos video i audio podataka između pretraživača i mobilnih aplikacija uz minimalno kašnjenje. Za to se koriste standardni UDP protokol i posebni algoritmi kontrole toka. Danas je to projekat otvorenog koda, aktivno ga održava Google i razvija se.
WebRTC je skup tehnologija za peer-to-peer video i audio prijenos. To jest, na primjer, korisnički pretraživači koji koriste WebRTC mogu direktno prenositi podatke jedni drugima, bez korištenja udaljenih servera za pohranjivanje i obradu podataka. Sve informacije obrađuju i pretraživači krajnjih korisnika i mobilne aplikacije.
Praktičnost i široke mogućnosti ove tehnologije cijenili su programeri svih popularnih preglednika. Podrška za WebRTC trenutno je dostupna u Mozilla Firefoxu, Operi, Google Chromeu (i svim preglednicima baziranim na Chromiumu), kao i u mobilnim aplikacijama koje rade... Android i iOS.
Uz sve svoje nesumnjive prednosti, WebRTC ima nekoliko značajnih nedostataka.
Poteškoće izbora
WebRTC tehnologija je mnogo složenija u smislu mrežnih interakcija zbog činjenice da se radi o P2P. Teško je otkloniti greške, testirati i može se ponašati nepredvidivo. Istovremeno, moramo prevazići NAT i firewall, moramo osigurati rad u mrežama gdje je UDP blokiran.
Google-ova WebRTC implementacija je veoma teška za korištenje. Postoji čak i čitava kompanija koja pruža usluge montaže SDK-a. Osim toga, Google-ovu implementaciju je bilo vrlo teško integrirati s našim sistemom bez ponovnog kodiranja cijelog videa.
Međutim, dugo smo željeli da korisnicima pružimo priliku da rade sa potpunim "živim" videom i minimiziramo kašnjenje između slike na ekranu i samih događaja. Osim toga, imali smo želju da korištenje PTZ kamera, gdje su kašnjenja kritične, učinimo ugodnijim.
S obzirom da druge anti-lag implementacije i dalje imaju ograničenu funkcionalnost i rade znatno lošije, odlučili smo se za WebRTC.
Šta smo uradili

Pravilna implementacija WebRTC platforme nije lak zadatak. Svaka pogrešna kalkulacija ili nepreciznost može dovesti do toga da kašnjenje u prijenosu videa ne samo da se ne smanjuje u odnosu na druge platforme, već čak i povećava.
Za ispravan rad WebRTC-a, prije svega, potrebno je izvršiti tehnološku nadogradnju steka za rad sa web videom. To smo i uradili.
Prvo smo implementirali server protokola WebRTC signalizacije preko Websocket-a, a također smo postavili WebRTC ravnopravni server u oblaku baziran na webrtc.org SDK-u. Njegov zadatak je da distribuira video streamove klijentskim WebRTC kolegama u H.264 + Opus/G.711 formatu bez video transkodiranja.
Izabrali smo Websocket kao signalni protokol jer već ima kvalitetnu podršku u svim popularnim web pretraživačima. Zbog toga možete značajno smanjiti ne samo troškove razvoja, već i izbjeći gubljenje vremena i resursa na ponovljeno TCP i TLS rukovanje u poređenju sa AJAX-om.
Činjenica je da, prema zadanim postavkama, WebRTC ne pruža signalni protokol neophodan za pravilno konfigurisanje, održavanje i prekid video komunikacije u realnom vremenu između izvorne i klijentske aplikacije.
A da bismo samostalno implementirali tehnologiju signalizacije, morali smo razviti vlastiti signalni server s podrškom za nekoliko web protokola (Websocet, WebRTC). I sa mogućnošću bezbednog upravljanja sesijama i obaveštenjima u realnom vremenu, upravljanjem video zapisima i još mnogo toga.
Prevazišli smo ograničenja P2P tako što smo smanjili kašnjenje ne kroz P2P, već kroz UDP i kontrolu toka kako bismo smanjili kašnjenje. Ovo je takođe ugrađeno u WebRTC, pošto su glavni slučaj upotrebe p2p razgovori preko pretraživača.
U mobilnom klijentu implementirali smo plejer koristeći webrtc.org SDK, jer samo on ispravno implementira kontrolu toka, ima sve poznate šeme za ispravljanje grešaka unapred (FEC) i ispravno implementira mehanizam za ponovno slanje paketa za sve pretraživače. Također je važno da webrtc.org SDK aktivno razvija Google.
Šta je rezultat implementacije WebRTC-a?
Za gledanje videa uživo sa kamera, na vaš lični nalog smo dodali novi optimizovani plejer zasnovan na WebRTC-u. Pruža velike brzine učitavanja video zapisa i potpuno eliminiše problem kašnjenja koji se nakuplja kako se vrijeme gledanja povećava.
Nakon uvođenja WebRTC podrške u Ivideon cloud servis, možemo sa potpunim povjerenjem reći da naši klijenti sada mogu gledati potpuni video uživo. Sada kašnjenje pri emitovanju video sekvenci ne prelazi jednu sekundu! Poređenja radi, prethodni HLS engine je pružao video isporuku sa zakašnjenjem od 5-7 sekundi. Razlika u brzini video demonstracije je vrlo značajna, a korisnik će je primijetiti odmah nakon početka rada sa našim video servisom.
Kao što smo i očekivali, implementacija novog plejera je poboljšala odziv PTZ-a i glasovnu komunikaciju sa kamerom.

Postoji samo jedna suptilna tačka na koju želimo da skrenemo pažnju. Novi WebRTC plejer trenutno radi u test modu. I zato ga ne omogućavamo za sve naše klijente prema zadanim postavkama. Ali možete ga aktivirati sami tako što ćete omogućiti odgovarajuću stavku u postavkama kamere (da biste to učinili, idite na ).
Karakteristike implementacije WebRTC-a u Ivideon servisu

WebRTC je trenutno još uvijek eksperimentalna tehnologija. Njegova podrška još uvijek nije ispravno implementirana u svim pretraživačima i korisničkim uređajima, a također ne u svim kamerama.
Upravo zbog toga još nismo napravili WebRTC plejer kao podrazumevani za sve korisnike.
Za sada preporučujemo korištenje WebRTC-a samo u preglednicima Google Chrome. Najnovije verzije Firefoxa i Safarija također podržavaju ovu tehnologiju, ali je, nažalost, još uvijek nestabilna.
Još nismo implementirali WebRTC podršku za pretraživače na mobilnim uređajima. Trenutno, ako se prijavite s mobilnog uređaja i aktivirate WebRTC, ovaj način rada neće raditi. Međutim, WebRTC je dostupan u našim mobilnim aplikacijama za и .
I zaključujući priču o karakteristikama implementacije WebRTC-a u našem servisu, napomenimo još dvije suptilne tačke.
Prvo, tehnologija je fokusirana na emitovanje videa uživo u realnom vremenu. Stoga, ako vaš kanal nema dovoljno propusnog opsega za prijenos videa, primijetit ćete pad kadrova (kod HLS-a ćete primijetiti blijeđenje videa i povećanu latenciju, ali neće biti pada kadrova), ali će se video i dalje emitirati u stvarnom vrijeme.
Drugo, budući da je tehnologija dizajnirana da radi posebno sa videom uživo u realnom vremenu, mi je ne koristimo za rad sa arhiviranim video podacima.
Ostale promjene usluge
U ovom trenutku, Flash više nije uključen u mehanizam automatskog odabira motora. I dalje možete koristiti takav plejer, ali da biste to učinili morate ga ručno odabrati u postavkama računa ili kamere. Ovo nije priznanje modi, samo prema statistici našeg servisa, praktično više nema korisnika koji rade sa Flash-om. I pokušavajući utvrditi podržava li ga pretraživač korisnika, gubimo oko 2 sekunde dragocjenog vremena.
Evo kratkog pregleda promjena koje vas očekuju u našem sistemu video nadzora u oblaku i ličnom računu. Ostanite uz nas i pratite vijesti!
izvor: www.habr.com
