
Nuo pirmųjų darbo su debesų vaizdo stebėjimo sistema dienų susidūrėme su problema, kurios neturėdami sprendimo galėjome atsisakyti Ivideon – tai buvo mūsų Everestas, kopimas atėmė daug energijos, bet dabar pagaliau turime įsmeigė ledkirtį į kelių platformų dėlionės viršų.
Garso ir vaizdo perdavimo internetu sistema neturėtų priklausyti nuo įrangos, žiniatinklio klientų ir jų palaikomų standartų, taip pat tinkamai veikti esant tinklo adresų vertėjams ir ugniasienėms. Vaizdo stebėjimo debesyje vartotojas nori prieiti prie paslaugos, net ir naudodamas analogines kameras, o tiesioginę vaizdo transliaciją nori žiūrėti moderniausiu įrenginiu.
Labai svarbu, kad vartotojas nori žiūrėti vaizdo įrašus su minimaliu delsimu. Beveik vienintelis būdas naršyklėje rodyti vaizdo įrašą su maža delsa yra naudoti WebRTC (žiniatinklio realiojo laiko ryšius). „WebRTC“ yra vaizdo ir garso perdavimo naršyklėse technologijų rinkinys, iš pradžių sukurtas vaizdo įrašų srautams perduoti ir atkurti su maža delsa. Šiuo tikslu, be kita ko, naudojamas UDP protokolas.
Prieš pasakodami, ką naujasis variklis suteikia vartotojui, priminsime, kodėl ir kodėl palaikome HLS technologijas ir kodėl nusprendėme judėti toliau.
HLS variklis: privalumai ir trūkumai

