
Alates esimestest pilvevideovalvesüsteemiga töötamise päevadest seisime silmitsi probleemiga, millele lahenduseta võisime Ivideonist loobuda – see oli meie Everest, mille ronimine võttis palju energiat, kuid nüüd oleme lõpuks torkas jääkirve platvormidevahelise pusle tippu.
Heli ja video Interneti kaudu edastamise süsteem ei tohiks sõltuda seadmetest, veebiklientidest ja nende toetatavatest standarditest ning see töötab õigesti ka võrguaadressi tõlkijate ja tulemüüride juuresolekul. Pilvevideovalve kasutaja soovib teenusele ligi pääseda ka siis, kui ta kasutab analoogkaameraid, ning eelistab vaadata video otseülekannet kõige kaasaegsemas seadmes.
On väga oluline, et kasutaja soovib videoid vaadata minimaalse viivitusega. Peaaegu ainus viis madala latentsusega video kuvamiseks brauseris on kasutada WebRTC-d (veebi reaalajas side). WebRTC on tehnoloogiate komplekt video ja heli võrdõigusvõrgu edastamiseks brauserites, mis on algselt mõeldud madala latentsusega videovoogude edastamiseks ja taasesitamiseks. Selleks kasutatakse muuhulgas UDP-protokolli.
Enne kui räägime teile, mida uus mootor kasutajale annab, tuletame meelde, miks ja miks me HLS-i tehnoloogiaid toetame ning miks otsustasime edasi liikuda.
HLS mootor: plussid ja miinused

