
Pilves videovalvesüsteemiga töötamise esimestest päevadest alates seisisime silmitsi probleemiga, mille lahenduseta oleks Ivideonist saanud loobuda – see oli meie Everesti tipp, mille vallutamine nõudis palju energiat, kuid nüüd, lõpuks, oleme jätnud jääsirds tipule krossplatvormilise rägastiku.
Hääl- ja videoteedete süsteem Internetis ei tohiks sõltuda riistvarast, veebikliendidest ja nende toetatavatest standarditest ning peaks õigesti toimima ka Network Address Translators ja tulemüüride korral. Pilvevideovalve kasutaja soovib teenusele ligipääsu, isegi kui ta kasutab analoogkaameraid ja eelistab elavat videot vaadata kõige moodsamal seadmel.
Ehk on oluline, et kasutaja soovib vaadata videot minimaalse viivitusega. Praktiliselt ainus võimalus näidata videot madala viivitusega brauseris on kasutada WebRTC-d (veebireaalajas suhtlemine). WebRTC on tehnoloogiate kogum videote ja heli peer-to-peer edastamiseks brauserites, mis on algselt loodud madala viivitusega videovoodete edastamiseks ja esitamiseks. Selleks kasutatakse muu hulgas UDP protokolli.
Enne kui räägime teile, mida uus mootor kasutajale toob, meenutame, miks ja kuidas toetame HLS-tehnoloogiaid ning milleks oleme otsustanud edasi liikuda.
HLS mootor: plussid ja miinused