()
HLS (HTTP tiesioginio transliavimo) technologiją sukūrė „Apple“, todėl nenuostabu, kad ji pirmiausia buvo palaikoma „Apple“ įrenginiuose. Šiandien HLS vaizdo įrašus taip pat palaiko praktiškai visi priedėliai ir daugelis įrenginių, kuriuose veikia ši OS. Android.
HLS variklis naudoja gerai žinomą H264 vaizdo kodeką kartu su AAC arba MP3 garso srautais vaizdo duomenims perduoti. Visas garso ir vaizdo duomenų srautas supakuotas į MPEG-TS transportavimo konteinerį. Norint perduoti HTTP protokolu, sraute esanti informacija yra padalinta į fragmentus, aprašytus m3u8 grojaraščiuose. Ir tik tada šie fragmentai kartu su grojaraščiais perduodami per HTTP. Suskaidymas automatiškai reiškia vėlavimą sekundėmis. Tai yra MPEG-TS konteinerio savybė.
HLS variklis taip pat palaiko kelių bitų srautus, tiesioginį / VOD.
Pagrindiniai HLS pranašumai:
- integruotas palaikymas visose pagrindinėse naršyklėse;
- diegimo paprastumas (palyginti su WebRTC);
- Labai patogu ir efektyvu organizuoti visų rūšių transliacijas didelei auditorijai, nes segmentus į CDN galima įkelti vieną kartą.
Nepaisant variklio paprastumo, ne viskas taip sklandžiai, kaip atrodo. Pagrindinė problema yra ta, kad trečiųjų šalių grotuvų kūrėjai atsisakė „Apple“ rekomendacijų, pavyzdžiui, dėl palaikomų garso formatų. Visų pirma, daugelis kūrėjų pradėjo pridėti galimybę dirbti su populiariais garso srautais: mpeg2 vaizdo įrašu, mpeg2 garsu ir kt. Dėl to jie turėjo sukurti skirtingus grojaraščių formatus skirtingiems grotuvams.
Tačiau viena didžiausių HLS variklio problemų yra didelė duomenų perdavimo delsa.
„Stabdžių“ ištakos
Pagrindinė didelės HLS delsos priežastis yra ta, kad programuotojai sukūrė variklį, kad gautų aukščiausios kokybės vaizdus. Todėl naudojami kadrų intervalo parametrai ir atkūrimo buferio dydis tiesioginėms vaizdo transliacijoms tiesiog netinka. Dėl šios priežasties vaizdo medžiagos perdavimo vėlavimas yra gana didelis, kuris gali būti 5–7 sekundės.
Viena vertus, tai nėra daug, pavyzdžiui, tiems, kurie žiūri filmą iš vaizdo įrašų prieglobos serverio. Tačiau vaizdo stebėjimo sistemoms vaizdo medžiagos perdavimo vėlavimas gali būti labai svarbus.
Jei stebite biurą, kuriame darbuotojai kartą per valandą pakelia akis iš monitorių, 5 sekundžių delsimas visiškai nesvarbus. Bet žmonės pradėjo skųstis, kad, pavyzdžiui, transliuodami futbolo rungtynes, pokalbyje jau parašė GOOOOL, bet to dar nėra vaizdo įraše :). Jau turime nemažai vartotojų atvejų, kai „Ivideon“ turėtų praktiškai pakeisti „Skype“.
Ar įmanoma įveikti delsą HLS? Atsakymas į šį klausimą skamba kaip patyrusio žiurkių naikintojo pasisakymas paskaitoje pradedantiesiems kenkėjų kontrolės specialistams: „Žiurkių išnaikinti negalima, tačiau jų skaičių galima sumažinti iki protingo minimumo“. Tas pats ir su vėlavimu HLS, jo sumažinti iki nulio nepavyks, tačiau rinkoje yra sprendimų, kurie gali žymiai sumažinti vėlavimą.
Puikūs pjūviai
Kitas variklio trūkumas yra mažų failų naudojimas duomenims perduoti. Atrodytų, kas čia ne taip?
Kiekvienas, kuris bandė kopijuoti daug mažų failų iš vienos laikmenos į kitą, tikriausiai pastebėjo, kad tokio rinkinio rašymo greitis yra daug mažesnis nei vieno didelio tokio paties dydžio failo. Ir prieigos prie standžiojo disko intensyvumas žymiai padidėja, o tai paprastai neigiamai veikia viso kompiuterio našumą. Todėl vaizdo duomenų perdavimas mažais 10 sekundžių gabalais taip pat prisideda prie variklio delsos padidėjimo.
Trumpai apibendrinkime visus HLS technologijos privalumus ir trūkumus.
HLS pranašumai:
- Galimybė dirbti su bet kokiu įrenginiu. Galite žiūrėti vaizdo įrašus bet kuriame šiuolaikiniame įrenginyje, nesvarbu, ar tai išmanusis telefonas, planšetinis kompiuteris, nešiojamas kompiuteris ar stalinis kompiuteris. Svarbiausia, kad žiniatinklio naršyklė būtų atnaujinta ir suderinama su HTML5 bei medijos šaltinio plėtiniais.
- Puiki vaizdo kokybė. Naudojama adaptyvi duomenų perdavimo funkcija leidžia dinamiškai keisti perduodamo vaizdo kokybę priklausomai nuo interneto ryšio pralaidumo, o algoritmas siekia išlaikyti maksimalią kokybę.
- Nereikia sudėtingos vartotojo įrangos konfigūracijos.
Trūkumai:
- Ribotas palaikymas dirbant su varikliu kai kuriuose įrenginiuose.
- Didelis vaizdo perdavimo vėlavimas.
- Didelis pridėtinių išlaidų padidėjimas ir optimizavimo sudėtingumas dėl mažų failų naudojimo. Dėl sudėtinio rodinio pobūdžio niekada negalėsime gauti mažesnio už segmento dydžio delsos.
HLS trūkumai nusvėrė mūsų privalumus ir privertė ieškoti alternatyvių variantų.
Kas yra WebRTC

