
Alates esimesest pĂ€evast, mil asusime pilvevideovalve sĂŒsteemi arendama, seisime silmitsi probleemiga, mille lahendamata jĂ€tmine oleks Ivideonile lĂ”pu teinud â see oli meie Everest, mille tippu jĂ”udmine nĂ”udis rohkesti vaeva, kuid nĂŒĂŒd oleme lĂ”puks oma jÀÀtĂŒki tippu löönud, lahendades multidistsiplinaarse mĂ”istatuse.
Heli ja video edastamise sĂŒsteem Internetis ei tohi sĂ”ltuda seadmetest, veebikliendi toe standarditest ega peaks Ă”igesti toimima vĂ”rguadressi translatorite ja tulemĂŒĂŒride olemasolul. Pilvevideovalve kasutaja soovib saada teenusele ligipÀÀsu ka siis, kui ta kasutab analoogkaameraid ning eelistab otseĂŒlekande video vaatamiseks kĂ”ige uuema seadme.
On ÀÀrmiselt oluline, et kasutaja soovib nÀha videot vÔimalikult vÀikese latentsusega. Peaaegu ainus vÔimalus nÀidata madala latentsusega videod brauseris on kasutada WebRTC (veebireaalajas suhtlemine). WebRTC on tehnoloogiate kogum, mis vÔimaldab otsest video- ja heliedastust brauserites, algselt mÔeldud madala latentsusega videovoo edastamiseks ja esitamiseks. Selleks kasutatakse muu hulgas UDP protokolli.
Enne kui rÀÀgime, mida uus mootor kasutajatele annab, meenutame, miks ja miks toetame HLS-tehnoloogiaid ning mille nimel otsustasime edasi liikuda.
HLS mootor: plussid ja miinused

