Vés al contingut

WebRTC

De la Viquipèdia, l'enciclopèdia lliure
ImageWebRTC
Image Modifica el valor a Wikidata

TipusAPI web Modifica el valor a Wikidata
Llicènciallicència BSD Modifica el valor a Wikidata
Equip
Creador/sGlobal IP Solutions (en) Tradueix Modifica el valor a Wikidata
Desenvolupador(s)Google Modifica el valor a Wikidata
Més informació
Lloc webw3c.github.io… (anglès) Modifica el valor a Wikidata

GitHub: webrtc Modifica el valor a Wikidata

WebRTC (Web Real-Time Communication) és un projecte gratuït i de codi obert que proporciona comunicació en temps real (RTC) a navegadors web i aplicacions mòbils a través d'interfícies de programació d'aplicacions (API). Permet la comunicació i la transmissió d'àudio i vídeo dins de les pàgines web permetent la comunicació directa entre iguals, eliminant la necessitat d'instal·lar complements o descarregar aplicacions natives.

Amb el suport d'Apple, Google, Microsoft, Mozilla i Opera, les especificacions WebRTC han estat publicades pel World Wide Web Consortium (W3C) i l'Internet Engineering Task Force (IETF).[1][2]

ICE, STUN i TURN són les tècniques de travessia NAT que s'utilitzen per connectar-se a companys remots.[3]

Història

[modifica]

El maig de 2010, Google va comprar Global IP Solutions o GIPS, una empresa de programari de VoIP i videoconferència que havia desenvolupat molts components necessaris per a RTC, com ara còdecs i tècniques de cancel·lació d'eco. Google va publicar la tecnologia GIPS de codi obert i va col·laborar amb els organismes d'estàndards pertinents de l'IETF i el W3C per garantir el consens de la indústria.[4] El maig de 2011, Google va llançar un projecte de codi obert per a la comunicació en temps real basada en navegadors conegut com a WebRTC. Això ha anat seguit d'un treball continu per estandarditzar els protocols rellevants a l'IETF i les API del navegador al W3C.

El gener de 2011, Ericsson Labs va crear la primera implementació de WebRTC utilitzant una biblioteca WebKit modificada.[5] L'octubre de 2011, el W3C va publicar el seu primer esborrany de l'especificació.[6] Les fites de WebRTC inclouen la primera videotrucada entre navegadors (febrer de 2013), les primeres transferències de dades entre navegadors (febrer de 2014) i, a partir de juliol de 2014, Google Hangouts ja utilitzava "més o menys" WebRTC.[7]

L'esborrany de l'API del W3C es va basar en el treball preliminar realitzat al WHATWG. Es va anomenar API ConnectionPeer i es va crear una implementació del concepte de preestàndards a Ericsson Labs. El grup de treball WebRTC espera que aquesta especificació evolucioni significativament en funció de:

  • Resultats dels intercanvis en curs en el grup associat RTCWEB a l'IETF per definir el conjunt de protocols que, juntament amb aquest document, defineixen les comunicacions en temps real als navegadors web. Tot i que no hi ha cap protocol de senyalització obligatori, SIP sobre WebSockets (RFC 7118) s'utilitza sovint en part a causa de l'aplicabilitat de SIP[8] a la majoria dels escenaris de comunicació previstos, així com a la disponibilitat de programari de codi obert com ara JsSIP.
  • Problemes de privadesa que sorgeixen en exposar capacitats locals i fluxos locals
  • Discussions tècniques dins del grup, en particular sobre la implementació de canals de dades
  • Experiència adquirida a través de l'experimentació inicial
  • Comentaris d'altres grups i individus

El novembre de 2017, l'especificació WebRTC 1.0 va passar de ser Esborrany de Treball a Recomanació Candidata.[9]

El gener de 2021, l'especificació WebRTC 1.0 va passar de recomanació candidata a recomanació.[10]

Disseny

[modifica]

Els components principals de WebRTC inclouen diverses API de JavaScript:

  • getUserMedia adquireix els suports d'àudio i vídeo (per exemple, accedint a la càmera i el micròfon d'un dispositiu).
  • RTCPeerConnection permet la comunicació d'àudio i vídeo entre iguals. Realitza el processament de senyals, la gestió de còdecs, la comunicació entre iguals, la seguretat i la gestió de l'amplada de banda.
  • RTCDataChannel permet la comunicació bidireccional de dades arbitràries entre iguals. Les dades es transporten mitjançant SCTP sobre DTLS.[11] Utilitza la mateixa API que WebSockets i té una latència molt baixa.