()
WebRTC platformą „Google“ sukūrė 2011 m., norėdama perduoti srautinius vaizdo ir garso duomenis tarp naršyklių ir mobiliųjų programų su minimalia delsa. Tam naudojamas standartinis UDP protokolas ir specialūs srauto valdymo algoritmai. Šiandien tai yra atvirojo kodo projektas, jį aktyviai prižiūri Google ir jis vystomas.
„WebRTC“ yra lygiaverčių vaizdo ir garso perdavimo technologijų rinkinys. Tai yra, pavyzdžiui, vartotojų naršyklės, naudojančios WebRTC, gali tiesiogiai perduoti duomenis viena kitai, nenaudodamos nuotolinių serverių duomenims saugoti ir apdoroti. Visa informacija taip pat apdorojama galutinių vartotojų naršyklėse ir mobiliosiose programose.
Šios technologijos patogumą ir plačias galimybes įvertino visų populiarių naršyklių kūrėjai. „WebRTC“ palaikymas šiuo metu galimas „Mozilla Firefox“, „Opera“, „Google Chrome“ (ir visose „Chromium“ pagrindu sukurtose naršyklėse), taip pat mobiliosiose programėlėse. Android ir iOS.
Nepaisant visų neabejotinų pranašumų, WebRTC turi keletą reikšmingų trūkumų.
Sunkumai pasirinkimo
WebRTC technologija yra daug sudėtingesnė tinklo sąveikos požiūriu dėl to, kad ji yra apie P2P. Sunku derinti, išbandyti ir gali elgtis nenuspėjamai. Tuo pačiu turime įveikti NAT ir ugniasienę, turime užtikrinti veikimą tinkluose, kuriuose UDP blokuojamas.
„Google“ WebRTC diegimą labai sunku naudoti. Yra net visa įmonė, teikianti SDK surinkimo paslaugas. Be to, „Google“ įdiegimą buvo labai sunku integruoti su mūsų sistema, iš naujo nekoduojant viso vaizdo įrašo.
Tačiau jau seniai norėjome suteikti vartotojams galimybę dirbti su visaverčiu „tiesioginiu“ vaizdo įrašu ir sumažinti atsilikimą tarp vaizdo ekrane ir pačių įvykių. Be to, mes norėjome patogiau naudoti PTZ kameras, kuriose vėlavimai yra kritiški.
Atsižvelgdami į tai, kad kiti anti-lag diegimai vis dar turi ribotą funkcionalumą ir veikia pastebimai blogiau, nusprendėme naudoti WebRTC.
Ką mes padarėme

Tinkamai įdiegti WebRTC platformą nėra lengva užduotis. Bet koks klaidingas skaičiavimas ar netikslumas gali lemti, kad vaizdo perdavimo vėlavimai ne tik nesumažės, lyginant su kitomis platformomis, bet net padidės.
Kad WebRTC veiktų tinkamai, visų pirma būtina atlikti technologinį kamino atnaujinimą darbui su žiniatinklio vaizdo įrašu. Taip ir padarėme.
Pirma, mes įdiegėme WebRTC signalizacijos protokolo serverį per Websocket, taip pat įdiegėme WebRTC lygiavertį serverį debesyje, pagrįstą webrtc.org SDK. Jo užduotis yra platinti vaizdo srautus kliento WebRTC kolegoms H.264 + Opus/G.711 formatu be vaizdo perkodavimo.
Signalizacijos protokolu pasirinkome Websocket, nes jis jau turi aukštos kokybės palaikymą visose populiariose interneto naršyklėse. Dėl to, palyginti su AJAX, galite žymiai sumažinti ne tik kūrimo išlaidas, bet ir neeikvoti laiko bei išteklių pakartotiniam TCP ir TLS rankų paspaudimui.
Faktas yra tas, kad pagal numatytuosius nustatymus WebRTC nepateikia signalizacijos protokolo, būtino tinkamai sukonfigūruoti, palaikyti ir nutraukti realaus laiko vaizdo ryšį tarp šaltinio ir kliento programų.
Ir norėdami savarankiškai įdiegti signalizacijos technologiją, turėjome sukurti savo signalizacijos serverį, palaikantį kelis žiniatinklio protokolus (Websocet, WebRTC). Ir su galimybe saugiai valdyti seansus ir pranešimus realiuoju laiku, vaizdo įrašų valdymą ir daug daugiau.
Mes įveikėme P2P apribojimus sumažindami delsą ne per P2P, o naudodami UDP ir srauto valdymą, kad sumažintume delsą. Tai taip pat integruota į WebRTC, nes pagrindinis naudojimo atvejis yra p2p pokalbiai per naršyklę.
Mobiliajame kliente grotuvą įdiegėme naudodami webrtc.org SDK, nes tik jis teisingai įgyvendina srauto valdymą, turi visas žinomas „Forward Error Correction“ (FEC) schemas ir teisingai įgyvendina paketų pakartotinio siuntimo visoms naršyklėms mechanizmą. Taip pat svarbu, kad „Google“ aktyviai kuria webrtc.org SDK.
Koks yra WebRTC diegimo rezultatas?
Norėdami žiūrėti tiesioginį vaizdo įrašą iš kamerų, į jūsų asmeninę paskyrą įtraukėme naują optimizuotą leistuvą, pagrįstą WebRTC. Tai užtikrina greitą vaizdo įrašo įkėlimo greitį ir visiškai pašalina delsos kaupimosi problemą, kai ilgėja žiūrėjimo laikas.
Įvedę WebRTC palaikymą „Ivideon“ debesies paslaugoje, galime drąsiai teigti, kad mūsų klientai dabar gali žiūrėti visavertį tiesioginį vaizdo įrašą. Dabar vėlavimas transliuojant vaizdo sekas neviršija vienos sekundės! Palyginimui, ankstesnis HLS variklis teikė vaizdo įrašą su 5–7 sekundžių vėlavimu. Vaizdo demonstravimo greičio skirtumas yra labai reikšmingas ir vartotojas tai pastebės iškart pradėjęs dirbti su mūsų vaizdo paslauga.
Kaip ir tikėjomės, naujojo grotuvo įdiegimas pagerino PTZ reagavimą ir balso ryšį su kamera.