()
HLS (HTTP Live Streaming) tehnoloogia on vĂ€lja töötatud Apple'is, seega ei ole ĂŒllatav, et selle esmakordne tugi ilmus just selle kaubamĂ€rgi seadmetele. TĂ€naseks oskavad HLS formaadis videomaterjali edastada praktiliselt kĂ”ik digitaalsetel televisioonide ja paljude Androidi opereerimissĂŒsteemiga seadmed.
HLS mootor kasutab videoandmete edastamiseks hÀsti tuntud H264 videokoodekit koos AAC- vÔi MP3 helivoogudega. KÔik heli- ja videodatas pakitakse MPEG-TS transport konteinerisse. HTTP protokolli kaudu edastamiseks jagatakse voos sisalduv teave fragmentideks, mis on kirjeldatud m3u8 mÀnguplatvormides. Ja alles seejÀrel edastatakse need fragmendid koos mÀnguplatvormidega HTTP kaudu. Fragmentide jagamine tÀhendab automaatselt viivitust sekundites. See on MPEG-TS konteineri eripÀra.
HLS mootor toetab ka mitme bitikiirusena voogusid, Live/VOD.
Peamised HLS eelised:
- Sisseehitus toetab kÔiki peamisi brauserite;
- Lihtsus rakendamisel (kui vÔrrelda WebRTC-ga);
- VĂ€ga mugav ja efektiivne on suurte publikute ĂŒlekannete korraldamine, kuna segmentide laadimist saab teha ĂŒhel korral CDN-ile.
Kuigi mootor on lihtne, ei ole kÔik nii sujuv, nagu tundub. Peamine probleem on see, et kolmandate osapoolte mÀngijate arendajad on kÔrvalekaldunud Apple'i soovitustest, nÀiteks toetatavate audioformaadide osas. Konkreetsemalt on paljud arendajad hakanud lisama vÔimalust töötada populaarsete audiovoodidega: mpeg2 video, mpeg2 audio jne. SeetÔttu tuli erinevate mÀngijate jaoks luua erinevad mÀnguplaanide formaadid.
Kuid ĂŒks suurimaid HLS mootoriga seotud probleeme on andmete edastuse kĂ”rge latentsus.
Looduse "pidurdused"
HLS-i kĂ”rge latentsuse peamine pĂ”hjus seisneb selles, et programmeerijad lĂ”id mootori maksimaalselt kvaliteetse pildi saamiseks. Seega, kasutatavad kaadrisageduse intervallid ja vahemĂ€lu suurused ei sobi otseĂŒlekannete tegemiseks. Selle tĂ”ttu on videoedastuse latentsus ĂŒsna kĂ”rge, ulatudes 5-7 sekundi.
Ăhest kĂŒljest on see vĂ€he, nĂ€iteks neile, kes vaatavad filmi videohostingu serverist. Kuid videovalve sĂŒsteemides vĂ”ib videovoo latentsus olla vĂ€ga oluline.
Kui jĂ€lgite kontorit, kus töötajad tĂ”usevad korra tunnis, pole 5 sekundi latentsusel mingit tĂ€htsust. Kuid inimesed on hakanud kurtma, et nĂ€iteks jalgpallimĂ€ngu ĂŒlekannete ajal on vestluses juba kirjutatud GOOOOL, kuid videos seda veel ei ole :). Meil on juba mitmeid kasutusjuhtumeid, kus Ivideon peab sisuliselt asendama Skype'i.
Kas latentsust HLS-is on vĂ”imalik vĂ”ita? Vastus sellele kĂŒsimusele on nagu kogenud rottide hĂ€vitaja kĂ”ne algajatele deratiseerijatele: "Rotte ei saa hĂ€vitada, kuid nende arvu saab vĂ€hendada mĂ”istlikule miinimumile." Nii on ka HLS-i latentsuse puhul, seda nulli viia ei Ă”nnestu, kuid turul on lahendusi, mis vĂ”imaldavad latentsust oluliselt vĂ€hendada.
Ahnus
Teine mootoriga seotud miinus on suuruse poolest vÀikefailide kasutamine andmete edastamiseks. Tundub, et mis selles halba on?
Iga, kes on proovinud kopeerida suures koguses vĂ€ikeseid faile ĂŒhest seadmest teise, on ilmselt mĂ€rganud, et sellise faili kirjutamise kiirus on oluliselt madalam kui sama mahuga ĂŒhe suure faili puhul. Samuti suureneb kĂ”vaketta kasutuse intensiivsus oluliselt, mis avaldab ĂŒldiselt negatiivset mĂ”ju kogu arvuti jĂ”udlusele. SeetĂ”ttu toob videote edastamine vĂ€ikeste 10-sekundiliste fragmentidena samuti kaasa viivituse suurenemise.
KokkuvÔtteks kÔik HLS-tehnoloogia plussid ja miinused.
HLSi eelised:
- VĂ”imalus töötada igasuguste seadmetega. Saate videot vaadata igas kaasaegses seadmes, olgu need siis nutitelefon, tahvelarvuti, sĂŒlearvuti vĂ”i lauaarvuti. Peamine on see, et veebibrauser oleks kaasaegses versioonis ja ĂŒhilduks HTML5 ja Media Source Extensions'iga.
- SuurepĂ€rane pildikvaliteet. Kasutatav adaptiivne edastus vĂ”imaldab dĂŒnaamiliselt muuta edastatava videofaasi kvaliteeti vastavalt internetiĂŒhenduse ribalaiusele, samal ajal pĂŒĂŒab algoritm sĂ€ilitada maksimaalset kvaliteeti.
- Kasutaja seadme keerulisi seadistusi ei ole vaja.
Puudused:
- MÔnede seadmete tugi mootori töötamiseks on piiratud.
- Kujutise edastuse kÔrged viivitused.
- Oluline suure arvu vÀikeste failide kasutamine pÔhjustab overheadi kasvu ja keerukust optimeerimisel. Anumate eripÀra tÔttu ei saa me kunagi saavutada viivitust, mis oleks vÀiksem kui segmendi suurus.
HLSi puudused ĂŒletasid meie jaoks selle eelised ja sundisid meid otsima alternatiivseid lahendusi.
Mis on WebRTC

