WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer

WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer

Od prvních dnů práce na systému cloudového video dohledu jsme se setkali s problémem, bez jehož vyřešení by bylo možné na Ivideon zapomenout – byl to náš Everest, jehož zdolání nás stálo spoustu sil, ale nyní jsme konečně zasunuli cepín do vrcholu tohoto multiplatformního rébusu.

Systém přenosu zvuku a videa přes Internet nesmí záviset na hardwaru, webových klientech a podpořených standardech a musí správně fungovat při přítomnosti Network Address Translators a firewallů. Uživatel cloudového video dohledu chce mít přístup k službě, i když používá analogové kamery, a preferuje sledování živého videa na nejmodernějším zařízení.

Je velmi důležité, že uživatel chce sledovat video s minimálním zpožděním. Prakticky jedinou možností, jak zobrazit video s nízkým zpožděním v prohlížeči, je využít WebRTC (web real-time communications). WebRTC představuje soubor technologií pro peer-to-peer přenos videa a zvuku v prohlížečích, původně navržený pro přenos a přehrávání videostreamu s nízkým zpožděním. K tomu se mimo jiné používá protokol UDP.

Než vám povíme, co nová technologie uživateli přináší, připomeneme si, proč a kvůli čemu podporujeme HLS technologie a proč jsme se rozhodli jít dál.

HLS engine: výhody a nevýhody

WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer
(s)

Technologie HLS (HTTP Live Streaming) byla vyvinuta společností Apple, proto není překvapením, že její podpora se poprvé objevila na zařízeních této značky. Dnes prakticky všechny televizní set-top boxy a mnohá zařízení s operačním systémem Android umějí přehrávat videa v HLS formátu.

HLS engine používá pro streamování video dat dobře známý video kodek H264 v kombinaci s AAC nebo MP3 audio streamy. Úplný tok audio a video dat je zabalen do transportního kontejneru MPEG-TS. Pro přenos přes protokol HTTP je obsah v toku rozdělen na segmenty popsané v m3u8 playlistu. Teprve poté jsou tyto segmenty spolu s playlisty přenášeny přes HTTP. Rozdělení na segmenty automaticky znamená zpoždění v sekundách. Tento rys kontejneru MPEG-TS.

HLS engine také podporuje multi-bit rate streamy, Live/VOD.

Hlavní výhody HLS:

  • Vestavěná podpora ve všech hlavních prohlížečích;
  • Jednoduchost implementace (ve srovnání s WebRTC);
  • Je velmi pohodlné a efektivní organizovat různá vysílání pro velké publikum díky tomu, že můžete segmenty jednou nahrát na CDN.

Přestože je engine velmi jednoduchý, není to tak hladké, jak se zdá. Hlavním problémem je, že vývojáři třetích stran odcházeli od doporučení Apple, například pokud jde o podporované audio formáty. Konkrétně mnoho vývojářů začalo přidávat možnost práce s populárními audiostreamy: mpeg2 video, mpeg2 audio a podobně. V důsledku toho bylo nutné vytvořit různé formáty playlistů pro různé přehrávače.

Jedním z největších problémů motoru HLS je vysoká latence přenosu dat.

Původy "zpoždění"

Hlavní příčina vysoké latence u HLS spočívá v tom, že programátoři vytvářeli engine pro získání maximálně kvalitního obrazu. Proto parametry použitého intervalu snímků a objem vyrovnávací paměti pro přehrávání jednoduše nevyhovují pro přímé video přenosy. Z toho důvodu vzniká poměrně vysoká latence přenosu videa, která může činit 5-7 sekund.

Na jedné straně je to málo, například pro ty, kdo sledují film ze serveru video hostingu. Ale pro systémy video dohledu může mít latence přenosu videa velmi velký význam.

Pokud sledujete kancelář, kde se zaměstnanci jednou za hodinu odtrhávají od monitorů, pak pětisekundová latence není vůbec důležitá. Ale lidé si začali stěžovat, že například během vysílání fotbalového zápasu už v chatu napsali GÓÓÓL, ale na videu to ještě není :). Už máme řadu uživatelských případů, kde Ivideon musí prakticky nahradit Skype.

Lze překonat latenci v HLS? Odpověď na tuto otázku zní jako vystoupení zkušeného vymítače krys na přednášce před začínajícími deratizátory: "Krysy nelze vyhladit, ale jejich populace může být snížena na rozumné minimum." Tak i s latencí u HLS, odstranit ji na nulu není možné, ale na trhu existují řešení, která umožňují latenci výrazně snížit.

Malé segmenty

Dalším nedostatkem motoru je použití malých souborů pro přenos dat. Zdálo by se, co na tom může být špatného?

