V tomto článku vám odhalíme některé vlastnosti používání WebRTC a zvážíme výhody a nevýhody této technologie.
WebRTC (Web Real Time Communications) je standard, který popisuje přenos streamovaných zvukových dat, videodat a obsahu mezi prohlížeči (bez instalace zásuvných modulů nebo jiných rozšíření) nebo jinými aplikacemi, které jej podporují, v reálném čase. Tato technologie umožňuje proměnit prohlížeč ve videokonferenční terminál. Chcete-li zahájit komunikaci, stačí otevřít webovou stránku konference.
Uvažujte o fungování technologie na příkladu hovoru mezi dvěma účastníky prostřednictvím prohlížeče:
Kodeky WebRTC lze rozdělit na povinné (prohlížeče, které tuto technologii implementují, je musí podporovat) a volitelné (nejsou součástí standardu, ale některé prohlížeče je přidávají).
Ke kompresi zvukového provozu ve WebRTC se používají povinné kodeky (Opus a G.711) a doplňkové kodeky (G.722, iLBC, iSAC).
Opus
G.711
G.722
iLBC
iSAC
Problematika výběru videokodeku pro WebRTC zabrala vývojářům několik let, výsledkem bylo zařazení kodeků VP8 a H.264 do standardu. Existují také implementace volitelných videokodeků (H.265, VP9, AV1).
VP8
VP9
H.265
AV1
WebRTC neposkytuje prohlížečům způsob, jak se navzájem vyhledat. Můžeme si vygenerovat všechny potřebné metainformace o svých blízkých, ale jak se jeden prohlížeč dozví o existenci druhého? Jak je propojit?
Signalizační server WebRTC je server, který spravuje spojení mezi vrstevníky. Slouží právě k signalizaci. Pomáhá s tím, aby jeden peer našel v síti druhého, vyjednává samotné spojení, v případě potřeby resetuje spojení a ukončuje ho.
WebRTC nespecifikuje signalizační protokol, je třeba jej vyvinout sám nebo použít hotová řešení. Rovněž není specifikován transport pro signalizační protokol. Můžete použít HTTP, WebSocket nebo datový kanál. Běžně se používá WebSocket v případě, že je založen na trvalém spojení a může přenášet data téměř v reálném čase.
Názvy a charakteristiky kamer nemůžeme získat, dokud není navázáno spojení. Pokud je v klientském systému nainstalována více než jedna kamera. Například mobilní zařízení. Můžeme uživateli nabídnout pouze volbu Kamera 1 nebo Kamera 2, ale nepojmenováváme tyto kamery (například "Logitech", "Přední kamera", "FullHD kamera").
Pokud klient během relace připojí nové zařízení, webová aplikace o tom nebude informována, dokud uživatel neobnoví stránku. To znamená, že pokud jste již otevřeli stránku konference a poté připojili novou kameru USB, aplikace se o tom nedozví.
Z bezpečnostních důvodů prohlížeč neposkytuje přímý přístup k ovladačům kamery. Proto nemůžeme na kameře trvat, zvolit rozlišení, snímkovou frekvenci apod.
Také nemůžeme provádět následné zpracování videa, nastavovat jas, zrcadlit video a další věci, které jsou obvykle součástí nastavení ovladače kamery.
Neexistuje také žádné jednotné standardní řešení pro sdílení pracovní plochy. Možná jste se v aplikacích pro videokonference setkali s tím, že po spuštění sdílení plochy se často vytvoří další účastník konference, který streamuje vybranou plochu nebo okno aplikace. Problémy, se kterými se potýkáme při práci s kamerami (nemožnost zadat název kamery a nemožnost získat charakteristiku zařízení), platí i pro práci s monitory při vysílání plochy.
Rozhraní API pro generování protokolu SDP je asynchronní, takže mohou nastat situace, kdy parametry mediálního toku popsané v příchozím paketu SDP neodpovídají tomu, co klient skutečně odesílá.
Existují dva formáty SDP: Plán B používaný prohlížeči založenými na Chromiu a Unified Plan používaný prohlížečem Firefox.
Plán B má všechny mediální toky ve stejném formátu. Pokud nepoužijeme externí mediální server, existuje možnost, že někteří účastníci konference nebudou rozumět formátu našeho mediálního toku a nebudou jej moci zobrazit.
Jednotný plán umožňuje vybrat kodek pro každý mediální proud.
Například kódovat vysílání z pracovní plochy jedním kodekem a vysílání z kamery jiným kodekem. Můžete naučit signálový server překládat jeden SDP na jiný, ale jeho zatížení zvyšuje zátěž serveru.
Translated with DeepL.com (free version)
Jak žít, když je NAT, když počítače vystupují pod jednou IP adresou, ale uvnitř o sobě vědí jiné? Na pomoc přichází rámec ICE - Internet Connectivity Establishment. Popisuje, jak obejít NAT a jak navázat spojení, pokud máme NAT.
Tento rámec využívá server STUN. Jedná se o takový speciální server, s odkazem na který můžete zjistit svou vnější IP adresu. V procesu navazování spojení P2P tedy musí každý z klientů vznést požadavek na tento server STUN, aby zjistil svou IP adresu, vygeneroval další informace, IceCandidate, a vyměnil si tento IceCandidate pomocí signalizačního mechanismu. Poté se klienti dozvědí o sobě navzájem správné IP adresy a budou moci navázat spojení P2P. Existují však i složitější případy. Například když je počítač skryt za dvojitým NAT. V takovém případě rámec ICE nařizuje použití serveru TURN.
Jedná se o takový speciální server, který mění spojení klient-klient, P2P, na spojení klient-server-klient, tj. funguje jako relay. Dobrou zprávou pro vývojáře je, že bez ohledu na to, podle kterého ze tří scénářů bylo spojení navázáno, zda jsme v místní síti, nebo zda potřebujeme kontaktovat server STUN nebo TURN, bude pro nás technologie API totožná. Jednoduše na začátku zadáme konfiguraci serverů ICE a TURN, uvedeme, jak k nim máme přistupovat, a poté už za nás technologie udělá vše pod kapotou.
Zde se setkáváme s dalšími obtížemi. První z nich je nutnost mít servery STUN a TURN, respektive náklady na jejich podporu a údržbu. Server TURN, přestože se jedná o jednoduchý proxy server a nezpracovává video, musí mít vysokorychlostní připojení k internetu, aby mohl distribuovat mediální proud v reálném čase všem účastníkům konference.
K dnešnímu dni je WebRTC druhým nejoblíbenějším protokolem pro videokomunikaci po proprietárním protokolu Zoom a předstihuje všechny ostatní standardy (H.323 a SIP) a proprietární protokoly (Microsoft Teams a Cisco Webex).
Technologie WebRTC má silný vliv na rozvoj trhu videokonferencí. Po vydání prvních prohlížečů s podporou WebRTC v roce 2013 se potenciální počet videokonferenčních terminálů na celém světě okamžitě zvýšil o 1 miliardu zařízení. Ve skutečnosti se každý prohlížeč stal videokonferenčním terminálem se základními možnostmi pro účast na videokonferenci. Použití ve specializovaných řešeních
Použití různých knihoven JavaScriptu a rozhraní API cloudových služeb s podporou WebRTC umožňuje snadno přidat podporu videa do libovolných webových projektů. V minulosti přenos dat v reálném čase vyžadoval, aby se vývojáři naučili, jak protokoly fungují, a využívali práce jiných společností, což většinou vyžadovalo další licence, které zvyšovaly náklady. Již nyní se WebRTC aktivně využívá pro organizování videokontaktických center, pořádání webinářů apod.
WebRTC a HTML5 znamenaly smrtelnou ránu pro technologii Flash, která už tehdy prožívala svá zdaleka ne nejlepší léta. Od roku 2017 přestaly přední prohlížeče oficiálně podporovat Flash a tato technologie definitivně zmizela z trhu.
Google Meet je služba pro okamžité zasílání zpráv a také pro videohovory a audiohovory, kterou společnost Google uvedla na trh v roce 2017. Prohlížeče založené na platformě Chromium (Google Chrome atd.) využívají mnoho skrytých funkcí WebRTC, které nejsou zdokumentovány a pravidelně se objevují jako první v jeho řešení Meet (stejně jako v předchůdci Hangouts). Tak tomu bylo u snímání obrazovky, rozostření pozadí, podpory hardwarového kódování na některých platformách.
Jitsi Meet je open source aplikace vydaná společností 8x8. Technologie Jitsi je založena na architektuře Simulcast, což znamená nestabilní provoz na slabých komunikačních kanálech a vysoké nároky na rychlost připojení na straně serveru. Umožňuje vést webové konference pouze v prohlížeči a nemá plnohodnotné klientské aplikace pro spolupráci, podporovány jsou konference s maximálně 75 účastníky (až 35 s vysokou kvalitou hovoru). Pro plnohodnotné využití Jitsi ve firemním prostředí je třeba samostatně vyvinout a nainstalovat další software.
BigBlueButton je bezplatný software pro videokonference. Vývojáři kladou zvláštní důraz na vzdělávání na dálku (k dispozici jsou funkce jako interaktivní tabule, zobrazování obsahu, podpora průzkumů atd.). Podporuje webové konference až pro 100 účastníků.
Navzdory všeobecnému přesvědčení nepoužívá Zoom k přenosu a dekódování mediálních dat technologii WebRTC. Bylo tak učiněno z důvodu úspory serverových zdrojů. Na straně prohlížeče jsou zapojeny jiné webové technologie - nízkoúrovňové WebAssembly a WebSocket. Při použití těchto nestandardních přístupů k přenosu videostreamu mohou mít někteří účastníci problémy s kvalitou obrazu.
Blog posts you may be interested in
New blog posts you may be interested in
Pomáháme korporacím, středním podnikům a startupům s digitálními produkty.