()
HLS-tehnoloogia (HTTP Live Streaming) töötas välja Apple, seega pole üllatav, et seda toetati esmakordselt Apple'i seadmetes. Tänapäeval toetavad HLS-videot ka praktiliselt kõik digiboksid ja paljud sama operatsioonisüsteemiga seadmed. Android.
HLS-mootor kasutab videoandmete voogesitamiseks tuntud H264 videokoodekit koos AAC- või MP3-helivoogudega. Kogu heli- ja videoandmevoog on pakitud MPEG-TS transpordikonteinerisse. HTTP-protokolli kaudu edastamiseks jagatakse voos sisalduv teave m3u8 esitusloendites kirjeldatud fragmentideks. Ja alles siis edastatakse need fragmendid koos esitusloenditega HTTP kaudu. Tükeldamine tähendab automaatselt viivitust sekundites. See on MPEG-TS konteineri funktsioon.
HLS-mootor toetab ka mitme bitikiirusega vooge, otseülekannet/VOD-i.
HLS-i peamised eelised:
- sisseehitatud tugi kõigis suuremates brauserites;
- juurutamise lihtsus (võrreldes WebRTC-ga);
- Väga mugav ja tõhus on korraldada igasuguseid ülekandeid suurele vaatajaskonnale, kuna segmente saab CDN-i üles laadida ühe korra.
Vaatamata mootori lihtsusele pole kõik nii sujuv, kui tundub. Peamine probleem seisneb selles, et kolmanda osapoole mängijate arendajad on Apple'i soovitustest eemaldunud, näiteks toetatud helivormingute osas. Eelkõige hakkasid paljud arendajad lisama võimalust töötada populaarsete helivoogudega: mpeg2 video, mpeg2 heli jne. Selle tulemusena pidid nad looma erinevatele mängijatele erinevaid esitusloendite vorminguid.
Kuid HLS-mootori üks suurimaid probleeme on andmeedastuse kõrge latentsusaeg.
"Pidurite" päritolu
HLS-i kõrge latentsusaja peamine põhjus seisneb selles, et programmeerijad lõid mootori kõrgeima kvaliteediga piltide saamiseks. Seetõttu ei sobi kasutatavad kaadriintervalli parameetrid ja taasesituspuhvri suurus lihtsalt video otseülekannete jaoks. Seetõttu on videomaterjali edastamisel üsna suur viivitus, mis võib olla 5-7 sekundit.
Ühest küljest pole seda palju, näiteks neile, kes vaatavad filmi videomajutusserverist. Kuid videovalvesüsteemide puhul võib videomaterjali edastamise viivitus olla väga oluline.
Kui vaatate kontorit, kus töötajad vaatavad oma monitorilt korra tunnis üles, siis 5-sekundiline viivitus pole üldse oluline. Aga inimesed hakkasid kurtma, et näiteks jalgpallimatši ülekandmisel kirjutasid nad juba vestlusesse GOOOOL, aga seda pole veel video peal :). Meil on juba mitmeid kasutajajuhtumeid, kus Ivideon peaks praktiliselt Skype'i asendama.
Kas HLS-is on latentsust võimalik ületada? Vastus sellele küsimusele kõlab nagu kogenud rottide hävitaja kõne algajatele kahjuritõrjespetsialistidele peetud loengus: "Rotte ei saa hävitada, kuid nende arvukust saab vähendada mõistliku miinimumini." Sama ka HLS-i viivitusega, seda ei ole võimalik nullini vähendada, kuid turul on lahendusi, mis võivad viivitust oluliselt vähendada.
Peened lõiked
Mootori teine puudus on väikeste failide kasutamine andmeedastuseks. Tundub, et mis sellel viga on?
Kes on proovinud kopeerida suurt hulka väikeseid faile ühest kandjast teise, on ilmselt märganud, et sellise komplekti kirjutamiskiirus on palju väiksem kui ühel suurel sama suurusega failil. Ja kõvakettale juurdepääsu intensiivsus suureneb oluliselt, mis üldiselt mõjutab negatiivselt kogu arvuti jõudlust. Seetõttu aitab videoandmete edastamine väikeste 10-sekundiliste tükkidena kaasa ka mootori latentsuse suurenemisele.
Võtame lühidalt kokku kõik HLS-tehnoloogia plussid ja miinused.
HLS-i eelised:
- Võimalus töötada mis tahes seadmetega. Saate vaadata videoid igas kaasaegses seadmes, olgu selleks siis nutitelefon, tahvelarvuti, sülearvuti või lauaarvuti. Peaasi, et veebibrauser oleks ajakohane ning ühilduks HTML5 ja Media Source Extensionsiga.
- Suurepärane pildikvaliteet. Kasutatav adaptiivne andmeedastusfunktsioon võimaldab dünaamiliselt muuta edastatava video kvaliteeti sõltuvalt Interneti-ühenduse ribalaiusest, samal ajal kui algoritm püüab säilitada maksimaalset kvaliteeti.
- Puudub vajadus kasutaja seadmete keerukaks konfigureerimiseks.
Puudused:
- Mõne seadme puhul on piiratud tugi mootoriga töötamiseks.
- Suured viivitused pildi edastamisel.
- Väikeste failide kasutamise tõttu suureneb oluliselt üldkulud ja optimeerimise keerukus. Konteineri olemuse tõttu ei saa me kunagi saada segmendi suurusest väiksemat latentsusaega.
HLS-i puudused kaalusid meie jaoks üles selle eelised ja sundisid meid otsima alternatiivseid võimalusi.
Mis on WebRTC

