
Od prvních dnů práce na cloudovém video monitorovacím systému jsme se potýkali s problémem, jehož řešení jsme mohli na Ivideonu vzdát – to byl náš Everest, lezení, které nám vzalo spoustu energie, ale teď jsme konečně zapíchl cepín do horní části multiplatformového puzzle.
Systém pro přenos zvuku a videa přes internet by neměl záviset na zařízení, webových klientech a standardech, které podporují, a také by měl správně fungovat v přítomnosti překladačů síťových adres a firewallů. Uživatel cloudového video sledování chce mít přístup ke službě, i když používá analogové kamery, a dává přednost sledování živého video vysílání na nejmodernějším zařízení.
Je velmi podstatné, že uživatel chce sledovat videa s minimálním zpožděním. Téměř jediný způsob, jak zobrazit video s nízkou latencí v prohlížeči, je použít WebRTC (web real-time communications). WebRTC je sada 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í video streamů s nízkou latencí. K tomuto účelu slouží mimo jiné protokol UDP.
Než vám řekneme, co nový engine uživateli dává, připomeneme vám, proč a proč podporujeme technologie HLS a proč jsme se rozhodli jít dál.
HLS motor: klady a zápory

()
Technologie HLS (HTTP Live Streaming) byla vyvinuta společností Apple, takže není divu, že byla poprvé podporována na zařízeních Apple. Dnes je video HLS podporováno také prakticky všemi set-top boxy a mnoha zařízeními s tímto operačním systémem. Android.
Engine HLS využívá známý video kodek H264 v kombinaci s audio streamy AAC nebo MP3 pro streamování video dat. Celý audio a video datový tok je zabalen do transportního kontejneru MPEG-TS. Pro přenos protokolem HTTP jsou informace obsažené ve streamu rozděleny do fragmentů popsaných v playlistech m3u8. A teprve potom jsou tyto fragmenty spolu se seznamy skladeb přenášeny prostřednictvím protokolu HTTP. Chunking automaticky znamená zpoždění v sekundách. Toto je funkce kontejneru MPEG-TS.
HLS engine také podporuje multibitrate streamy, Live/VOD.
Hlavní výhody HLS:
- vestavěná podpora ve všech hlavních prohlížečích;
- snadnost implementace (ve srovnání s WebRTC);
- Je velmi pohodlné a efektivní organizovat všechny druhy vysílání pro velké publikum díky skutečnosti, že segmenty lze nahrát do CDN jednou.
I přes jednoduchost motoru není vše tak hladké, jak se zdá. Hlavním problémem je, že vývojáři přehrávačů třetích stran ustoupili od doporučení Applu, například pokud jde o podporované zvukové formáty. Zejména mnoho vývojářů začalo přidávat možnost pracovat s populárními audio streamy: mpeg2 video, mpeg2 audio atd. V důsledku toho museli vytvořit různé formáty playlistů pro různé přehrávače.
Jedním z největších problémů HLS enginu je ale vysoká latence při přenosu dat.
Původ "brzd"
Hlavní důvod vysoké latence HLS spočívá ve skutečnosti, že programátoři vytvořili engine pro získání obrazů nejvyšší kvality. Proto se parametry použitého intervalu snímků a velikost vyrovnávací paměti pro přehrávání jednoduše nehodí pro živé video vysílání. Z tohoto důvodu dochází k poměrně velkému zpoždění přenosu videozáznamu, které může být 5-7 sekund.
Na jednu stranu to není mnoho, například pro ty, kteří sledují film z videohostingového serveru. Ale pro video monitorovací systémy může být zpoždění při přenosu videozáznamu velmi důležité.
Pokud sledujete kancelář, kde zaměstnanci jednou za hodinu vzhlédnou od svých monitorů, pak zpoždění 5 sekund vůbec nevadí. Lidé si ale začali stěžovat, že například při vysílání fotbalového zápasu už do chatu napsali GOOOOL, ale to na videu ještě není :). Máme již řadu uživatelských případů, kdy by měl Ivideon prakticky nahradit Skype.
Je možné překonat latenci v HLS? Odpověď na tuto otázku zní jako projev zkušeného deratizátora na přednášce pro začínající specialisty na hubení škůdců: „Krysy nelze vyhubit, ale jejich počet lze snížit na rozumné minimum.“ Totéž se zpožděním v HLS, nebude možné ho snížit na nulu, ale na trhu jsou řešení, která dokážou zpoždění výrazně zkrátit.
Jemné řezy
Další nevýhodou enginu je použití malých souborů pro přenos dat. Zdá se, že co je na tom špatného?
Každý, kdo zkoušel kopírovat velké množství malých souborů z jednoho média na druhé, si pravděpodobně všiml, že rychlost zápisu takové sady je mnohem nižší než u jednoho velkého souboru stejné velikosti. A výrazně se zvyšuje intenzita přístupu k pevnému disku, což obecně negativně ovlivňuje výkon celého počítače. Proto přenos video dat v malých 10sekundových blocích také přispívá ke zvýšené latenci motoru.
Pojďme si stručně shrnout všechny klady a zápory technologie HLS.
Výhody HLS:
- Schopnost pracovat s jakýmkoli zařízením. Videa můžete sledovat na jakémkoli moderním zařízení, ať už je to chytrý telefon, tablet, notebook nebo stolní PC. Hlavní je, že webový prohlížeč je aktuální a kompatibilní s HTML5 a Media Source Extensions.
- Vynikající kvalita obrazu. Použitá funkce adaptivního přenosu dat 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ž se algoritmus snaží zachovat maximální kvalitu.
- Není potřeba složitá konfigurace uživatelského zařízení.
Nevýhody:
- Omezená podpora pro práci s enginem na některých zařízeních.
- Velké zpoždění při přenosu obrazu.
- Výrazné zvýšení režie a složitosti optimalizace díky použití malých souborů. Vzhledem k povaze kontejneru nikdy nebudeme schopni získat nižší latenci, než je velikost segmentu.
Nevýhody HLS pro nás převážily jeho výhody a donutily nás hledat alternativní možnosti.
Co je WebRTC

