WebRTC a video dohľad: ako sme porazili latenciu videa z kamier

WebRTC a video dohľad: ako sme porazili latenciu videa z kamier

Od prvých dní práce na cloudovom video monitorovacom systéme sme stáli pred problémom, bez riešenia, ktorého by sme sa mohli na Ivideone vzdať – bol to náš Everest, výstup, ktorý nám vyžadoval veľa energie, ale teraz sme sa konečne dočkali. zapichol cepín do hornej časti multiplatformového puzzle.

Systém na prenos zvuku a videa cez internet by nemal závisieť od vybavenia, webových klientov a štandardov, ktoré podporujú, a tiež by mal správne fungovať v prítomnosti prekladačov sieťových adries a brán firewall. Používateľ cloudového video sledovania chce mať prístup k službe, aj keď používa analógové kamery, a uprednostňuje sledovanie živého vysielania videa na najmodernejšom zariadení.

Je veľmi dôležité, že používateľ chce sledovať videá s minimálnym oneskorením. Takmer jediný spôsob, ako zobraziť video s nízkou latenciou v prehliadači, je použiť WebRTC (webová komunikácia v reálnom čase). WebRTC je súbor technológií pre peer-to-peer prenos videa a zvuku v prehliadačoch, pôvodne navrhnutý na prenos a prehrávanie video streamov s nízkou latenciou. Na tento účel sa okrem iného používa protokol UDP.

Predtým, ako vám povieme, čo nový engine dáva používateľovi, pripomenieme vám, prečo a prečo podporujeme technológie HLS a prečo sme sa rozhodli posunúť ďalej.

Motor HLS: výhody a nevýhody

WebRTC a video dohľad: ako sme porazili latenciu videa z kamier
(c)

Технология HLS (HTTP Live Streaming) разработана в Apple, поэтому не удивительно, что впервые её поддержка появилась на устройствах именно этого бренда. На сегодняшний день видеоряд в формате HLS также умеют воспроизводить практически все телевизионные приставки и многие устройства, работающие на ОС Android.

HLS engine využíva na streamovanie video dát známy video kodek H264 v kombinácii s audio streamami AAC alebo MP3. Celý audio a video dátový tok je zabalený do transportného kontajnera MPEG-TS. Pre prenos cez HTTP protokol sú informácie obsiahnuté v streame rozdelené do fragmentov popísaných v m3u8 playlistoch. A až potom sa tieto fragmenty spolu so zoznamami skladieb prenášajú cez HTTP. Chunking automaticky znamená oneskorenie v sekundách. Toto je funkcia kontajnera MPEG-TS.

HLS engine podporuje aj multibitové streamy, Live/VOD.

Hlavné výhody HLS:

  • vstavaná podpora vo všetkých hlavných prehliadačoch;
  • jednoduchosť implementácie (v porovnaní s WebRTC);
  • Je veľmi pohodlné a efektívne organizovať všetky druhy vysielania pre veľké publikum, pretože segmenty je možné nahrať do CDN raz.

Napriek jednoduchosti motora nie je všetko také hladké, ako sa zdá. Hlavným problémom je, že vývojári prehrávačov tretích strán sa vzdialili od odporúčaní Apple, napríklad čo sa týka podporovaných audio formátov. Najmä veľa vývojárov začalo pridávať možnosť pracovať s populárnymi audio streamami: mpeg2 video, mpeg2 audio atď. V dôsledku toho museli vytvoriť rôzne formáty playlistov pre rôzne prehrávače.

Ale jedným z najväčších problémov s motorom HLS je vysoká latencia pri prenose dát.

Pôvod "brzd"

Hlavný dôvod vysokej latencie HLS spočíva v tom, že programátori vytvorili engine na získanie obrázkov najvyššej kvality. Preto parametre použitého intervalu snímok a veľkosť vyrovnávacej pamäte prehrávania jednoducho nie sú vhodné pre živé vysielanie videa. Z tohto dôvodu je pri prenose videozáznamu pomerne veľké oneskorenie, ktoré môže byť 5-7 sekúnd.

Na jednej strane to nie je veľa, napríklad pre tých, ktorí pozerajú film z videohostingového servera. Ale pre video monitorovacie systémy môže byť oneskorenie pri prenose videozáznamu veľmi dôležité.

Ak sledujete kanceláriu, kde zamestnanci zdvihnú zrak od monitorov raz za hodinu, tak oneskorenie 5 sekúnd vôbec nevadí. Ľudia sa ale začali sťažovať, že napríklad pri vysielaní futbalového zápasu už napísali do chatu GOOOOL, ale toto ešte nie je na videu :). Máme už množstvo používateľských prípadov, kedy by mal Ivideon prakticky nahradiť Skype.

Je možné prekonať latenciu v HLS? Odpoveď na túto otázku znie ako prejav skúseného deratizátora na prednáške pre začínajúcich špecialistov na hubenie škodcov: „Potkany sa nedajú vyhubiť, ale ich počet sa dá znížiť na rozumné minimum.“ To isté s oneskorením v HLS, nebude možné ho znížiť na nulu, no na trhu sú riešenia, ktoré dokážu oneskorenie výrazne skrátiť.

Jemné rezy

Ďalšou nevýhodou enginu je použitie malých súborov na prenos dát. Zdá sa, že čo je na tom zlé?

Každý, kto sa pokúsil skopírovať veľké množstvo malých súborov z jedného média na druhé, si pravdepodobne všimol, že rýchlosť zápisu takejto sady je oveľa nižšia ako u jedného veľkého súboru rovnakej veľkosti. A výrazne sa zvyšuje intenzita prístupu k pevnému disku, čo vo všeobecnosti negatívne ovplyvňuje výkon celého počítača. Preto prenos video dát v malých 10 sekundových kúskoch tiež prispieva k zvýšeniu latencie motora.

Poďme si v krátkosti zhrnúť všetky klady a zápory technológie HLS.

Výhody HLS:

  1. Schopnosť pracovať s akýmkoľvek zariadením. Videá môžete sledovať na akomkoľvek modernom zariadení, či už ide o smartfón, tablet, notebook alebo stolný počítač. Hlavná vec je, že webový prehliadač je aktuálny a kompatibilný s HTML5 a Media Source Extensions.
  2. Vynikajúca kvalita obrazu. Použitá funkcia adaptívneho prenosu dát umožňuje dynamicky meniť kvalitu prenášaného videa v závislosti od šírky pásma internetového pripojenia, pričom sa algoritmus snaží zachovať maximálnu kvalitu.
  3. Nie je potrebná zložitá konfigurácia užívateľského zariadenia.

Nevýhody:

  1. Obmedzená podpora práce s motorom na niektorých zariadeniach.
  2. Vysoké oneskorenia pri prenose obrazu.
  3. Výrazné zvýšenie réžie a zložitosti optimalizácie vďaka použitiu malých súborov. Vzhľadom na povahu kontajnera nikdy nebudeme môcť dosiahnuť nižšiu latenciu, ako je veľkosť segmentu.

Nevýhody HLS u nás prevýšili jej výhody a prinútili nás hľadať alternatívne možnosti.

Čo je WebRTC

WebRTC a video dohľad: ako sme porazili latenciu videa z kamier
(c)

Platformu WebRTC vyvinula spoločnosť Google v roku 2011 na prenos streamovaných obrazových a zvukových dát medzi prehliadačmi a mobilnými aplikáciami s minimálnou latenciou. Na tento účel sa používa štandardný protokol UDP a špeciálne algoritmy riadenia toku. Dnes je to open source projekt, je aktívne udržiavaný spoločnosťou Google a je vo vývoji.

WebRTC je súbor technológií pre peer-to-peer prenos videa a zvuku. To znamená, že napríklad používateľské prehliadače používajúce WebRTC si môžu navzájom prenášať údaje priamo, bez použitia vzdialených serverov na ukladanie a spracovanie údajov. Všetky informácie spracovávajú aj prehliadače a mobilné aplikácie koncových používateľov.

Удобство и большие возможности данной технологии по достоинству оценили разработчики всех популярных браузеров. Сегодня поддержка WebRTC реализована в Mozilla Firefox, Opera, Google Chrome (и всеми браузерами на базе Chromium), а также в мобильных приложениях под Android a iOS.

Napriek všetkým svojim nepochybným výhodám má WebRTC niekoľko významných nevýhod.

Ťažkosti výberu

Technológia WebRTC je oveľa zložitejšia z hľadiska sieťových interakcií vďaka tomu, že ide o P2P. Je ťažké ho ladiť, testovať a môže sa správať nepredvídateľne. Zároveň musíme prekonať NAT a firewall, musíme zabezpečiť prevádzku v sieťach, kde je blokované UDP.

Implementácia WebRTC od Google je veľmi náročná na používanie. Dokonca existuje celá firma, ktorá poskytuje služby montáže SDK. Implementáciu spoločnosti Google bolo navyše veľmi ťažké integrovať do nášho systému bez opätovného kódovania celého videa.

Už dlhšie však chceme používateľom poskytnúť možnosť pracovať s plnohodnotným “živým” videom a minimalizovať oneskorenie medzi obrazom na obrazovke a samotnými udalosťami. Navyše sme chceli, aby bolo používanie PTZ kamier, kde sú oneskorenia kritické, pohodlnejšie.

Vzhľadom na to, že iné implementácie proti oneskoreniu majú stále obmedzenú funkčnosť a fungujú výrazne horšie, rozhodli sme sa použiť WebRTC.

Čo sme urobili

WebRTC a video dohľad: ako sme porazili latenciu videa z kamier

Správna implementácia platformy WebRTC nie je ľahká úloha. Akýkoľvek nesprávny výpočet alebo nepresnosť môže viesť k oneskoreniu prenosu videa, ktoré sa v porovnaní s inými platformami nielen nezmenšuje, ale dokonca zväčšuje.

Pre správne fungovanie WebRTC je v prvom rade potrebné vykonať technologický upgrade zásobníka pre prácu s webovým videom. To sme urobili.

Najprv sme implementovali server signalizačného protokolu WebRTC cez Websocket a tiež sme nasadili rovnocenný server WebRTC v cloude na základe súpravy webrtc.org SDK. Jeho úlohou je distribuovať video streamy klientskym WebRTC peerom vo formáte H.264 + Opus/G.711 bez prekódovania videa.

Ako signalizačný protokol sme zvolili Websocket, pretože už má kvalitnú podporu vo všetkých populárnych webových prehliadačoch. Vďaka tomu môžete výrazne znížiť nielen réžiu vývoja, ale aj vyhnúť sa plytvaniu časom a zdrojmi na opakované TCP a TLS handshake v porovnaní s AJAX.

Faktom je, že WebRTC štandardne neposkytuje signalizačný protokol potrebný na správnu konfiguráciu, údržbu a ukončenie videokomunikácie v reálnom čase medzi zdrojovou a klientskou aplikáciou.

A aby sme mohli samostatne implementovať signalizačnú technológiu, potrebovali sme vyvinúť vlastný signalizačný server s podporou viacerých webových protokolov (Websocet, WebRTC). A so schopnosťou bezpečne spravovať relácie a upozornenia v reálnom čase, spravovať videá a oveľa viac.

Prekonali sme obmedzenia P2P znížením latencie nie prostredníctvom P2P, ale prostredníctvom UDP a riadenia toku na zníženie latencie. Toto je tiež zabudované do WebRTC, pretože hlavným prípadom použitia sú konverzácie p2p cez prehliadač.

V mobilnom klientovi sme implementovali prehrávač pomocou webrtc.org SDK, pretože iba on správne implementuje riadenie toku, má všetky známe schémy Forward Error Correction (FEC) a správne implementuje mechanizmus na opätovné odosielanie paketov pre všetky prehliadače. Je tiež dôležité, že webrtc.org SDK aktívne vyvíja spoločnosť Google.