Yra tik vienas subtilus dalykas, į kurį norime atkreipti dėmesį. Naujasis WebRTC grotuvas šiuo metu veikia bandomuoju režimu. Štai kodėl pagal numatytuosius nustatymus įgaliname jį ne visiems savo klientams. Bet jūs galite jį suaktyvinti patys, įjungę atitinkamą elementą fotoaparato nustatymuose (norėdami tai padaryti, eikite į ).
„WebRTC“ diegimo „Ivideon“ paslaugoje ypatybės

WebRTC šiuo metu vis dar yra eksperimentinė technologija. Jo palaikymas dar nėra tinkamai įdiegtas visose naršyklėse ir vartotojo įrenginiuose, taip pat ne visuose fotoaparatuose.
Būtent todėl mes dar nepadarėme WebRTC grotuvo numatytuoju visiems vartotojams.
Kol kas WebRTC rekomenduojame naudoti tik „Google Chrome“ naršyklėse. Naujausios „Firefox“ ir „Safari“ versijos taip pat palaiko šią technologiją, tačiau, deja, ji vis dar nestabili.
Dar neįdiegėme „WebRTC“ palaikymo mobiliųjų įrenginių naršyklėms. Šiuo metu, jei prisijungsite iš mobiliojo įrenginio ir suaktyvinsite WebRTC, šis režimas neveiks. Tačiau WebRTC yra mūsų mobiliosiose programose и .
Baigdami pasakojimą apie WebRTC diegimo mūsų paslaugoje ypatybes, atkreipkime dėmesį į dar du subtilius dalykus.
Pirma, technologija yra orientuota į tiesioginio vaizdo transliavimą realiuoju laiku. Todėl jei jūsų kanale nepakanka pralaidumo vaizdo įrašui perduoti, pastebėsite kadrų kritimą (naudodami HLS pastebėsite vaizdo blukimą ir padidėjusį delsą, tačiau nebus kadrų kritimų), tačiau vaizdo įrašas vis tiek bus transliuojamas realiai. laikas.
Antra, kadangi ši technologija sukurta specialiai darbui su tiesioginiu vaizdo įrašu realiuoju laiku, mes jos nenaudojame darbui su archyvuotais vaizdo įrašų duomenimis.
Kiti paslaugos pakeitimai
Šiuo metu „Flash“ nebedalyvauja automatinio variklio pasirinkimo mechanizme. Vis tiek galite naudoti tokį grotuvą, tačiau norėdami tai padaryti, turite jį pasirinkti rankiniu būdu paskyros arba fotoaparato nustatymuose. Tai nėra duoklė madai, tiesiog pagal mūsų tarnybos statistiką praktiškai neliko vartotojų, dirbančių su „Flash“. Ir bandydami nustatyti, ar vartotojo naršyklė tai palaiko, prarandame apie 2 sekundes brangaus laiko.
Pateikiame trumpą mūsų debesų vaizdo stebėjimo sistemos ir asmeninės paskyros pokyčių, kurie jūsų laukia, apžvalgą. Likite su mumis ir sekite naujienas!
Šaltinis: www.habr.com