()
Platforma WebRTC byla vyvinuta společností Google v roce 2011 pro streamování obrazových a zvukových 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 řízení toku. Dnes je to open source projekt, je aktivně podporován Googlem a je ve vývoji.
WebRTC je sada technologií pro peer-to-peer přenos videa a zvuku. To znamená, že například uživatelské prohlížeče využívající WebRTC si mohou mezi sebou přenášet data přímo, aniž by k ukládání a zpracování dat využívaly vzdálené servery. Veškeré informace zpracovávají také prohlížeče a mobilní aplikace koncových uživatelů.
Pohodlí a rozsáhlé možnosti této technologie ocenili vývojáři všech populárních prohlížečů. Podpora WebRTC je v současné době k dispozici v prohlížečích Mozilla Firefox, Opera, Google Chrome (a všech prohlížečích založených na Chromiu) a také v mobilních aplikacích. Android a iOS.
Přes všechny své nepochybné výhody má WebRTC několik významných nevýhod.
Potíže při výběru
Technologie WebRTC je z hlediska síťových interakcí mnohem složitější díky tomu, že jde o P2P. Je obtížné jej ladit, testovat a může se chovat nepředvídatelně. Zároveň musíme překonat NAT a firewall, musíme zajistit provoz v sítích, kde je blokováno UDP.
Implementace WebRTC od Googlu je velmi náročná na použití. Existuje dokonce celá firma, která poskytuje služby montáže SDK. Navíc bylo velmi obtížné integrovat implementaci Google do našeho systému bez překódování celého videa.
Už dlouho však chceme uživatelům poskytnout možnost pracovat s plnohodnotným „živým“ videem a minimalizovat prodlevu mezi obrazem na obrazovce a samotnými událostmi. Navíc jsme chtěli, aby bylo používání PTZ kamer, kde jsou zpoždění kritická, pohodlnější.
Vzhledem k tomu, že ostatní implementace anti-lag mají stále omezenou funkčnost a fungují znatelně hůře, rozhodli jsme se použít WebRTC.
Co jsme udělali

