WebRTC (Web Real-Time Communication) – wolny i otwartoźródłowy projekt, część standardu HTML5 zapewniająca przeglądarkom internetowym oraz aplikacjom mobilnym możliwość komunikacji w czasie rzeczywistym poprzez zestaw prostych interfejsów programowania (API). Podstawowym celem projektu jest umożliwienie komunikacji audio/video na stronach internetowych poprzez bezpośrednią komunikację typu peer-to-peer, eliminując w ten sposób potrzebę instalacji wtyczek czy ściągania natywnych aplikacji. Projekt jest wspierany przez takie firmy jak Apple, Google, Microsoft, Mozilla i Opera. Specyfikacja techniczna została opublikowana przez World Wide Web Consortium (W3C) i Internet Engineering Task Force (IETF)
Według strony webrtc.org celem tego projektu jest „umożliwienie stworzenia bogatych, wysokiej jakości aplikacji RTC dla przeglądarek, platform mobilnych, i urządzeń internetu rzeczy i pozwolenie im na komunikację wspólnym zestawem protokołów”.
Historia W maju 2010 roku Google zakupiło przedsiębiorstwo Global IP Solutions (GISP), które specjalizowało się w technologiach Wideokonferencyjnych i VoIP, a które stworzyło wiele komponentów wymaganych do komunikacji w czasie rzeczywistym (RTC), takich jak kodeki, czy techniki eliminacji echa. Następnie przeniesiono posiadane technologie GISP do domeny otwarto-źródłowej i rozpoczęto proces współpracy z organami standaryzującymi takimi jak IETF, czy W3C by zapewnić nowemu standardowi wsparcie branży. W maju 2011 Google wypuściło otwarto źródłowy projekt dla przeglądarek internetowych znany wtedy już pod nazwą WebRTC, jednak w dalszym ciągu kontynuowane były prace nad protokołami w IETF i API przeglądarki w W3C.
W styczniu 2011 Ericsson Labs zbudowało pierwszą implementację WebRTC wykorzystując do tego bibliotekę WebKit. W Październiku 2011, W3C opublikowało pierwszą roboczą specyfikacji projektu, by już dwa lata później (Luty 2013) wykonać pierwszą rozmowę i przesył danych z wykorzystaniem przeglądarki. Od Czerwca 2014 Google Hangouts już do pewnego stopnia również wykorzystał WebRTC do przesyłu danych.
Projekt API W3C został oparty na wstępnych pracach wykonanych w WHATWG. API otrzymało nazwę ConnectionPeer, a pierwsze implementacja (poprzedzająca jeszcze standaryzację) została stworzona w Ericsson Labs. Grupa Robocza WebRTC oczekuje, że ta specyfikacja będzie znacząco ewoluować na podstawie:
wyników trwających dyskusji w grupie RTCWEB w IETF w celu zdefiniowania zestawu protokołów, które wraz z tym dokumentem definiują komunikację w czasie rzeczywistym w przeglądarkach internetowych; chociaż specyfikacja standardu nie narzuca żadnego protokołu sygnalizacyjnego, bardzo często do tego zadania stosowany jest SIP oparty na WebSocketach; problemów z prywatnością, które pojawiają się podczas ujawniania lokalnych możliwości i lokalnych strumieni; dyskusji technicznych w grupie, dotyczących w szczególności implementacji kanałów danych; doświadczenia zdobytego podczas wczesnych eksperymentów; Informacji zwrotnych od innych grup i osób.
W listopadzie 2017 r. specyfikacja WebRTC 1.0 przeszła z poziomu Working Draft do Candidate Recommendation.
W styczniu 2021 r. specyfikacja WebRTC 1.0 przeszła z poziomu Candidate Recommendation do Recommendation.
Opis Projekt Główne komponenty WebRTC opierają się na kilku javascriptowych API:
getUserMedia pozyskuje media typu audio i wideo (np. uzyskując dostęp do kamery i mikrofonu urządzenia). RTCPeerConnection umożliwia komunikację audio i wideo pomiędzy klientami. Obsługuje przetwarzanie sygnału, kodeki, komunikację peer-to-peer, odpowiada za bezpieczeństwo i przepustowość. RTCDataChannel umożliwia dwukierunkową komunikację dowolnych danych pomiędzy peerami. Używa tego samego interfejsu API, co WebSocket i ma bardzo niskie opóźnienie.
WebRTC API zawiera również funkcję statystyk:
getStats umożliwia aplikacji internetowej pobieranie zestawu statystyk dotyczących sesji WebRTC. Te dane statystyczne są opisane w osobnym dokumencie W3C.
Standard wymaga implementacji minimum PCMA/PCMU (), DTMF () oraz kodeka audio Opus (). Opcjonalne kodeki audio to m.in.: iLBC, iSAC, G.711, G.722, natomiast video to: H.264, VP8, VP9. Interfejsy API przeglądarki PeerConnection, kanału danych i przechwytywania mediów są szczegółowo opisane w W3C.
Przykłady Chociaż początkowo WebRTC zostało opracowane dla przeglądarek internetowych, jest on z powodzeniem wykorzystywany poza nimi, np. w platformach mobilnych, czy internetu rzeczy. Przykłady obejmują także telefonię VoIP opartą na przeglądarkach, zwaną telefonami w chmurze lub telefonami internetowymi, które umożliwiają wykonywanie i odbieranie połączeń z poziomu przeglądarki internetowej, zastępując wymóg pobierania i instalowania telefonu programowego. O uniwersalności WebRTC świadczyć może to, że za jego pomocą został zaimplementowany klient protokołu BitTorrent dostępny w przeglądarce.
Wsparcie WebRTC jest wspierane przez następujące przeglądarki
Komputery PC Microsoft Edge 12+ Google Chrome 28+ Mozilla Firefox 22+ Safari 11+ Opera 18+ Vivaldi 1.9+ Brave Android Google Chrome 28+ (standardowo odblokowane od 29) Mozilla Firefox 24+ Opera Mobile 12+ Chrome OS Firefox OS BlackBerry 10 iOS MobileSafari/WebKit (iOS 11+) Tizen 3.0
GStreamer bezpośrednio udostępnia darmową implementację WebRTC.
Wsparcie kodeków w różnych przeglądarkach Obsługa poszczególnych kodeków nie jest jednolita. WebRTC ustanawia standardowy zestaw kodeków, które muszą wdrożyć wszystkie zgodne przeglądarki. Niektóre przeglądarki mogą zezwalać również na kodeki spoza bazowej specyfikacji. + Wsparcie dla kodeków wideoNazwa kodekaProfileWspierające przeglądarkiH.264Constrained Baseline (CB)Chrome (52+), Edge, Firefox, SafariVP8 –Chrome, Edge, Firefox, Safari (12.1+)VP9 –Chrome (48+), Firefox + Wsparcie dla kodeków audioNazwa kodekaWspierające przeglądarkiOpusChrome, Edge, Firefox, SafariG.711 PCM (A-law)Chrome, Firefox, SafariG.711 PCM (µ-law)Chrome, Firefox, SafariG.722Chrome, Firefox, SafariiLBCChrome, SafariiSACChrome, Safari
Kontrowersje W styczniu 2015 r. TorrentFreak zgłosił poważną lukę w zabezpieczeniach przeglądarek obsługujących WebRTC, mówiąc, że naruszył bezpieczeństwo tuneli VPN, ujawniając prawdziwy adres IP użytkownika. Żądania odczytu adresu IP nie są widoczne w konsoli programisty przeglądarki i nie są blokowane przez większość wtyczek zarządzającymi prywatnością, umożliwiając śledzenie online przez reklamodawców i inne podmioty pomimo środków ostrożności (jednak wtyczka uBlock Origin może rozwiązać ten problem).
Przypisy
Linki zewnętrzne
Kategoria:Oprogramowanie na licencji BSD Kategoria:Standardy internetowe