()
WebRTC platvormi töötas Google välja 2011. aastal, et edastada voogesituse video- ja heliandmeid brauserite ja mobiilirakenduste vahel minimaalse latentsusega. Selleks kasutatakse standardset UDP-protokolli ja spetsiaalseid voo juhtimise algoritme. Täna on tegemist avatud lähtekoodiga projektiga, mida Google aktiivselt hooldab ja seda arendatakse.
WebRTC on tehnoloogiate komplekt võrdõigusvõrgu video- ja heliedastuseks. See tähendab, et näiteks WebRTC-d kasutavad kasutajabrauserid saavad andmeid üksteisele otse edastada, ilma andmete salvestamiseks ja töötlemiseks kaugservereid kasutamata. Kogu infot töötlevad ka lõppkasutajate brauserid ja mobiilirakendused.
Selle tehnoloogia mugavust ja laiaulatuslikke võimalusi on hinnanud kõigi populaarsete brauserite arendajad. WebRTC tugi on praegu saadaval Mozilla Firefoxis, Operas, Google Chrome'is (ja kõigis Chromiumi-põhistes brauserites) ning ka mobiilirakendustes. Android ja iOS-i.
Kõigist oma vaieldamatutest eelistest hoolimata on WebRTC-l mitmeid olulisi puudusi.
Valikuprobleemid
WebRTC tehnoloogia on võrgu interaktsioonide osas palju keerulisem, kuna see puudutab P2P-d. Seda on raske siluda, testida ja see võib käituda ettearvamatult. Samal ajal peame ületama NAT-i ja tulemüüri, peame tagama toimimise võrkudes, kus UDP on blokeeritud.
Google'i WebRTC juurutamist on väga raske kasutada. On isegi terve ettevõte, mis pakub SDK koosteteenuseid. Lisaks oli Google'i juurutamist meie süsteemiga väga raske integreerida ilma kogu videot uuesti kodeerimata.
Oleme aga juba pikka aega soovinud anda kasutajatele võimaluse töötada täisväärtusliku "reaalajas" videoga ja minimeerida viivitust ekraanil kuvatava pildi ja sündmuste endi vahel. Lisaks oli meil soov muuta mugavamaks PTZ-kaamerate kasutamine, kus viivitused on kriitilised.
Arvestades, et teiste viivitusvastaste rakenduste funktsionaalsus on endiselt piiratud ja need töötavad märgatavalt halvemini, otsustasime kasutada WebRTC-d.
Mida me oleme teinud

WebRTC platvormi õige juurutamine pole lihtne ülesanne. Iga valearvestus või ebatäpsus võib põhjustada viivitusi videoedastuses, mis mitte ainult ei vähene võrreldes teiste platvormidega, vaid isegi suureneb.
WebRTC korrektseks tööks on kõigepealt vaja veebivideoga töötamiseks läbi viia virna tehnoloogiline uuendus. Seda me tegimegi.
Esiteks juurutasime WebRTC signalisatsiooniprotokolli serveri Websocketi kaudu ja juurutasime pilves ka WebRTC partnerserveri, mis põhineb webrtc.org SDK-l. Selle ülesanne on levitada videovooge kliendi WebRTC partneritele H.264 + Opus/G.711 formaadis ilma video ümberkodeerimiseta.
Valisime signalisatsiooniprotokolliks Websocketi, kuna sellel on juba kvaliteetne tugi kõigis populaarsetes veebibrauserites. Tänu sellele saate oluliselt vähendada mitte ainult arenduskulusid, vaid ka vältida aja ja ressursside raiskamist korduvale TCP- ja TLS-käepigistusele võrreldes AJAX-iga.
Fakt on see, et vaikimisi ei paku WebRTC signaalimisprotokolli, mis on vajalik lähte- ja klientrakenduste vahelise reaalajas videoside õigeks konfigureerimiseks, hooldamiseks ja lõpetamiseks.
Ja signalisatsioonitehnoloogia iseseisvaks rakendamiseks pidime välja töötama oma signalisatsiooniserveri, mis toetaks mitut veebiprotokolli (Websocet, WebRTC). Ja võimalusega seansse ja märguandeid reaalajas turvaliselt hallata, videohaldust ja palju muud.
Ületasime P2P piirangud, vähendades latentsust mitte P2P, vaid UDP ja vookontrolli kaudu, et vähendada latentsust. See on sisse ehitatud ka WebRTC-sse, kuna peamine kasutusjuhtum on p2p-vestlused brauseri kaudu.
Mobiilikliendis juurutasime pleieri webrtc.org SDK abil, kuna ainult see rakendab õigesti voojuhtimist, sellel on kõik teadaolevad edasisuunas veaparanduse (FEC) skeemid ja see rakendab õigesti pakettide uuesti saatmise mehhanismi kõigi brauserite jaoks. Samuti on oluline, et Google arendab aktiivselt webrtc.org SDK-d.
Mis on WebRTC rakendamise tulemus?
Kaameratest otsevideo vaatamiseks lisasime teie isiklikule kontole uue optimeeritud pleieri, mis põhineb WebRTC-l. See tagab kiire video laadimiskiiruse ja kõrvaldab täielikult vaatamisaja pikenedes akumuleeruva latentsuse probleemi.
Pärast WebRTC toe juurutamist Ivideoni pilveteenuses võime täie kindlusega öelda, et meie kliendid saavad nüüd täisväärtuslikku otsevideot vaadata. Nüüd ei ületa viivitus videoseeriate edastamisel ühte sekundit! Võrdluseks, eelmine HLS-i mootor võimaldas video edastamist 5-7-sekundilise viivitusega. Video demonstreerimise kiiruse erinevus on väga oluline ja kasutaja märkab seda kohe pärast meie videoteenusega tööle asumist.
Nagu eeldasime, on uue pleieri juurutamine parandanud PTZ-i reageerimisvõimet ja kõnesidet kaameraga.