Aký je výsledok implementácie WebRTC?


Na sledovanie živého videa z kamier sme do vášho osobného účtu pridali nový optimalizovaný prehrávač založený na WebRTC. Poskytuje vysoké rýchlosti načítania videa a úplne odstraňuje problém hromadenia latencie s narastajúcim časom sledovania.

Po zavedení podpory WebRTC v cloudovej službe Ivideon môžeme s úplnou istotou povedať, že naši klienti teraz môžu sledovať plnohodnotné živé video. Teraz oneskorenie pri vysielaní videosekvencií nepresiahne jednu sekundu! Pre porovnanie, predchádzajúci motor HLS poskytoval dodávanie videa s oneskorením 5-7 sekúnd. Rozdiel v rýchlosti predvádzania videa je veľmi výrazný a používateľ si to všimne hneď po začatí práce s našou video službou.

Ako sme očakávali, implementácia nového prehrávača zlepšila odozvu PTZ a hlasovej komunikácie s kamerou.

WebRTC a video dohľad: ako sme porazili latenciu videa z kamier

Je len jeden jemný bod, na ktorý chceme upozorniť. Nový prehrávač WebRTC momentálne funguje v testovacom režime. A preto to štandardne nepovoľujeme pre všetkých našich klientov. Môžete ho však aktivovať sami povolením príslušnej položky v nastaveniach fotoaparátu (na to musíte prejsť na kabinety).

Vlastnosti implementácie WebRTC v službe Ivideon

WebRTC a video dohľad: ako sme porazili latenciu videa z kamier

WebRTC je v súčasnosti stále experimentálnou technológiou. Jeho podpora ešte nie je správne implementovaná vo všetkých prehliadačoch a používateľských zariadeniach a tiež nie vo všetkých fotoaparátoch.

To je presne dôvod, prečo sme ešte nenastavili prehrávač WebRTC ako predvolený pre všetkých používateľov.

WebRTC zatiaľ odporúčame používať iba v prehliadačoch Google Chrome. Túto technológiu podporujú aj najnovšie verzie prehliadačov Firefox a Safari, no, žiaľ, stále je nestabilná.

Zatiaľ sme neimplementovali podporu WebRTC pre prehliadače na mobilných zariadeniach. V súčasnosti, ak sa prihlásite z mobilného zariadenia a aktivujete WebRTC, tento režim nebude fungovať. WebRTC je však dostupný v našich mobilných aplikáciách pre Android и iOS.

A na záver príbehu o funkciách implementácie WebRTC v našej službe si všimnime ešte dva jemné body.

Po prvé, technológia je zameraná na vysielanie živého videa v reálnom čase. Preto, ak váš kanál nemá dostatočnú šírku pásma na prenos videa, zaznamenáte pokles snímok (pri HLS si všimnete vyblednutie videa a zvýšenú latenciu, ale nedôjde k poklesu snímok), ale video sa bude vysielať v reálnom čase. čas.

Po druhé, keďže technológia je navrhnutá tak, aby pracovala špeciálne so živým videom v reálnom čase, nepoužívame ju na prácu s archivovanými video dátami.

Ďalšie zmeny v službe

V súčasnosti už Flash nie je zapojený do mechanizmu automatického výberu motora. Takýto prehrávač môžete stále používať, ale na to je potrebné ho vybrať manuálne v nastaveniach účtu alebo fotoaparátu. Toto nie je pocta móde, ide len o to, že podľa štatistík našej služby už s Flashom nezostali prakticky žiadni používatelia. A pri pokuse zistiť, či to prehliadač používateľa podporuje, strácame asi 2 sekundy drahocenného času.

Tu je stručný prehľad zmien, ktoré na vás čakajú v našom cloudovom systéme video sledovania a osobnom účte. Zostaňte s nami a sledujte novinky!

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster