Co je WebRTC (Web Real Time Communications)?

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.

Table of contents

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.

Jak WebRTC funguje

Zvažte provoz technologie pomocí příkladu hovoru mezi dvěma účastníky prostřednictvím prohlížeče:

How WebRTC works
Jak WebRTC funguje - příklad
  1. Uživatel otevře stránku obsahující obsah WebRTC.
  2. Prohlížeč požaduje přístup k webové kameře a mikrofonu, pokud je to nutné. Dokud uživatel nepovolí přístup k zařízení, nebude použito. V případech, kdy je to volitelné (například při sledování vysílání), nejsou vyžadována žádná další oprávnění.
WebRTC (Web Real Time Communications) - The browser requests access
Web Real Time Communications example
Příklad webové komunikace v reálném čase

Výhody standardu WebRTC

  • Žádný softwarere je nutná instalace.
  • Vysoce kvalitní komunikace díky:
    • použití moderních video a audio kodeků;
    • automatické přizpůsobení kvality proudu podmínkám připojení;
    • vestavěný systém ozvěny a redukce šumu;
    • automatické řízení úrovně účastnických mikrofonů (AGC).
  • Vysoká úroveň zabezpečení: všechna připojení jsou zabezpečená a šifrovaná podle protokolů DTLS a SRTP. WebRTC zároveň pracuje pouze přes protokol HTTPS a web využívající technologii musí být podepsán certifikátem.
  • Podpora technologie SVC byla přidána jako součást implementace kodeků VP9 a AV1. Navzdory skutečnosti, že v současné době stále neexistuje implementace v samotných prohlížečích, softwarová řešení TrueConf umožňují použití SVC v klientech prohlížeče.
  • K dispozici je vestavěný mechanismus pro zachycení obsahu, jako je plocha.
  • Schopnost implementovat libovolné ovládací rozhraní založené na HTML5 a JavaScriptu.
  • Projekt s otevřeným zdrojovým kódem - můžete jej vložit do svého produktu nebo služby.
  • Skutečná multiplatforma: stejná aplikace WebRTC bude fungovat stejně dobře na jakémkoli operačním systému, stolním i mobilním počítači, za předpokladu, že prohlížeč podporuje WebRTC. To šetří spoustu zdrojů pro vývoj softwaru.
Benefits of WebRTC standard

Nevýhody standardu

  • Všechna řešení WebRTC jsou vzájemně nekompatibilní, protože standard popisuje pouze způsoby přenosu videa a zvuku, přičemž vývojáři ponechávají implementaci metod pro oslovení předplatitelů, sledování jejich dostupnosti, výměnu zpráv a souborů, plánování a další věci. Jinými slovy, nebudete moci volat z jedné aplikace WebRTC do druhé.
  • Pro uživatele, kteří se obávají o své soukromí, bude nepříjemným zjištěním, že WebRTC určuje jejich skutečné IP adresy. Současně ani proxy ani použití sítě Tor nepomohou zachovat anonymitu. IP adresu můžete skrýt pomocí různých služeb VPN, stejně jako při použití serveru TURN. V případě potřeby lze použití WebRTC zakázat.
  • WebRTC nepodporuje vzdálenou správu plochy. Ano, můžete vysílat, co se děje na obrazovce zařízení, ale bude to stejný jednosměrný video stream jako obraz přenášený z kamery a neexistuje způsob interakce se zdrojem streamu. To se provádí z bezpečnostních důvodů: Kód Javascript nemůže ovládat nic mimo aktuální okno prohlížeče. Další funkce, včetně dálkového ovládání plochy, lze získat pomocí speciálně vyvinutých klientských aplikací dodavatelů videokonferencí.
  Disadvantages of the standard

Kodeky v WebRTC

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).

Audio kodeky

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.

Video kodeky

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+).

Triky práce s WebRTC - postřehy od Alexey Andrushchenko

Tricks of working with WebRTC - insights from Alexey Andrushchenko
postřehy od Alexeje Andrushchenka

Signalizační server

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.

Práce s hardwarovými zařízeními

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.

Zachytit média

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.

P2P připojení (protokol popisu relace SDP)

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.

You can teach the signal server to translate one SDP to another but its increases server loading.

RTP a SRTP (ssl) streamování médií

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.

WebRTC pro trh videokonferencí

Popularita technologie

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.

Zvýšení počtu zákazníků

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.

Soutěž s Flash

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.

WebRTC for the video conferencing market

Příklady služeb využívajících WebRTC

Google Meet

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.

Seznamte se s Jitsi

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

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ů.

A co zoom?

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.

Read also

Blog posts you may be interested in

11
minut na čtení
March 2, 2023

JavaScript: Ovládání webové stránky gesty

Naše zkušenosti s implementací dálkového ovládání a experimentováním s různými přístupy, včetně technologie počítačového vidění. V tomto článku se podělíme o výsledky našich experimentů s použitím knihovny MEDIAPIPE od Googlu pro počítačové vidění.
10
minut na čtení
September 24, 2024

Integrace AI v podnikání - pohled AI inženýra z Moravio

Ladislav Husty, zkušený inženýr AI, sdílí své zkušenosti s integrací AI do podnikání
4
minut na čtení
September 5, 2023

Proměna webových zážitků pomocí MediaPipe a JavaScriptu: Komplexní hluboký ponor do problematiky

Tento článek se zabývá bezproblémovým spojením JavaScriptu a frameworku MediaPipe společnosti Google a ukazuje jejich společný potenciál na praktických příkladech kódu, reálných případech použití a návodech krok za krokem pro vytváření inovativních webových aplikací, zejména v oblasti rozšířené reality (AR), s rozšířenými interaktivními funkcemi.
New articles

New blog posts you may be interested in

11
minut na čtení
October 21, 2024

Jak jsme centralizovali naše data pro chytřejší rozhodování pomocí BI

Pavel Janko, Head of Delivery v Moravu, se s vámi podělí o to, jak jsme díky centralizaci dat pomocí BI zlepšili rozhodování a zefektivnili naši práci.
7
minut na čtení
October 10, 2024

Projektové řízení: Mezi flexibilitou a omezenými zdroji

Hsinyu Ko sdílí své postřehy k hledání rovnováhy mezi požadavky na flexibilní řízení projektů a efektivní využití zdrojů
6
minut na čtení
October 7, 2024

Sourcing Remote IT Talents by Barbora Thornton, COO in Moravio

Tips, Challenges, and Why It's the Right Choice

Přemýšlíte o projektu? Napište nám.

Pomáháme korporacím, středním podnikům a startupům s digitálními produkty.

Napsat zprávu

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Odpovíme vám co nejdříve.
Vaše informace jsou u nás v bezpečí.
Rádi zodpovíme všechny vaše dotazy!

Zarezervujte si schůzku

Jakub Bílý

Vedoucí obchodu
Chcete s námi mluvit přímo? Zarezervujte si schůzku s Jakubem z rozvoje podnikání.
Zarezervujte si schůzku