On ainult üks peen nüanss, millele tahame tähelepanu juhtida. Uus WebRTC pleier töötab hetkel testrežiimis. Ja sellepärast me ei luba seda vaikimisi kõikidele klientidele. Kuid saate selle ise aktiveerida, lubades kaamera sätetes vastava üksuse (selleks minge aadressile ).
WebRTC juurutamise omadused Ivideoni teenuses

WebRTC on praegu veel eksperimentaalne tehnoloogia. Selle tugi pole veel kõigis brauserites ja kasutajaseadmetes ning ka mitte kõigis kaamerates õigesti rakendatud.
Just seetõttu pole me veel WebRTC-mängijat kõigi kasutajate jaoks vaikeseadeks muutnud.
Praegu soovitame kasutada WebRTC-d ainult Google Chrome'i brauserites. Seda tehnoloogiat toetavad ka Firefoxi ja Safari uusimad versioonid, kuid kahjuks on see endiselt ebastabiilne.
Me ei ole veel rakendanud WebRTC tuge mobiilseadmete brauserite jaoks. Kui logite sisse mobiilseadmest ja aktiveerite WebRTC, siis see režiim praegu ei tööta. WebRTC on aga saadaval meie mobiilirakendustes и .
Ja lõpetuseks lugu meie teenuse WebRTC juurutamise funktsioonidest, märgime veel kaks peent punkti.
Esiteks on tehnoloogia keskendunud reaalajas otsevideo edastamisele. Seega, kui teie kanalil pole video edastamiseks piisavalt ribalaiust, märkate kaadrite langust (HLS-iga märkate video tuhmumist ja suurenenud latentsust, kuid kaadrite langust ei toimu), kuid videot edastatakse siiski reaalselt aega.
Teiseks, kuna tehnoloogia on loodud töötama spetsiaalselt reaalajas otsevideoga, ei kasuta me seda arhiivitud videoandmetega töötamiseks.
Muud muudatused teenuses
Praegu ei ole Flash enam automaatse mootorivaliku mehhanismiga seotud. Sellist mängijat saate endiselt kasutada, kuid selleks peate selle konto või kaamera seadetes käsitsi valima. See ei ole austusavaldus moele, vaid meie teenuse statistika järgi pole Flashiga töötavat kasutajat praktiliselt enam jäänud. Ja püüdes kindlaks teha, kas kasutaja brauser seda toetab, kaotame umbes 2 sekundit väärtuslikku aega.
Siin on lühike ülevaade muudatustest, mis teid meie pilvevideovalvesüsteemis ja isiklikul kontol ees ootavad. Jääge meiega ja jälgige uudiseid!
Allikas: www.habr.com