L'API de WebRTC també inclou una funció d'estadístiques:

  • getStats permet a l'aplicació web recuperar un conjunt d'estadístiques sobre les sessions WebRTC. Aquestes dades estadístiques es descriuen en un document separat del W3C.

L'API de WebRTC no inclou cap disposició per a la senyalització, és a dir, descobrir els companys als quals connectar-se i determinar com establir connexions entre ells. Les aplicacions utilitzen l'establiment de connectivitat interactiva per a les connexions i són responsables de gestionar les sessions, possiblement basant-se en qualsevol dels següents protocols: Session Initiation Protocol, Extensible Messaging and Presence Protocol (XMPP), Message Queuing Telemetry Transport, Matrix o un altre protocol. La senyalització pot dependre d'un o més servidors.[12][13]

RFC 7478 requires implementations to provide PCMA/PCMU (RFC 3551), Telephone Event as DTMF (RFC 4733), and Opus (RFC 6716) audio codecs as minimum capabilities. The PeerConnection, data channel and media capture browser APIs are detailed in the W3C specification.

El W3C està desenvolupant ORTC (Object Real-Time Communications) per a WebRTC.

Aplicacions

[modifica]

WebRTC permet als navegadors transmetre fitxers directament entre ells, reduint o eliminant completament la necessitat d'allotjament de fitxers al servidor. WebTorrent utilitza un transport WebRTC per permetre l'intercanvi de fitxers entre iguals mitjançant el protocol BitTorrent al navegador.[14] Alguns llocs web de compartició de fitxers l'utilitzen per permetre als usuaris enviar fitxers directament entre ells als seus navegadors, tot i que això requereix que el carregador mantingui la pestanya oberta fins que s'hagi descarregat el fitxer.[15][16][17] Algunes CDN, com ara Peer5, propietat de Microsoft, utilitzen l'ample de banda del client per carregar contingut multimèdia a altres iguals connectats, permetent que cada igual actuï com a servidor perimetral.[18][19]

Tot i que inicialment es va desenvolupar per a navegadors web, WebRTC té aplicacions per a dispositius que no són de navegador, incloent-hi plataformes mòbils i dispositius IoT. Alguns exemples són la telefonia VoIP basada en navegador, també anomenada telèfons al núvol o telèfons web, que permet fer i rebre trucades des d'un navegador web, substituint el requisit de descarregar i instal·lar un softphone.[20]

Suport

[modifica]

WebRTC és compatible amb els següents navegadors (llista incompleta; s'especifica la versió més antiga compatible):

Compatibilitat amb còdecs en tots els navegadors

[modifica]

WebRTC estableix un conjunt estàndard de còdecs que tots els navegadors compatibles han d'implementar (subratllat). Alguns navegadors també poden ser compatibles amb altres còdecs.[21]

Compatibilitat de còdecs de vídeo

Nom del còdec Perfil Compatibilitat del navegador
H.264 Línia de base restringida (CB) Chrome, Edge, Firefox, Safari (12.1+)
VP8 - Chrome (52+), Edge, Firefox, Safari[22]
VP9 - Chrome (48+), Firefox
AV1 - Chrome (113+), Firefox (136+)

Compatibilitat de còdecs d'àudio

Nom del còdec Compatibilitat del navegador
Opus Chrome, Firefox, Safari
G.711 PCM (llei A) Chrome, Firefox, Safari
G.711 PCM (llei μ) Chrome, Firefox, Safari
G.722 Chrome, Firefox, Safari
iLBC Chrome, Safari
iSAC Chrome, Safari

Referències

[modifica]
  1. «Web Real-Time Communications (WebRTC) transforms the communications landscape as it becomes a World Wide Web Consortium (W3C) Recommendation and Internet Engineering Task Force (IETF) standards» (en anglès). World Wide Web Consortium, 26-01-2021. Arxivat de l'original el 27 July 2022. [Consulta: 27 gener 2021].
  2. «Rtcweb Status Pages» (en anglès). tools.ietf.org. Arxivat de l'original el 2020-04-20. [Consulta: 18 febrer 2021].
  3. «Introduction» (en anglès). W3C WebRTC.
  4. «Are the WebRTC components from Google's acquisition of Global IP Solutions?» (en anglès). WebRTC. Arxivat de l'original el 7 June 2011. [Consulta: 6 febrer 2018].
  5. «Beyond HTML5: Experiment with Real-Time Communication in a Browser». Ericsson Research blog, 26-05-2011.
  6. «WebRTC 1.0: Real-time Communication Between Browsers (W3C Working Draft 27 October 2011)» (en anglès). World Wide Web Consortium, 27-10-2011. Arxivat de l'original el 29 October 2011. [Consulta: 6 febrer 2018].
  7. Nowak, Szymon. «WebRTC: So Much More Than Videoconferencing» (en anglès). GitHub. Arxivat de l'original el 7 February 2018. [Consulta: 6 febrer 2018].
  8. SIP Trunking, MTPL. «SIP Trunking VoIP with WebRTC SDK» (en anglès). Moon Technolabs, 18-07-2023. Arxivat de l'original el 5 August 2023. [Consulta: 18 juliol 2023].
  9. «WebRTC 1.0: Real-time Communication Between Browsers (W3C Candidate Recommendation 02 November 2017)» (en anglès), 02-11-2017. Arxivat de l'original el 2 November 2017. [Consulta: 25 març 2019].
  10. «Web Real-Time Communications (WebRTC) transforms the communications landscape as it becomes a World Wide Web Consortium (W3C) Recommendation and Internet Engineering Task Force (IETF) standards» (en anglès). World Wide Web Consortium, 26-01-2021. Arxivat de l'original el 27 July 2022. [Consulta: 27 gener 2021].
  11. Jesup, Randell. «RFC 8831 - WebRTC Data Channels» (en anglès). datatracker.ietf.org, 01-01-2021. Arxivat de l'original el 2022-03-10. [Consulta: 10 març 2022].
  12. Tsahi Levent-Levi. «WebRTC Server: What is it exactly?» (en anglès). BlogGeek.me, 13-04-2020. Arxivat de l'original el 11 May 2020. [Consulta: 10 juny 2020].
  13. Tsahi Levent-Levi. «Matrix.org and WebRTC: An Interview with Matthew Hodgson» (en anglès). BlogGeek.me, 13-11-2014. Arxivat de l'original el 25 February 2021. [Consulta: 10 juny 2020].
  14. «WebTorrent FAQ» (en anglès). webtorrent.io. Arxivat de l'original el 2022-03-11. [Consulta: 10 març 2022].
  15. «How to Transfer Files Between Linux, Android, and iOS Using Snapdrop» (en anglès americà). MUO, 04-08-2021. Arxivat de l'original el 2022-01-29. [Consulta: 10 març 2022].
  16. Pinola, Melanie. «The easiest and quickest way to transfer files between devices on the same network» (en anglès). Computerworld, 07-04-2014. Arxivat de l'original el 2022-06-28. [Consulta: 10 març 2022].
  17. «FilePizza: share files without the middleman in your browser - gHacks Tech News» (en anglès americà). gHacks Technology News, 12-05-2015. Arxivat de l'original el 2022-01-23. [Consulta: 10 març 2022].
  18. Foley, Mary Jo. «Microsoft acquires Peer5 to supplement Teams' live video streaming» (en anglès). ZDNet. Arxivat de l'original el 2022-03-10. [Consulta: 10 març 2022].
  19. «Overview - Peer5 P2P Docs» (en anglès). docs.peer5.com. Arxivat de l'original el 2022-03-16. [Consulta: 10 març 2022].
  20. «Catch the Babelfish: Irish telco devises a new kind of cloud phone» (en anglès), 01-11-2017. Arxivat de l'original el 2017-11-01. [Consulta: 20 novembre 2017].
  21. «Codecs used by WebRTC - Web media technologies | MDN» (en anglès americà). developer.mozilla.org. Arxivat de l'original el 2021-07-27. [Consulta: 29 juliol 2021].
  22. Fablet, Youenn. «On the Road to WebRTC 1.0, Including VP8» (en anglès). WebKit, 12-03-2019. Arxivat de l'original el 2021-07-29. [Consulta: 29 juliol 2021].