Každý, kdo se pokusil zkopírovat velké množství malých souborů z jednoho média na druhé, si jistě všiml, že rychlost zápisu takového souboru je mnohem nižší než to, co by bylo při kopírování jednoho velkého souboru stejného objemu. Intenzita přístupů na pevný disk se také výrazně zvyšuje, což celkově negativně ovlivňuje výkon celého počítače. Přenos video dat ve formě malých 10sekundových fragmentů rovněž přispívá k vyšší latenci motoru.

Stručně shrneme všechny výhody a nevýhody technologie HLS.

Výhody HLS:

  1. Možnost práce s jakýmikoli zařízeními. Můžete sledovat video na jakémkoli moderním zařízení, ať už jde o smartphone, tablet, notebook nebo desktopový počítač. Hlavní je, aby byl webový prohlížeč moderní verze a kompatibilní s HTML5 a Media Source Extensions.
  2. Vynikající kvalita obrazu. Používaná funkce adaptivního streamování umožňuje dynamicky měnit kvalitu přenášeného videa v závislosti na šířce pásma internetového připojení, přičemž algoritmus se snaží udržet kvalitu co nejvyšší.
  3. Není nutná složitá konfigurace uživatelského zařízení.

Nevýhody:

  1. Omezená podpora práce s motoru na některých zařízeních.
  2. Vysoké zpoždění při přenosu obrazu.
  3. Silné zvýšení režijních nákladů a složitost optimalizace kvůli použití souborů malého formátu. Kvůli charakteristikám kontejneru nikdy nedosáhneme zpoždění menšího než velikost segmentu.

Nevýhody HLS převážily jeho výhody a donutily nás hledat alternativní možnosti.

Co je to WebRTC

WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer
(s)

Platforma WebRTC byla vyvinuta Googlem v roce 2011 pro přenos streamovaného video- a audio dat mezi prohlížeči a mobilními aplikacemi s minimální latencí. K tomu se používá standardní protokol UDP a speciální algoritmy pro řízení toku. Dnes je to projekt s otevřeným zdrojovým kódem, který je aktivně podporován Googlem a vyvíjen.

WebRTC je soubor technologií pro peer-to-peer přenos video a zvuku. To znamená, že například prohlížeče uživatelů mohou pomocí WebRTC přenášet data přímo mezi sebou, aniž by používaly vzdálené servery pro ukládání a zpracování dat. Všechny informace jsou také zpracovávány prohlížeči a mobilními aplikacemi koncových uživatelů.

Pohodlí a široké možnosti této technologie byly oceněny vývojáři všech populárních prohlížečů. Dnes je podpora WebRTC realizována v Mozilla Firefox, Opera, Google Chrome (a ve všech prohlížečích založených na Chromiu), stejně jako v mobilních aplikacích pro Android a iOS.

Navzdory svým nesporným výhodám má WebRTC několik významných nevýhod.

Obtížnosti výběru

Technologie WebRTC je mnohem složitější na síťové interakce, protože se jedná o P2P. Je obtížné ji ladit, testovat, může se chovat nepředvídatelně. Musíme přitom překonávat NAT a firewall a zajistit fungování v sítích, kde je blokován UDP.

Implementaci WebRTC od Googlu je velmi obtížné použít. Existuje dokonce celá společnost, která poskytuje služby v oblasti sestavení SDK. Navíc bylo velmi obtížné integrovat реализацию od Googlu do našeho systému tak, aby nedocházelo k pře kodování veškerého videa.

Nicméně jsme už dlouho chtěli poskytnout uživatelům možnost pracovat s plnohodnotným "živým" videem a minimalizovat prodlevu obrazu na obrazovce od skutečných událostí. K tomu jsme měli také přání učinit používání PTZ kamer pohodlnějším, kde jsou zpoždění kriticky důležitá.

Vzhledem k tomu, že jiné implementace boje proti zpožděním zatím mají omezenou funkčnost a fungují znatelně hůře, rozhodli jsme se použít WebRTC.

Co jsme udělali

WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer

Správně implementovat platformu WebRTC je nelehký úkol. Jakýkoli výpočet nebo nepřesnost mohou vést k tomu, že zpoždění v přenosu videa se nejenže nesníží ve srovnání s jinými platformami, ale mohou dokonce vzrůst.

Pro správnou funkci WebRTC je v první řadě nutné provést technologickou modernizaci stacku pro práci s webovým videem. Což jsme také udělali.

Nejprve jsme implementovali signální protokol WebRTC přes Websocket a také nasadili WebRTC peer-server v cloudu na základě SDK webrtc.org. Jeho úkolem je distribuovat video streamy klientským WebRTC peerům ve formátu H.264 + Opus/G.711 bez překódování videa.

Vybrali jsme Websocket jako signální protokol, protože již má kvalitní podporu ve všech populárních webových prohlížečích. Díky tomu lze výrazně snížit nejen vývojové náklady, ale také ušetřit čas a zdroje na opakované TCP a TLS handshake oproti AJAXu.