()
HLS (HTTP Live Streaming) tehnoloogia on välja töötatud Apple'is, seega pole üllatav, et selle toetamine ilmus esmakordselt just selle kaubamärgi seadmetes. Tänapäeval oskavad HLS-formaadis videopildid esitamiseks peaaegu kõik televisioonipuldid ja paljud Androidi operatsioonisüsteemidel töötavad seadmed.
HLS mootor kasutab videote edastamiseks laialdaselt tuntud H264 videokoodekit koos AAC- või MP3-audiovoogudega. Kogu audio- ja videovoog pakitakse MPEG-TS transportkonteinerisse. HTTP-protokolli kaudu edastamiseks jagatakse voog sisaldav teave fragmentideks, mis on kirjeldatud m3u8 esitusloendites. Alles seejärel edastatakse need fragmendid koos esitusloenditega HTTP kaudu. Jagamine fragmentideks tähendab automaatselt viivitust sekundites. See on MPEG-TS konteineri eripära.
HLS mootor toetab ka mitme bitikiirusese vooge, otseülekandeid ja VOD-i.
HLS peamised eelised:
- sisseehitatud tugi kõikides peamistes brauserites;
- lihtne rakendada (võrreldes WebRTC-ga);
- väga mugav ja efektiivne suure publiku ülekannete korraldamine, kuna segmentide saab laadida CDN-i ainult üks kord.
Hoolimata selle mootori lihtsusest ei ole kõik nii sujuv, nagu võib arvata. Peamine probleem seisneb selles, et kolmandate osapoolte mängijate arendajad on Apple'i soovitustest kõrvale kaldunud, näiteks toetatavate helivormingute osas. Eelkõige on paljud arendajad hakanud lisama võimalust töötada populaarsete helivoogudega: mpeg2 video, mpeg2 audio jms. Tulemuseks tuli luua erinevad esitlussüsteemide loendivormingud erinevatele mängijatele.
Kuid üheks suurimaks HLS mootori probleemiks on kõrge andmeedastusviivitus.
„Kärped“
Peamine põhjus, miks HLS-il on kõrge viivitus, on see, et programmeerijad lõid mootori maksimaalselt kvaliteetse pildi saamiseks. Seetõttu ei sobi kasutatava kaadrisageduse ja esituse vahemälu parameetrid otseülekannete tegemiseks. Selle tõttu tekib videoedastusprotsessis piisavalt kõrge viivitus, mis võib ulatuda 5-7 sekundini.
Ühelt poolt on see vähe, näiteks neile, kes vaatavad filmi videoinenuse serverist. Kuid videovalvesüsteemide puhul võib videosaate viivitus olla väga suurte tagajärgedega.
Kui te jälgite aega, mil töötajad tõusevad oma monitoridelt regulaarselt üles, siis 5-sekundiline viivitus ei oma mingit tähtsust. Kuid inimesed on hakanud kurtma, et näiteks jalgpallimängu otseülekande ajal on chatis juba kirjutatud GOOOOOL, kuid videos seda veel ei ole :). Meil on juba mitmeid kasutajate juhtumeid, kus Ivideon peab praktiliselt asendama Skype'i.
Kas HLS-i viivitust on võimalik võita? Vastus sellele küsimusele kõlab nagu kogenud rottide hävitaja esinemine loengus algajatele deratiseerijatele: "Rottide hävitamine pole võimalik, kuid nende populatsiooni saab viia mõistlikku miinimumini." Nii on ka HLS-i viivitusega, selle nulli viimine ei õnnestu, kuid turul on lahendusi, mis võimaldavad viivitust märkimisväärselt vähendada.
Peene lõikamine
Teiseks miinuseks on mootori kasutamine väikeste failide edastamiseks. Tundub, et mis on selles halba?
Igaüks, kes on üritanud suurendada väikeste failide kopeerimist ühest kandjast teise, on kindlasti märganud, et nii keerulise failikomplekti kirjutamise kiirus on palju madalam kui ühe suure faili puhul sama mahutavusega. Samuti suureneb intensiivsus, millega kõvakettale pöördutakse, mis kokkuvõttes avaldab negatiivset mõju kogu arvuti jõudlusele. Seetõttu toob videote edastamine väikeste 10-sekundiliste fragmentidena samuti kaasa viivituste suurenemise.
Kokkuvõtteks toome välja HLS-tehnoloogia kõik plussid ja miinused.
HLS-i eelised:
- Võime töötada igasuguste seadmetega. Saate vaadata videosid igasugustes kaasaegsetes seadmetes, olgu need siis nutitelefonid, tahvelarvutid, sülearvutid või lauaarvutid. Peamine on see, et veebibrauser oleks uusima versiooniga ja ühilduv HTML5 ja Media Source Extensions'iga.
- Suurepärane pildikvaliteet. Kasutatav kohanduv edastamise funktsioon võimaldab dünaamiliselt muuta edastatava videopleki kvaliteeti vastavalt internetiühenduse ribalaiusele, samal ajal püüdleb algoritm maksimaalse kvaliteedi säilitamise poole.
- Ei ole vajalik keeruline kasutaja seadistamine.
Puudused:
- Mõnede seadmete puhul on piiratud toetamine mootoriga töötamisel.
- Kõrged viivitused pildi edastamisel.
- Tõsine kulude suurenemine ja optimeerimise keerukus väikeste failide kasutamise tõttu. Kuninglikult konteinerist tulenevalt ei saavuta me kunagi viivitust madalam kui segmentide suurus.
HLS puudused ületasid meile selle eelised ja sundisid otsima alternatiivseid lahendusi.
Mis on WebRTC

()
WebRTC platvormi arendas Google 2011. aastal voogesituse video- ja helidata edastamiseks brauserite ja mobiilirakenduste vahel minimaalsete viivitustega. Selleks kasutatakse standardset UDP protokolli ja spetsiaalseid voogude haldamise algoritme. Tänaseks on see avatud lähtekoodiga projekt, mida Google aktiivselt toetab ja arendab.
WebRTC on tehnoloogiate kogum, mis võimaldab peer-to-peer video- ja häälülekandeid. See tähendab, et kasutajate brauserid saavad kasutada WebRTC-d, et edastada andmeid omavahel otse, ilma et oleks vaja kasutada kaugservereid andmete salvestamiseks ja töötlemiseks. Kõik teave töödeldakse ka lõppkasutajate brauserites ja mobiilirakendustes.
Selle tehnoloogia mugavust ja suurt potentsiaali on kõrgelt hinnanud kõik tuntud brauserite arendajad. Praegu toetavad WebRTC-d Mozilla Firefox, Opera, Google Chrome (ja kõik Chromiumi põhised brauserid), samuti Androidi ja iOS-i mobiilirakendused.
Hoolimata oma ilmsetest eelistest, on WebRTC-l mitmeid olulisi puudusi.
Valiku raskused
WebRTC tehnoloogia on võrguühenduste osas palju keerulisem, kuna see tugineb P2P-le. Selle seadistamine ja testimine on keeruline, see võib käituda ettearvamatult. Samuti peame ületama NAT-i ja tulemüüre ning tagama töö sellistes võrkudes, kus UDP on blokeeritud.
Google'i WebRTC rakendamine on väga keeruline. On isegi terve ettevõte, mis pakub SDK ehitamise teenuseid. Lisaks oli Google'i rakendust meie süsteemiga integreerida väga raske, et samal ajal kogu videot ümber kodeerida ei tuleks.
Siiski oleme ammu soovinud anda kasutajatele võimaluse töötada täisfunktsionaalse "elava" videovaatega ja minimeerida pildi viivitust ekraanil toimuvate sündmustega. Lisaks soovisime muuta PTZ-kaamerate kasutamise mugavamaks, kus viivitused on kriitilise tähtsusega.
Arvestades, et teised lagide vähendamise lahendused on senini piiratud funktsionaalsusega ja töötavad märkimisväärselt halvemini, otsustasime kasutada WebRTC-d.
Mida me tegime

WebRTC platvormi õigesti juurutamine on keeruline ülesanne. Iga vigastus või ebatäpsus võib viia olukorrani, kus video edastamise viivitused ei vähene võrreldes teiste platvormidega, vaid hoopis suurenevad.
WebRTC korrektseks toimimiseks on kõigepealt vajalik tehnoloogiline moderniseerimine veebivideosse suunatud tehnoloogiate seas. Just seda me tegime.
Alguses viidi ellu WebRTC signaalimisprotokoll serveri Websocketi kohal, samuti paigaldati WebRTC peer-server pilve SDK webrtc.org põhjal. Selle ülesanne on jagada videovooge klientide WebRTC peer-idele formaadis H.264 + Opus/G.711 ilma video ümberkodeerimiseta.
Valisime Websocketi signaalimisprotokollina, kuna tal on juba kvaliteetne tugi kõigis populaarsetes veebibrauserites. Selle tõttu on võimalik oluliselt vähendada mitte ainult arenduse kõrvalkulusid, vaid ka mitte raisata aega ja ressursse korduvate TCP ja TLS käepigistuste peale võrreldes AJAX-iga.
Asjaolu on see, et vaikimisi ei paku WebRTC signaalimisprotokolli, mis on vajalik reaalajas videokõnede õige seadistamise, toetamise ja katkestamise korraldamiseks lähte- ja kliendi rakenduste vahel.
Kuna signaalimise tehnoloogia iseseisvaks elluviimiseks oli meil vajalik arendada oma signaaliserver, mis toetab mitmeid veebiprotokolle (Websocket, WebRTC). Lisaks pakkuda turvalist seansihaldust ja teavitusi reaalajas, video haldamist ja palju muid parameetreid.
Oleme ületanud P2P piirangud, vähendades latentsust mitte P2P kaudu, vaid UDP ja latentsuse vähendamisele suunatud voogude juhtimise abil. See on samuti sisse ehitatud WebRTC-sse, kuna põhikasutuse juhtumiks on p2p kõned läbi brauseri.
Meie mobiilikliendis oleme rakendanud mängijat, kasutades SDK-d webrtc.org, kuna just selles on voogude juhtimine korralikult ellu viidud, olemas kõik tuntud Forward Error Correction (FEC) skeemid ning pakettide uuesti saatmise mehhanism on õigesti rakendatud kõigis brauserites. Oluline on ka see, et webrtc.org SDK-d arendab aktiivselt Google.
Milline on WebRTC kasutusele võtmise tulemus?
Kaamerate elava video vaatamiseks oleme iseteeninduskeskkonda lisanud uue optimeeritud mängija, mis põhineb WebRTC-l. See tagab videovoo kiire laadimise ja kõrvaldab täielikult viivituse kogunemise probleemi vaatluse kestuse pikenedes.
Pärast WebRTC toe rakendamist Ivideoni pilveteenuses võime täielikult kindel olla, et meie klientidel on nüüd juurdepääs täisfunktsionaalsele otseülekande videole. Praegu ei ületa viivitus videopildi edastamisel ühte sekundit! Võrdluseks: endine HLS-mootor tagas video edastamise 5-7 sekundi viivitusega. Videodemonstratsiooni kiirus on märkimisväärselt erinev, ning kasutaja märkab seda kohe pärast meie videoserveriga töötama asumist.
Kuidas me ka ennustasime, võimaldas uue mängija rakendamine PTZ ja kõneside kaameraga reageerimist parandada.

On ainult üks väike nüanss, millele soovime tähelepanu juhtida. Uus WebRTC mängija töötab praegu testrežiimis. Seetõttu ei lülita me seda vaikimisi sisse kõigile meie klientidele. Siiski saate selle iseseisvalt aktiveerida, lubades vastava punkti kaamera seadetes (selleks tuleb siseneda ).
WebRTC rakendamise omadused Ivideoni teenuses

WebRTC on hetkel endiselt eksperimentaalne tehnoloogia. Selle tugi pole seni kõigis brauserites ja seadmetes, samuti mitte kõigis kaamerates õigesti ellu viidud.
Just see seletab, miks me ei ole hetkel WebRTC mängijat vaikimisi kõigile kasutajatele peamiseks teinud.
Praegu soovitame kasutada WebRTC'd ainult Google Chrome'i brauseris. Viimased versioonid Firefoxist ja Safari'st toetavad ka seda tehnoloogiat, kuid kahjuks on see veel ebastabiilne.
Me ei ole veel WebRTC tuge mobiilseadmete brauserites juurutanud. Kui sisenete mobiilseadmest ja aktiveerite WebRTC, siis see režiim ei tööta. Kuid WebRTC on olemas meie mobiilirakendustes. ja .
Kokkuvõttes, rääkides WebRTC rakendamise eripäradest meie teenuses, tahame märkida veel kahte nüanssi.
Esiteks, tehnoloogia on suunatud just otseülekande video edastamisele reaalajas. Seetõttu, kui teie kanali läbilaskevõime ei ole piisav video edastamiseks, märkate kaadrikadu (HLS-i puhul märkate video seiskumisi ja viivituste suurenemist, kuid kaadrid ei kao), kuid video edastamine toimub siiski reaalajas.
Teiseks, kuna tehnoloogia on mõeldud just reaalajas elava video töötlemiseks, ei kasuta me seda arhiivvideote töötlemiseks.
Teised muudatused teenuses
Hetkel ei osale Flash enam automaatse mootori valiku mehhanismis. Sellise mängija kasutamine on endiselt võimalik, kuid selleks tuleb see manuaalselt valida konto või kaamera seadetes. See ei ole lihtsalt moes olemine; statistika kohaselt ei ole meie teenuse kasutajate seas Flashiga töötavaid inimesi praktiliselt jäänud. Ja kasutaja brauseri toetuse määramiseks kulutame me umbes 2 sekundit väärtuslikku aega.
Siin on lühidalt muutustest, mis teid ootavad meie pilvepõhises videosüsteemis ja isiklikus kontoris. Jätkake meiega ja jälgige uudiseid!
Allikas: habr.com
