
Ensimmäisistä pilvivideovalvontajärjestelmän työskentelypäivistä lähtien kohtasimme ongelman, johon ilman ratkaisua voisimme luopua Ivideonista - tämä oli meidän Everestimme, kiipeily vei paljon energiaa, mutta nyt olemme vihdoin työnsi jääkirveen monitasoisen palapelin yläosaan.
Äänen ja videon Internetin kautta lähetettävän järjestelmän ei pitäisi olla riippuvainen laitteista, Web-asiakkaista ja niiden tukemista standardeista, ja se toimii oikein myös verkko-osoitteiden kääntäjien ja palomuurien läsnä ollessa. Pilvivideovalvontakäyttäjä haluaa käyttää palvelua, vaikka käyttäisikin analogisia kameroita, ja haluaa katsoa suoraa videolähetystä nykyaikaisimmalla laitteella.
On erittäin tärkeää, että käyttäjä haluaa katsoa videoita mahdollisimman pienellä viiveellä. Melkein ainoa tapa näyttää videota alhaisella viiveellä selaimessa on käyttää WebRTC:tä (reaaliaikainen verkkoviestintä). WebRTC on joukko tekniikoita videon ja äänen vertaissiirtoon selaimissa, alun perin suunniteltu videostriimien siirtoon ja toistoon alhaisella viiveellä. Tähän käytetään mm. UDP-protokollaa.
Ennen kuin kerromme, mitä uusi moottori antaa käyttäjälle, muistutamme, miksi ja miksi tuemme HLS-teknologioita ja miksi päätimme jatkaa.
HLS-moottori: plussat ja miinukset