Zajímavé je, že WebRTC standardně neposkytuje signální protokol potřebný pro správné nastavení, podporu a ukončení videokomunikace v reálném čase mezi zdrojovými a klientskými aplikacemi.

Abychom mohli implementovat signalizační technologii, bylo třeba vyvinout vlastní signální server s podporou několika webových protokolů (Websocet, WebRTC). Také s možností bezpečného řízení relací a notifikací v reálném čase, správy videa a mnoha dalších parametrů.

Omezení P2P jsme překonali snížením latence nikoli pomocí P2P, ale pomocí UDP a řízení toku zaměřeného na snížení latence. To je také zakotveno v WebRTC, protože hlavním případem použití jsou p2p hovory přes prohlížeč.

V mobilním klientovi jsme implementovali přehrávač s použitím SDK webrtc.org, protože pouze v tomto je správně implementováno řízení toku, existují všechny známé schémata Forward Error Correction (FEC) a správně je implementován mechanismus opětovného odesílání paketů pro všechny prohlížeče. Neméně důležité je, že SDK webrtc.org aktivně vyvíjí Google.

Jaký je výsledek implementace WebRTC?


Pro sledování živého videa z kamer jsme do uživatelského rozhraní přidali nový optimalizovaný přehrávač založený na WebRTC. Zajišťuje vysokou rychlost načítání videostreamu a zcela eliminuje problém s akumulací latence s rostoucím časem sledování.

Po zavedení podpory WebRTC v cloudové službě Ivideon můžeme s plnou důvěrou říci, že nyní mají naši klienti k dispozici plnohodnotné živé video. Momentálně zpoždění při přenosu videa nepřesahuje jednu sekundu! Pro srovnání, předchozí HLS engine zajišťoval dodávku videa se zpožděním 5-7 sekund. Rozdíl ve rychlosti zobrazení videa je velmi významný a uživatel si jej všimne ihned po zahájení práce s naším videoservisem.

Jak jsme předpokládali, implementace nového přehrávače umožnila zvýšit responzivitu PTZ a hlasového spojení s kamerou.

WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer

Existuje pouze jeden drobný detail, na který se chceme zaměřit. Nový WebRTC přehrávač zatím funguje v testovacím režimu. A právě proto ho standardně nepřipojujeme všem našim klientům. Můžete si ho však aktivovat sami aktivací odpovídajícího bodu v nastavení kamery (k tomu je nutné přejít do uživatelského rozhraní).

Vlastnosti implementace WebRTC ve službě Ivideon

WebRTC a video surveillance: jak jsme překonali zpoždění videa z kamer

WebRTC je v současné době stále experimentální technologie. Její podpora ještě není správně implementována ve všech prohlížečích a uživatelských zařízeních, a také ne ve všech kamerách.

Tím přesně vysvětlujeme, proč jsme zatím neučinili WebRTC přehrávač hlavním standardním řešením pro všechny uživatele.

Zatím doporučujeme používat WebRTC pouze v prohlížečích Google Chrome. Poslední verze Firefoxu a Safari také tuto technologii podporují, ale bohužel zatím nestabilně.

Zatím jsme nezavedli podporu WebRTC pro prohlížeče na mobilních zařízeních. Pokud nyní vstoupíte z mobilního zařízení a aktivujete WebRTC, tento režim nebude fungovat. Nicméně, WebRTC je součástí našich mobilních aplikací pro Android a iOS.

A završujícím bodě našeho vyprávění o vlastnostech implementace WebRTC v naší službě si ještě zmíníme dva drobné detaily.

Za prvé, technologie je zaměřena na přenos právě živého videa v reálném čase. Pokud tedy nebude šířka pásma vašeho kanálu dostatečná pro přenos videa, všimnete si ztráty snímků (s HLS si všimnete zamrznutí videa a zvýšení zpoždění, avšak snímky se neztratí), video však bude stále přenášeno v reálném čase.

Za druhé, vzhledem k tomu, že technologie je určena pro práci s živým videem v reálném čase, nepoužíváme ji pro práci s archivními videodaty.

Další změny v službě

V současnosti Flash již není součástí mechanismu automatického výběru enginu. Je možné jej stále použít, ale je nutné jej vybrat ručně v nastavení účtu nebo kamery. Není to v módě, ale podle statistik našeho servisu téměř nezůstali uživatelé, kteří by pracovali s Flashem. A pokus o určení, zda jeho prohlížeč podporuje, nám zabere asi 2 sekundy cenného času.

Zde je krátce o těch změnách, které vás čekají v našem cloudovém systému videodohledu a osobním účtu. Zůstaňte s námi a sledujte novinky!

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster