WebRTC
Logo programu | |
| Autor | Global IP Solutions |
|---|---|
| Platforma sprzętowa | wieloplatformowy |
| Rodzaj | interfejs programowania aplikacji |
| Licencja | 3-klauzulowa licencja BSD |
| Strona internetowa | |
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[1]. 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)[2][3]
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”[4].
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[5]. 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[6][5]. 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[7] i API przeglądarki w W3C[8].
W styczniu 2011 Ericsson Labs zbudowało pierwszą implementację WebRTC wykorzystując do tego bibliotekę WebKit[9][10]. W Październiku 2011, W3C opublikowało pierwszą roboczą specyfikacji projektu[11], 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[12].
Projekt API W3C został oparty na wstępnych pracach wykonanych w WHATWG[13]. API otrzymało nazwę ConnectionPeer, a pierwsze implementacja (poprzedzająca jeszcze standaryzację) została stworzona w Ericsson Labs.[10] 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[14];
- 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[15].
W styczniu 2021 r. specyfikacja WebRTC 1.0 przeszła z poziomu Candidate Recommendation do Recommendation[2].
Opis
Projekt
Główne komponenty WebRTC opierają się na kilku javascriptowych API:
getUserMediapozyskuje media typu audio i wideo (np. uzyskując dostęp do kamery i mikrofonu urządzenia)[16].RTCPeerConnectionumożliwia komunikację audio i wideo pomiędzy klientami. Obsługuje przetwarzanie sygnału, kodeki, komunikację peer-to-peer, odpowiada za bezpieczeństwo i przepustowość[8].RTCDataChannelumożliwia dwukierunkową komunikację dowolnych danych pomiędzy peerami. Używa tego samego interfejsu API, co WebSocket i ma bardzo niskie opóźnienie[8].
WebRTC API zawiera również funkcję statystyk:
getStatsumożliwia aplikacji internetowej pobieranie zestawu statystyk dotyczących sesji WebRTC. Te dane statystyczne są opisane w osobnym dokumencie W3C.[8]
Standard RFC 7874 ↓ wymaga implementacji minimum PCMA/PCMU (RFC 3551 ↓), DTMF (RFC 4733 ↓) oraz kodeka audio Opus (RFC 6716 ↓). Opcjonalne kodeki audio to m.in.: iLBC, iSAC, G.711, G.722, natomiast video to: H.264, VP8, VP9[17]. 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[18]. O uniwersalności WebRTC świadczyć może to, że za jego pomocą został zaimplementowany klient protokołu BitTorrent dostępny w przeglądarce[19].
Wsparcie
WebRTC jest wspierane przez następujące przeglądarki
- Komputery PC
- Microsoft Edge 12+[20]
- Google Chrome 28+
- Mozilla Firefox 22+[21]
- Safari 11+
- Opera 18+[22]
- 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[23].
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[24].
| Nazwa kodeka | Profile | Wspierające przeglądarki |
|---|---|---|
| H.264 | Constrained Baseline (CB) | Chrome (52+), Edge, Firefox[1], Safari |
| VP8 | – | Chrome, Edge, Firefox, Safari (12.1+)[25] |
| VP9 | – | Chrome (48+), Firefox |
| Nazwa kodeka | Wspierające przeglądarki |
|---|---|
| Opus | Chrome, Edge, Firefox, Safari |
| G.711 PCM (A-law) | Chrome, Firefox, Safari |
| G.711 PCM (µ-law) | Chrome, Firefox, Safari |
| G.722 | Chrome, Firefox, Safari |
| iLBC | Chrome, Safari |
| iSAC | Chrome, 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[26]. Żą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
- ↑ How WebRTC Is Revolutionizing Telephony [online], Trilogy-LTE [dostęp 2021-07-25] (ang.).
- ↑ a b Web Real-Time Communications (WebRTC) transforms the communications landscape; becomes a World Wide Web Consortium (W3C) Recommendation and multiple Internet Engineering Task Force (IETF) standards [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Rtcweb Status Pages [online], tools.ietf.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC [online], WebRTC [dostęp 2021-07-25] (ang.).
- ↑ a b Google makes $68.2 million cash offer for Global IP Solutions [online], TechCrunch [dostęp 2021-07-25] (ang.).
- ↑ Are the WebRTC components from Google’s acquisition of Global IP Solutions? [online] [dostęp 2021-07-25] [zarchiwizowane z adresu 2011-06-07] (ang.).
- ↑ Real-Time Communication in WEB-browsers (rtcweb) – [online], datatracker.ietf.org [dostęp 2021-07-25] (ang.).
- ↑ a b c d WebRTC 1.0: Real-Time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Stefan Håkansson, Welcome to Ericsson Blog [online], www.ericsson.com, 21 lipca 2021 [dostęp 2021-07-25] (ang.).
- ↑ a b Beyond HTML5: Peer-to-Peer Conversational Video | Ericsson Research Blog [online], web.archive.org, 25 lutego 2017 [dostęp 2021-07-25] [zarchiwizowane z adresu 2017-02-25] (ang.).
- ↑ WebRTC 1.0: Real-time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC – so much more than just video conferencing! [online], szimek.github.io [dostęp 2021-07-25] (ang.).
- ↑ HTML Standard [online], html.spec.whatwg.org [dostęp 2021-07-25] (ang.).
- ↑ draft-jesup-rtcweb-data-protocol-00 [online], datatracker.ietf.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC 1.0: Real-time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Media Capture and Streams [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Codecs used by WebRTC – Web media technologies | MDN [online], developer.mozilla.org [dostęp 2021-07-25] (ang.).
- ↑ John Kennedy, Catch the Babelfish: Irish telco devises a new kind of cloud phone [online], Silicon Republic, 1 listopada 2017 [dostęp 2021-07-25] (ang.).
- ↑ WebTorrent FAQ [online], webtorrent.io [dostęp 2021-07-25] (ang.).
- ↑ Microsoft Edge Blog, ORTC API is now available in Microsoft Edge [online], Microsoft Edge Blog, 18 września 2015 [dostęp 2021-07-25] (ang.).
- ↑ Firefox Notes – Desktop [online], website-archive.mozilla.org [dostęp 2021-07-25] (ang.).
- ↑ Download Opera 18 for desktop – Blog [online], Opera News, 19 listopada 2013 [dostęp 2021-07-25] (ang.).
- ↑ GStreamer 1.14 release notes [online], gstreamer.freedesktop.org [dostęp 2021-07-25] (ang.).
- ↑ Codecs used by WebRTC – Web media technologies | MDN [online], developer.mozilla.org [dostęp 2021-07-29] (ang.).
- ↑ Youenn Fablet, On the Road to WebRTC 1.0, Including VP8 [online], WebKit, 12 marca 2019 [dostęp 2021-07-29] (ang.).
- ↑ Huge Security Flaw Leaks VPN Users’ Real IP-Addresses * TorrentFreak [online] [dostęp 2021-07-25] (ang.).
Linki zewnętrzne
- H. Schulzrinne, S. Casner, RTP Profile for Audio and Video Conferences with Minimal Control, STD 65, RFC 3551, IETF, lipiec 2003, DOI: 10.17487/RFC3551, ISSN 2070-1721, OCLC 943595667 (ang.).
- Tom Taylor, RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals, RFC 4733, IETF, grudzień 2006, DOI: 10.17487/RFC4733, ISSN 2070-1721, OCLC 943595667 (ang.).
- Timothy B. Terriberry, Definition of the Opus Audio Codec, RFC 6716, IETF, wrzesień 2012, DOI: 10.17487/RFC6716, ISSN 2070-1721, OCLC 943595667 (ang.).
- JM. Valin, C. Bran, WebRTC Audio Codec and Processing Requirements, RFC 7874, IETF, maj 2016, DOI: 10.17487/RFC7874, ISSN 2070-1721, OCLC 943595667 (ang.).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.