Správná implementace platformy WebRTC není snadný úkol. Jakýkoli špatný výpočet nebo nepřesnost může vést k tomu, že zpoždění ve videopřenosu se ve srovnání s jinými platformami nejen nesníží, ale dokonce se zvětší.
Aby WebRTC správně fungovalo, je v první řadě nutné provést technologický upgrade zásobníku pro práci s webovým videem. To jsme udělali.
Nejprve jsme implementovali server signalizačního protokolu WebRTC nad Websocket a také jsme nasadili rovnocenný server WebRTC v cloudu na základě sady webrtc.org SDK. Jeho úkolem je distribuovat video streamy klientům WebRTC peerům ve formátu H.264 + Opus/G.711 bez překódování videa.
Jako signalizační protokol jsme zvolili Websocket, protože již má kvalitní podporu ve všech oblíbených webových prohlížečích. Díky tomu můžete výrazně snížit nejen vývojovou režii, ale také se vyhnout plýtvání časem a prostředky na opakované TCP a TLS handshake ve srovnání s AJAXem.
Faktem je, že ve výchozím nastavení WebRTC neposkytuje signální protokol nezbytný pro správnou konfiguraci, údržbu a ukončení video komunikace v reálném čase mezi zdrojovou a klientskou aplikací.
A abychom mohli samostatně implementovat signalizační technologii, potřebovali jsme vyvinout vlastní signalizační server s podporou několika webových protokolů (Websocet, WebRTC). A se schopností bezpečně spravovat relace a oznámení v reálném čase, správu videa a mnoho dalšího.
Omezení P2P jsme překonali snížením latence nikoli prostřednictvím P2P, ale prostřednictvím UDP a řízení toku ke snížení latence. To je také zabudováno do WebRTC, protože hlavním případem použití jsou konverzace p2p prostřednictvím prohlížeče.
V mobilním klientovi jsme implementovali přehrávač pomocí webrtc.org SDK, protože pouze on správně implementuje řízení toku, má všechna známá schémata Forward Error Correction (FEC) a správně implementuje mechanismus pro opětovné odesílání paketů pro všechny prohlížeče. Je také důležité, že webrtc.org SDK aktivně vyvíjí Google.
Jaký je výsledek implementace WebRTC?
Pro sledování živého videa z kamer jsme do vašeho osobního účtu přidali nový optimalizovaný přehrávač založený na WebRTC. Poskytuje vysoké rychlosti načítání videa a zcela odstraňuje problém s hromaděním latence s prodlužující se dobou sledování.
Po zavedení podpory WebRTC v cloudové službě Ivideon můžeme s naprostou jistotou říci, že naši klienti nyní mohou sledovat plnohodnotné živé video. Nyní zpoždění při vysílání videosekvencí nepřesáhne jednu sekundu! Pro srovnání, předchozí engine HLS zajišťoval dodání videa se zpožděním 5-7 sekund. Rozdíl v rychlosti předvádění videa je velmi výrazný a uživatel si jej všimne ihned po zahájení práce s naší video službou.
Jak jsme očekávali, implementace nového přehrávače zlepšila odezvu PTZ a hlasové komunikace s kamerou.

Existuje pouze jeden jemný bod, na který chceme upozornit. Nový přehrávač WebRTC aktuálně pracuje v testovacím režimu. A proto ji standardně nepovolujeme u všech našich klientů. Můžete ji však aktivovat sami povolením příslušné položky v nastavení fotoaparátu (provedete to na ).
Vlastnosti implementace WebRTC ve službě Ivideon

WebRTC je v současnosti stále experimentální technologií. Jeho podpora zatím není správně implementována ve všech prohlížečích a uživatelských zařízeních a také ne ve všech fotoaparátech.
To je přesně důvod, proč jsme ještě nenastavili přehrávač WebRTC jako výchozí pro všechny uživatele.
Prozatím doporučujeme používat WebRTC pouze v prohlížečích Google Chrome. Nejnovější verze Firefoxu a Safari tuto technologii také podporují, ale bohužel zatím není stabilní.
Dosud jsme neimplementovali podporu WebRTC pro prohlížeče na mobilních zařízeních. V současné době, pokud se přihlásíte z mobilního zařízení a aktivujete WebRTC, tento režim nebude fungovat. WebRTC je však dostupný v našich mobilních aplikacích pro и .
A na závěr příběhu o funkcích implementace WebRTC v naší službě si všimněme ještě dvou jemných bodů.
Za prvé, technologie je zaměřena na vysílání živého videa v reálném čase. Pokud tedy váš kanál nemá dostatečnou šířku pásma pro přenos videa, zaznamenáte pokles snímků (s HLS zaznamenáte vyblednutí videa a zvýšenou latenci, ale nedojde k poklesu snímků), ale video bude stále vysíláno v reálném čas.
Za druhé, protože je technologie navržena pro práci s živým videem v reálném čase, nepoužíváme ji k práci s archivovanými video daty.
Další změny ve službě
V tuto chvíli již není Flash zapojen do mechanismu automatického výběru motoru. Takový přehrávač můžete stále používat, ale k tomu je třeba jej vybrat ručně v nastavení účtu nebo fotoaparátu. Nejedná se o poctu módě, jde pouze o to, že podle statistik naší služby nezůstali prakticky žádní uživatelé pracující s Flashem. A když se snažíme zjistit, zda to prohlížeč uživatele podporuje, ztratíme asi 2 sekundy drahocenného času.
Zde je stručný přehled změn, které na vás čekají v našem cloudovém video monitorovacím systému a osobním účtu. Zůstaňte s námi a sledujte novinky!
Zdroj: www.habr.com