()
WebRTC platvorm loodi Google'i poolt 2011. aastal voogedastamise video- ja helivideote edastamiseks brauserite ja mobiilirakenduste vahel minimaalsete viivitustega. Selleks kasutatakse standardset UDP-protokolli ja spetsiaalseid voogude juhtimise algoritme. TÀna on see avatud lÀhtekoodiga projekt, mida Google aktiivselt toetab ja arendab.
WebRTC on tehnoloogiate kogum, mis vĂ”imaldab videote ja heli edastamist peer-to-peer. See tĂ€hendab, et nĂ€iteks kasutajate brauserid saavad WebRTC abil andmeid otse ĂŒksteisele edastada, ilma et oleks vaja kaugservereid andmete salvestamiseks ja töötlemiseks. Kogu teave töödeldakse samuti kasutajate brauserites ja mobiilirakendustes.
Arendajad kÔikidest populaarsetest brauseritest on hinnanud selle tehnoloogia mugavust ja suurt potentsiaali. TÀna on WebRTC tugi rakendatud Mozilla Firefoxis, Operas, Google Chromes (ja kÔigis Chromiumi baasil töötavates brauserites), samuti Androidi ja iOS-i mobiilirakendustes.
Vaatamata oma ilmsetele eelistele on WebRTC-l mitmeid mÀrkimisvÀÀrseid puudusi.
Valikuraskused
WebRTC tehnoloogia on palju keerulisem vĂ”rgus suhtlemisel, kuna see pĂ”hineb P2P. Seda on keeruline tĂ”rkeotsing, testimine ja see vĂ”ib kĂ€ituda ettearvamatult. Lisaks peame ĂŒletama NAT-i ja tulemĂŒĂŒre, ning tagama toimimise vĂ”rkudes, kus UDP on blokeeritud.
Google'i WebRTC rakendamine on vĂ€ga keeruline. On isegi terve ettevĂ”te, mis pakub SDK koostamise teenuseid. Lisaks oli Google'i rakendust meie sĂŒsteemiga integreerida ÀÀrmiselt keeruline, et mitte peab kĂ”ik videot ĂŒmber kodeerima.
Oleme juba ammu soovinud anda kasutajatele vĂ”imaluse töötada tĂ€ieliku "elava" videopildiga ja minimeerida pildi viivitust ekraanil sĂŒndmustest. Samuti soovisime muuta PTZ-kaamerate kasutamise mugavamaks, kus viivitustel on kriitiline tĂ€hendus.
Arvestades, et muud viivituste tÔrje rakendused on endiselt piiratud funktsionaalsusega ja töötavad oluliselt halvemini, otsustasime kasutada WebRTC-d.
Mida me tegime

WebRTC platvormi Ă”ige rakendamine on raske ĂŒlesanne. Iga viga vĂ”i ebatĂ€psus vĂ”ib pĂ”hjustada viivituste suurenemist videopildi edastamisel vĂ”rreldes teiste platvormidega.
WebRTC korrektseks toimimiseks on esmajoones vajalik tehnoloogiline uuendus veebivideo töötlemiseks. Seda me ka tegime.
Esimese sammuna rakendasime WebRTC signaaliprotokolli Websocketi peal, samuti juurutati pilves WebRTC peer-server SDK webrtc.org baasil. Selle ĂŒlesanne on jagada videovooge kliendi WebRTC peer'idele H.264 + Opus/G.711 formaadis ilma videote kodeerimiseta.
Valisime Websocketi signaaliprotokollina, kuna sellel on juba suurepÀrane tugi kÔigis populaarsetes veebibrauserites. See aitab oluliselt vÀhendada mitte ainult arenduskulusid, vaid ka aega ja ressursse, mis kuluvad korduvatele TCP ja TLS handshake'idele vÔrreldes AJAX-iga.
Asi on selles, et vaikimisi ei paku WebRTC signaaliprotokolli, mis on vajalik videokÔnede Ôige seadistamise, toe ja katkestamise jaoks originaali ja kliendi rakenduste vahel.
Seega tuli meil iseseisvalt rakendada signaalitehnoloogiat, arendades oma signaaliserveri, mis toetab mitmeid veebiprotokolle (Websocket, WebRTC). Samuti peab olema vÔimalus sessioonide ja hÀalertÔdede reaalajas turvaliseks juhtimiseks, videote haldamiseks ja paljude teiste parameetrite haldamiseks.
P2P piirangud ĂŒletame, vĂ€hendades viivitust mitte P2P-i, vaid UDP ja voogude juhtimise kaudu, mille eesmĂ€rk on viivituse vĂ€hendamine. See on samuti WebRTC-s sees, kuna pĂ”hikasutuse juhtum on p2p kĂ”ned brauseri kaudu.
Mobiilsete klientide jaoks rakendasime mÀngija kasutades SDK webrtc.org, kuna just siin on voogude juhtimine Ôigesti teostatud, olemas kÔik tuntud Forward Error Correction (FEC) skeemid ja pakettide uuesti saatmise mehhanism on Ôigesti rakendatud kÔigi brauserite jaoks. Oluline on ka see, et SDK webrtc.org on aktiivselt arendatud Google'i poolt.
Milline on tulemuste mÔju WebRTC rakendamisel?
Oma kabinetis oleme lisanud uue optimeeritud mĂ€ngija WebRTC baasil otseĂŒlekande videote vaatamiseks. See tagab video laadimise kĂ”rge kiirus ja elimineerib tĂ€ielikult viivituse kogunemise probleemi vaatamise aja pikenedes.
PĂ€rast WebRTC toe rakendamist Ivideoni pilveteenuses saame tĂ€iesti kindlalt öelda, et nĂŒĂŒd on meie klientidele saadaval tĂ€isvÀÀrtuslik reaalajas video vaatamine. Praegu on videovoogude edastamise viivitus vĂ€hem kui ĂŒks sekund! VĂ”rdluseks: varasem HLS-mootor pakkus videot 5â7-sekundilise viivitusega. Erinevus video kuvamise kiirusest on vĂ€ga mĂ€rgatav ja kasutaja tunneb seda kohe pĂ€rast meie videoteenuse kasutamist.
Kuidas me ka oletasin, vÔimaldas uue mÀngija rakendamine PTZ ja kaameraga hÀÀlkommunikatsiooni reageerimist tÔsta.

On ainult ĂŒks Ă”rn aspekt, millele soovime tĂ€helepanu juhtida. Uus WebRTC mĂ€ngija töötab praegu testreĆŸiimis. Just seetĂ”ttu ei lĂŒlita me seda kĂ”igile oma klientidele vaikimisi sisse. Kuid saate selle aktiveerida iseseisvalt, lubades vastava punkti kaamera seadetes (selleks peate minema ).
WebRTC rakendamise omadused Ivideoni teenuses

WebRTC on hetkel endiselt eksperimentaalne tehnoloogia. Selle tugi pole veel Ôigesti rakendatud kÔigis brauserites ja kasutajaseadmetes, samuti mitte kÔigis kaamerates.
Just see seletabki, miks me pole veel teinud WebRTC mÀngijat vaikimisi kÔigile kasutajatele peamiseks.
Praegu soovitame kasutada WebRTC-d ainult Google Chrome'i brauseris. Viimased versioonid Firefoxist ja Safarist toetavad ka seda tehnoloogiat, kuid kahjuks pole need veel stabiilsed.
Me ei ole veel rakendanud WebRTC tuge mobiilseadmete brauserites. Praegu, kui sisenete mobiilseadmest ja aktiveerite WebRTC, ei tööta see reĆŸiim. Siiski on WebRTC meie mobiilirakendustes ja .
Ja lÔpetades jutu WebRTC rakendamise omadustest meie teenuses, mÀrkime veel kahte Ôrna punkti.
Esiteks on tehnoloogia suunatud just reaalajas video edastamisele. SeetÔttu, kui teie kanalil pole piisavalt lÀbilaskvust videovoogude edastamiseks, mÀrkate kaadrite vahelesegunemist (HLS-i puhul mÀrkate video peatumisi ja viivituse suurenemist, kuid kaadreid ei kukku), kuid video edastatakse ikkagi reaalajas.
Teiseks, kuna tehnoloogia on mĂ”eldud töötama reaalse aja otseĂŒlekandega videoga, ei kasuta me seda arhiivvideote töötlemiseks.
Teised muudatused teenuses
Hetkel ei osale Flash enam automaatse mootori valimise mehhanismis. Sellest mÀngijast on siiski vÔimalik kasutada, kuid selle kÀsitsi valimiseks tuleb minna konto vÔi kaamera seadistustesse. See pole lihtne trend, lihtsalt meie teenuse statistika jÀrgi on Flash-i kasutajate hulk praktiliselt kadunud. Ja katse mÀÀrata, kas kasutaja brauser toetab seda, vÔtab meilt umbes 2 vÀÀrtuslikku sekundit.
Siin on lĂŒhidalt muudatused, mida meie pilves videovalve sĂŒsteemis ja isiklikus konto kasutajas ootavad. JĂ€tkake meiega ja jĂ€rgige uudiseid!
Allikas: habr.com
