V tomto článku Alexey Andrushchenko, zkušený vývojář Full-Stack, odhalí některé funkce používání WebRTC a zváží výhody a nevýhody této technologie.
WebRTC (webová komunikace v reálném čase) je standard, který popisuje přenos streamovaného zvuku, videa a obsahu mezi prohlížeči (bez instalace pluginů nebo jiných rozšíření) nebo jinými aplikacemi, které jej podporují, v reálném čase. Tato technologie umožňuje přeměnu prohlížeče na videokonferenční terminál. Chcete-li zahájit komunikaci, jednoduše otevřete webovou stránku konference.
Zvažte provoz technologie pomocí příkladu hovoru mezi dvěma účastníky prostřednictvím prohlížeče:
WebRTC kodeky lze rozdělit na povinné (prohlížeče, které implementují tuto technologii, je musí podporovat) a volitelné (nejsou zahrnuty ve standardu, ale přidány některými prohlížeči).
Pro kompresi zvukového provozu ve WebRTC se používají povinné kodeky (Opus a G.711) a další (G.722, iLBC, iSac).
Opus
Opus je zvukový kodek s nízkou latencí kódování (od 2,5 ms do 60 ms), podporou variabilního datového toku a vysokou kompresí, což je ideální pro streamování zvuku přes sítě s proměnnou šířkou pásma. Je to hlavní zvukový kodek pro WebRTC. Opus je hybridní řešení, které kombinuje nejlepší vlastnosti kodeků SILK (Voice Compression, Human Speech Distortion Elimination) a CELT (Audio Data Encoding). Kodek je volně dostupný, vývojáři, kteří jej používají, nemusí platit licenční poplatky držitelům autorských práv. Ve srovnání s jinými zvukovými kodeky Opus určitě vyhrává v mnoha ohledech. V řadě parametrů překonává poměrně populární kodeky s nízkým datovým tokem, jako jsou MP3, Vorbis, AAC LC. Opus obnovuje „obraz“ zvuku blíže originálu než AMR-WB a Speex.
G.711
G.711 je zastaralý hlasový kodek s vysokou přenosovou rychlostí (64 kbps), který se nejčastěji používá v tradičních telefonních systémech. Hlavní výhodou je minimální výpočetní zatížení díky použití lehkých kompresních algoritmů. Kodek má nízkou úroveň komprese hlasových signálů a nezavádí další zvukové zpoždění během komunikace mezi uživateli.
G.711 je podporován velkým počtem zařízení. Systémy, které používají tento kodek, se používají snadněji než systémy založené na jiných zvukových kodecích (G.723, G.726, G.728 atd.). Pokud jde o kvalitu, G.711 získal skóre 4,2 v testování MOS (skóre 4-5 je nejvyšší a znamená dobrou kvalitu, podobnou kvalitě hlasového provozu v ISDN a ještě vyšší).
G.722
G.722 je standard ITU-T přijatý v roce 1988 a je v současné době zdarma. Může pracovat při 48,56 a 64 kbps a poskytuje kvalitu zvuku na úrovni G.711. A podobně je G.711 zastaralý. Podporováno v prohlížečích Chrome, Safari a Firefox.
iLBC
iLBC (internet Low Bitrate Codec) je open source úzkopásmový kodek řeči. K dispozici v prohlížečích Chrome a Safari. Vzhledem k vysoké kompresi proudu se při použití tohoto kodeku zvyšuje zatížení procesoru.
iSac
iSac (internet Speech Audio Codec) je širokopásmový zvukový kodek řeči, dříve proprietární, který je v současné době součástí projektu WebRTC, ale není nutné jej používat. Podporováno v prohlížečích Chrome a Safari. Implementace pro WebRTC používá adaptivní datový tok od 10 do 52 kbps se vzorkovací frekvencí 32 kHz.
Problémy s výběrem video kodeku pro WebRTC trvaly vývojářům několik let, v důsledku toho byly VP8 a H.264 zahrnuty do standardu. K dispozici jsou také implementace volitelných video kodeků (H.265, VP9, AV1).
VP8
VP8 je bezplatný video kodek s otevřenou licencí, který se vyznačuje vysokou rychlostí dekódování video streamu a zvýšenou odolností proti ztrátě snímků. Kodek je univerzální, je snadné jej implementovat do hardwarových platforem, takže vývojáři videokonferenčních systémů jej často používají ve svých produktech. Kompatibilní s prohlížeči Chrome, Edge, Firefox a Safari (12.1+).
Placený video kodek H.264 se stal známým mnohem dříve než jeho protějšek. Jedná se o kodek s vysokým stupněm komprese video streamu při zachování vysoké kvality videa. Rozšířené použití tohoto kodeku mezi hardwarovými videokonferenčními systémy naznačuje jeho použití ve standardu WebRTC. Kompatibilní s prohlížeči Chrome (52+), Edge, Firefox (zastaralý pro Android 68+) a Safari.
VP9
VP9 je otevřený a bezplatný standard komprese videa vyvinutý v roce 2012 společností Google. Jedná se o vývoj myšlenek ztělesněných ve VP8 a byl následně rozšířen v rámci AV1. Kompatibilní s prohlížeči Chrome (48+) a Firefox.
H.265
H.265 je placený video kodek, který je nástupcem H.264 a poskytuje stejnou vizuální kvalitu při polovičním datovém toku. Toho je dosaženo efektivnějšími kompresními algoritmy. Tento kodek v současné době soutěží s bezplatným AV1.
AV1
AV1 je kodek pro kompresi videa s otevřeným zdrojovým kódem navržený speciálně pro doručování videa přes internet. Podporováno v prohlížečích Chrome (70+) a Firefox (67+).
WebRTC neposkytuje prohlížečům způsob, jak se navzájem najít. Můžeme vygenerovat všechny potřebné meta-informace o našich blízkých, ale jak jeden prohlížeč ví o existenci jiného? Jak je propojit?
Signalizační server WebRTC je server, který spravuje spojení mezi vrstevníky. Používá se pouze pro signalizaci. Pomáhá umožnit jednomu vrstevníkovi najít jiného v síti, vyjednat samotné připojení, resetovat připojení v případě potřeby a zavřít jej.
WebRTC nespecifikuje signalizační protokol, musíte jej vyvinout sami nebo použít hotová řešení. Také transport pro signalizační protokol není specifikován. Můžete použít HTTP, WebSocket nebo datachanal. Běžně se používá WebSocket v případě, že je založen na trvalém připojení a dokáže přenášet data v blízkosti reálného času.
Nemůžeme získat jména a vlastnosti kamer, dokud nebude 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 nabídnout uživateli pouze výběr Camera 1 nebo Camera 2, ale tyto fotoaparáty nenazýváme (například „Logitech“, „Přední kamera“, „FullHD Camera“)
Pokud klient během relace připojí nové zařízení, webová aplikace o tom nebude informována, dokud uživatel stránku neobnoví. To znamená, že pokud jste již otevřeli konferenční stránku a poté připojili novou kameru USB, aplikace o tom nebude vědět.
Z bezpečnostních důvodů prohlížeč neposkytuje přímý přístup k ovladačům fotoaparátu.
Proto nemůžeme trvat na fotoaparátu, zvolit rozlišení, snímkovou frekvenci atd.
Nemůžeme také provádět následné zpracování videa, upravovat jas, zrcadlit video a další věci, které jsou obvykle zahrnuty v nastavení ovladače fotoaparátu.
Neexistuje ani jediné standardní řešení pro sdílení stolních počítačů. V aplikacích pro videokonference jste možná viděli, že když začnete sdílet plochu, často se vytvoří další účastník konference a streamuje vybrané pracovní plochy nebo okno aplikace. Problémy, kterým čelíme při práci s fotoaparáty (neschopnost určit název kamery a neschopnost získat vlastnosti zařízení), platí také pro práci s monitory při vysílání plochy.
API pro generování SDP je asynchronní, takže mohou nastat situace, kdy parametry mediálního proudu popsané v příchozím paketu SDP neodpovídají tomu, co klient skutečně odešle.
Existují dva formáty SDP: Plan B používaný prohlížeči založenými na Chromiu a Unified Plan používaný Firefoxem.
Plán B má všechny mediální toky ve stejném formátu. Pokud nepoužíváme externí mediální server, pak existuje možnost, že někteří účastníci konference nerozumí formátu našeho mediálního proudu a nebudou jej moci zobrazit.
Jednotný plán umožňuje vybrat kodek pro každý tok médií.
Například zakódujte vysílání na ploše jedním kodekem a vysílání kamery jiným.
Signálový server můžete naučit překládat jeden SDP do druhého, ale zvyšuje načítání serveru.
Jak žít, pokud existuje NAT, pokud počítače vyčnívají pod jednou IP adresou, ale uvnitř o sobě vědí ostatní? Rámec ICE přichází na záchranu - Zřízení připojení k internetu. Popisuje, jak obejít NAT a jak navázat spojení, pokud máme NAT.
Tento framework používá server STUN. Jedná se o takový speciální server, na kterém můžete zjistit svou externí IP adresu. V procesu navázání P2P připojení tedy musí každý z klientů požádat tento server STUN, aby zjistil jeho IP adresu, vygeneroval další informace, IceCandidate a vyměnil si tento IceCandDate pomocí signalizačního mechanismu. Poté budou klienti o sobě vědět se správnými IP adresami a budou moci navázat připojení P2P. Existují však složitější případy. Například, když je počítač skrytý za dvojitým NAT. V tomto případě, rámec ICE nařizuje použití serveru TURN.
Jedná se o takový speciální server, který promění připojení klient-klient, P2P, na připojení klient-server-klient, to znamená, že funguje jako relé. Dobrou zprávou pro vývojáře je, že bez ohledu na to, ve kterém ze tří scénářů bylo spojení navázáno, ať už jsme v místní síti, nebo zda potřebujeme kontaktovat server STUN nebo TURN, technologie API pro nás bude identická. Jednoduše specifikujeme konfiguraci serverů ICE a TURN na začátku, uvedeme, jak k nim přistupovat, a poté technologie udělá vše za nás pod kapotou.
Zde čelíme dalším obtížím. Prvním je potřeba mít servery STUN a TURN, resp. náklady na jejich podporu a údržbu. Server TURN, i když je to jednoduchý proxy server a nezpracovává video, musí mít vysokorychlostní připojení k internetu, aby mohl distribuovat mediální tok v reálném čase všem účastníkům konference.
K dnešnímu dni je WebRTC druhým nejoblíbenějším video komunikačním protokolem po proprietárním protokolu Zoom a je před všemi ostatními standardy (H.323 a SIP) a proprietárními (Microsoft Teams a Cisco Webex) protokoly.
Technologie WebRTC měla silný dopad na vývoj 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ů po 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 schopnostmi pro účast na videokonferencích.
Použití ve specializovaných řešeních
Použití různých knihovek JavaScriptu a API cloudových služeb s podporou WebRTC usnadňuje přidání podpory videa do libovolných webových projektů. V minulosti vyžadoval přenos dat v reálném čase vývojáře, aby se naučili, jak protokoly fungují, a využívat práci jiných společností, což nejčastěji vyžadovalo další licencování, což zvýšilo náklady. WebRTC se již aktivně používá k organizaci video kontaktních center, pořádání webinářů atd.
WebRTC a HTML5 byly smrtelnou ranou pro technologii Flash, která již prošla svými zdaleka nejlepšími roky. Od roku 2017 přední prohlížeče oficiálně přestaly podporovat Flash a technologie konečně zmizela z trhu.
Google Meet je služba rychlých zpráv, stejně jako videohovory a zvukové hovory, vydané v roce 2017 společností Google. Prohlížeče založené na Chromu (Google Chrome atd.) Používají mnoho skrytých funkcí WebRTC, které nejsou zdokumentovány a pravidelně se objevují jako první v jeho řešeních Meet (jako v jeho předchůdci Hangouts). Tak to bylo se snímáním obrazovky, rozostřením pozadí, podporou hardwarového kódování na některých platformách.
Jitsi Meet je aplikace s otevřeným zdrojovým kódem 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é požadavky na rychlost připojení na straně serveru. Umožňuje provádět webové konference pouze v prohlížeči a nemá plnohodnotné klientské aplikace pro spolupráci, jsou podporovány konference s maximálně 75 účastníky (až 35 s vysokou kvalitou hovoru). Chcete-li plně využívat Jitsi v podnikovém prostředí, musíte samostatně vyvíjet a nainstalovat další software.
BigBlueButton je bezplatný software pro videokonference. Vývojáři kladou zvláštní důraz na distanční vzdělávání (existují takové funkce jako interaktivní tabule, zobrazování obsahu, podpůrné průzkumy atd.). Podporuje webové konference až 100 účastníků.
Na rozdíl od všeobecného přesvědčení Zoom nepoužívá technologii WebRTC k přenosu a dekódování mediálních dat. To bylo provedeno za účelem úspory zdrojů serveru. Na straně prohlížeče jsou zapojeny další webové technologie - nízkoúrovňové WebAssembly a WebSocket. Při použití takových nestandardních přístupů pro přenos video streamu mohou někteří účastníci zaznamenat problémy s kvalitou obrazu.
WebRTC přináší revoluci v komunikaci v reálném čase tím, že umožňuje výměnu hlasu, videa a dat přímo v prohlížečích bez nutnosti pluginů. Díky snadné integraci a široké kompatibilitě je ideální pro moderní komunikační řešení. Jste připraveni implementovat WebRTC ve vašem projektu? Kontaktujte Moravio ještě dnes a zjistěte, jak může náš tým poskytnout plně přizpůsobenou komunikační platformu, která vyhovuje vašim obchodním potřebám.
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.