()
Apple kehitti HLS-tekniikan (HTTP Live Streaming), joten ei ole yllätys, että sitä tuettiin ensimmäisen kerran Applen laitteilla. Nykyään HLS-videota tukevat myös käytännössä kaikki digisovittimet ja monet käyttöjärjestelmää käyttävät laitteet. Android.
HLS-moottori käyttää tunnettua H264-videokoodekkia yhdessä AAC- tai MP3-äänivirtojen kanssa videodatan suoratoistoon. Koko ääni- ja videodatavirta pakataan MPEG-TS-kuljetussäiliöön. HTTP-protokollan kautta siirtoa varten virran sisältämä tieto jaetaan m3u8-soittolistoissa kuvattuihin fragmentteihin. Ja vasta sitten nämä fragmentit soittolistojen kanssa lähetetään HTTP:n kautta. Purkaminen tarkoittaa automaattisesti viivettä sekunneissa. Tämä on MPEG-TS-säiliön ominaisuus.
HLS-moottori tukee myös monibittisiä suoratoistoja, Live/VOD.
HLS:n tärkeimmät edut:
- sisäänrakennettu tuki kaikissa yleisimmissä selaimissa;
- käyttöönoton helppous (Verrattuna WebRTC:hen);
- On erittäin kätevää ja tehokasta järjestää kaikenlaisia lähetyksiä suurelle yleisölle, koska segmentit voidaan ladata CDN-verkkoon kerran.
Moottorin yksinkertaisuudesta huolimatta kaikki ei ole niin sujuvaa kuin miltä näyttää. Suurin ongelma on, että kolmannen osapuolen soitinkehittäjät ovat siirtyneet pois Applen suosituksista esimerkiksi tuettujen ääniformaattien suhteen. Erityisesti monet kehittäjät alkoivat lisätä kykyä työskennellä suosittujen äänivirtojen kanssa: mpeg2-video, mpeg2-ääni jne. Tämän seurauksena heidän oli luotava erilaisia soittolistamuotoja eri pelaajille.
Mutta yksi suurimmista ongelmista HLS-moottorissa on tiedonsiirron korkea latenssi.
"Jarrujen" alkuperä
Pääsyy HLS:n korkeaan latenssiin piilee siinä, että ohjelmoijat loivat moottorin korkealaatuisimpien kuvien saamiseksi. Siksi käytetyt kuvavälin parametrit ja toistopuskurin koko eivät yksinkertaisesti sovellu suoriin videolähetyksiin. Tästä johtuen videomateriaalin lähetyksessä on melko suuri viive, joka voi olla 5-7 sekuntia.
Toisaalta tämä ei ole paljon esimerkiksi niille, jotka katsovat elokuvaa videon isännöintipalvelimelta. Mutta videovalvontajärjestelmissä videomateriaalin lähettämisen viive voi olla erittäin tärkeä.
Jos katsot toimistoa, jossa työntekijät katsovat näytöistään kerran tunnissa, 5 sekunnin viiveellä ei ole mitään merkitystä. Mutta ihmiset alkoivat valittaa, että esimerkiksi jalkapallo-ottelua lähetettäessä he kirjoittivat jo chattiin GOOOOL, mutta tämä ei ole vielä videossa :). Meillä on jo useita käyttäjätapauksia, joissa Ivideonin pitäisi käytännössä korvata Skype.
Onko mahdollista voittaa latenssi HLS:ssä? Vastaus tähän kysymykseen kuulostaa kokeneen rotanhävittäjän puheelta luennolla aloitteleville tuholaistorjuntaasiantuntijoille: "Rottia ei voida hävittää, mutta niiden lukumäärä voidaan vähentää kohtuulliseen minimiin." Sama HLS:n viiveen kanssa, sitä ei voida vähentää nollaan, mutta markkinoilla on ratkaisuja, jotka voivat vähentää viivettä merkittävästi.
Hienot leikkaukset
Toinen moottorin haittapuoli on pienten tiedostojen käyttö tiedonsiirrossa. Vaikuttaa siltä, että mikä tässä on vikana?
Jokainen, joka on yrittänyt kopioida suuren määrän pieniä tiedostoja yhdeltä medialta toiselle, on luultavasti huomannut, että tällaisen joukon kirjoitusnopeus on paljon pienempi kuin yhden suuren samankokoisen tiedoston. Ja kovalevyn käytön intensiteetti kasvaa merkittävästi, mikä yleensä vaikuttaa negatiivisesti koko tietokoneen suorituskykyyn. Siksi videodatan lähettäminen pieninä 10 sekunnin paloina lisää myös moottorin viivettä.
Tehdään lyhyesti yhteenveto kaikista HLS-tekniikan eduista ja haitoista.
HLS:n edut:
- Kyky työskennellä minkä tahansa laitteen kanssa. Voit katsoa videoita millä tahansa nykyaikaisella laitteella, oli se sitten älypuhelin, tabletti, kannettava tietokone tai pöytätietokone. Tärkeintä on, että selain on ajan tasalla ja yhteensopiva HTML5:n ja Media Source Extensions -laajennusten kanssa.
- Erinomainen kuvanlaatu. Käytettävän adaptiivisen tiedonsiirtotoiminnon avulla voit muuttaa lähetettävän videon laatua dynaamisesti Internet-yhteyden kaistanleveyden mukaan samalla, kun algoritmi pyrkii säilyttämään parhaan mahdollisen laadun.
- Käyttäjän laitteiden monimutkaista konfigurointia ei tarvita.
Haitat:
- Rajoitettu tuki moottorin kanssa työskentelemiselle joissakin laitteissa.
- Suuret viiveet kuvansiirrossa.
- Huomattava lisäys yleiskustannuksissa ja optimoinnin monimutkaisuus pienten tiedostojen käytön vuoksi. Säilön luonteesta johtuen emme koskaan voi saada segmentin kokoa pienempää latenssia.
HLS:n haitat ylittivät sen edut meille ja pakottivat meidät etsimään vaihtoehtoisia vaihtoehtoja.
Mikä on WebRTC

()
Google kehitti WebRTC-alustan vuonna 2011 siirtämään suoratoistovideo- ja äänidataa selaimien ja mobiilisovellusten välillä minimaalisella viiveellä. Tätä varten käytetään tavallista UDP-protokollaa ja erityisiä vuonohjausalgoritmeja. Nykyään se on avoimen lähdekoodin projekti, Google ylläpitää sitä aktiivisesti ja sitä kehitetään.
WebRTC on joukko tekniikoita vertaisvideon ja äänen siirtoon. Toisin sanoen esimerkiksi WebRTC:tä käyttävät käyttäjien selaimet voivat siirtää tietoja toisilleen suoraan käyttämättä etäpalvelimia tietojen tallentamiseen ja käsittelyyn. Kaikki tiedot käsitellään myös loppukäyttäjien selaimissa ja mobiilisovelluksissa.
Tämän teknologian kätevyyttä ja laajoja ominaisuuksia ovat arvostaneet kaikkien suosittujen selainten kehittäjät. WebRTC-tuki on tällä hetkellä saatavilla Mozilla Firefoxissa, Operassa, Google Chromessa (ja kaikissa Chromium-pohjaisissa selaimissa) sekä mobiilisovelluksissa. Android ja iOS:ää.
Kaikista kiistattomista eduistaan huolimatta WebRTC:llä on useita merkittäviä haittoja.
Vaikeudet valinta
WebRTC-tekniikka on paljon monimutkaisempi verkkovuorovaikutuksen suhteen, koska se koskee P2P:tä. Sitä on vaikea korjata, testata ja se voi käyttäytyä arvaamattomasti. Samalla meidän on voitettava NAT ja palomuuri, meidän on varmistettava toiminta verkoissa, joissa UDP on estetty.
Googlen WebRTC-toteutus on erittäin vaikea käyttää. On jopa kokonainen yritys, joka tarjoaa SDK-kokoonpanopalveluita. Lisäksi Googlen käyttöönotto oli erittäin vaikeaa integroida järjestelmäämme ilman koko videon uudelleenkoodausta.
Olemme kuitenkin pitkään halunneet antaa käyttäjille mahdollisuuden työskennellä täysimittaisen "live-videon" parissa ja minimoida näytöllä näkyvän kuvan ja itse tapahtumien välisen viiveen. Lisäksi halusimme tehdä PTZ-kameroiden käytöstä mukavampaa, kun viiveet ovat kriittisiä.
Ottaen huomioon, että muut anti-lag-toteutukset ovat edelleen rajallisia ja toimivat huomattavasti huonommin, päätimme käyttää WebRTC:tä.
Mitä me olemme tehneet

WebRTC-alustan oikea käyttöönotto ei ole helppo tehtävä. Kaikki väärät laskelmat tai epätarkkuudet voivat johtaa siihen, että videon lähetyksen viiveet eivät vain vähene muihin alustoihin verrattuna, vaan jopa lisääntyvät.
Jotta WebRTC toimisi oikein, on ensinnäkin suoritettava pinon tekninen päivitys verkkovideon kanssa työskentelemistä varten. Niin me teimme.
Ensin otimme käyttöön WebRTC-signalointiprotokollapalvelimen Websocketin kautta ja otimme käyttöön myös WebRTC-vertaispalvelimen pilvessä webrtc.org SDK:n perusteella. Sen tehtävänä on jakaa videovirtoja WebRTC-asiakkaille H.264 + Opus/G.711 -muodossa ilman videon transkoodausta.
Valitsimme Websocketin signalointiprotokollaksi, koska sillä on jo korkealaatuinen tuki kaikissa suosituissa verkkoselaimissa. Tämän ansiosta voit vähentää merkittävästi kehityskuluja, mutta myös välttää ajan ja resurssien tuhlaamisen toistuviin TCP- ja TLS-kättelyihin verrattuna AJAXiin.
Tosiasia on, että oletusarvoisesti WebRTC ei tarjoa signalointiprotokollaa, joka tarvitaan lähde- ja asiakassovellusten välisen reaaliaikaisen videoviestinnän määrittämiseen, ylläpitämiseen ja lopettamiseen.
Ja voidaksemme toteuttaa itsenäisesti signalointiteknologiaa, meidän piti kehittää oma signalointipalvelin, joka tukee useita verkkoprotokollia (Websocet, WebRTC). Ja mahdollisuus hallita istuntoja ja ilmoituksia turvallisesti reaaliajassa, videonhallinta ja paljon muuta.
Voitimme P2P:n rajoitukset vähentämällä latenssia ei P2P:n kautta, vaan UDP:n ja virtauksen ohjauksen avulla latenssin vähentämiseksi. Tämä on myös sisäänrakennettu WebRTC:hen, koska pääasiallinen käyttötapa on p2p-keskustelut selaimen kautta.
Mobiiliasiakkaassa toteutimme soittimen käyttämällä webrtc.org SDK:ta, koska vain se toteuttaa oikein vuonhallinnan, sillä on kaikki tunnetut Forward Error Correction (FEC) -järjestelmät ja se toteuttaa oikein pakettien uudelleenlähetysmekanismin kaikille selaimille. On myös tärkeää, että Google kehittää aktiivisesti webrtc.org SDK:ta.
Mikä on tulos WebRTC:n käyttöönotosta?
Olemme lisänneet henkilökohtaiselle tilillesi uuden optimoidun WebRTC-soittimen, jotta voit katsella suoraa videokuvaa kameroista. Se tarjoaa nopeat videon latausnopeudet ja poistaa kokonaan latenssin kertymisen katseluajan pidentyessä.
Otettuamme käyttöön WebRTC-tuen Ivideon-pilvipalvelussa, voimme täysin luottavaisin mielin sanoa, että asiakkaamme voivat nyt katsoa täysimittaista live-videota. Nyt videojaksojen lähetyksen viive ei ylitä yhtä sekuntia! Vertailun vuoksi, edellinen HLS-moottori tarjosi videon toimituksen 5-7 sekunnin viiveellä. Ero videon esittelynopeudessa on erittäin merkittävä ja käyttäjä huomaa sen heti, kun hän on aloittanut työskentelyn videopalvelumme kanssa.
Kuten odotimme, uuden soittimen käyttöönotto on parantanut PTZ:n reagointikykyä ja puheviestintää kameran kanssa.

On vain yksi hienovarainen seikka, johon haluamme kiinnittää huomion. Uusi WebRTC-soitin toimii tällä hetkellä testitilassa. Ja siksi emme ota sitä oletusarvoisesti käyttöön kaikille asiakkaillemme. Mutta voit aktivoida sen itse ottamalla käyttöön vastaavan kohteen kameran asetuksista (tämän tekemiseksi sinun on mentävä ).
WebRTC:n toteutuksen ominaisuudet Ivideon-palvelussa

WebRTC on tällä hetkellä vielä kokeellinen tekniikka. Sen tuki ei ole vielä oikein toteutettu kaikissa selaimissa ja käyttäjälaitteissa, eikä myöskään kaikissa kameroissa.
Juuri tästä syystä emme ole vielä tehneet WebRTC-soitinta oletusarvoiseksi kaikille käyttäjille.
Toistaiseksi suosittelemme WebRTC:n käyttöä vain Google Chrome -selaimissa. Myös Firefoxin ja Safarin uusimmat versiot tukevat tätä tekniikkaa, mutta valitettavasti se on edelleen epävakaa.
Emme ole vielä ottaneet käyttöön WebRTC-tukea mobiililaitteiden selaimille. Tällä hetkellä tämä tila ei toimi, jos kirjaudut sisään mobiililaitteella ja aktivoit WebRTC:n. WebRTC on kuitenkin saatavilla mobiilisovelluksissamme и .
Ja päättäen tarinan WebRTC-toteutuksen ominaisuuksista palvelussamme, huomautetaan vielä kaksi hienovaraista seikkaa.
Ensinnäkin tekniikka on keskittynyt suoran videon lähettämiseen reaaliajassa. Siksi, jos kanavallasi ei ole tarpeeksi kaistanleveyttä videon lähettämiseen, huomaat kehysten putoamista (HLS:llä huomaat videon häipymisen ja lisääntyneen latenssin, mutta kehysten putoamista ei tapahdu), mutta video lähetetään silti todellisena aika.
Toiseksi, koska tekniikka on suunniteltu toimimaan erityisesti live-videon kanssa reaaliajassa, emme käytä sitä arkistoidun videodatan kanssa.
Muita muutoksia palveluun
Tällä hetkellä Flash ei ole enää mukana automaattisessa moottorin valintamekanismissa. Voit edelleen käyttää tällaista soitinta, mutta sinun on valittava se manuaalisesti tilin tai kameran asetuksista. Tämä ei ole kunnianosoitus muodille, vaan palvelumme tilastojen mukaan Flashin kanssa työskenteleviä käyttäjiä ei ole enää jäljellä. Ja yrittäessämme määrittää, tukeeko käyttäjän selain sitä, menetämme noin 2 sekuntia arvokasta aikaa.
Tässä on lyhyt katsaus pilvivideovalvontajärjestelmässämme ja henkilökohtaisessa tilissämme odottaviin muutoksiin. Pysy kanssamme ja seuraa uutisia!
Lähde: will.com
