WebRTC (Web Real-Time Communication, littéralement « communication en temps réel pour le Web ») est une interface de programmation (API) JavaScript offrant aux navigateurs, aux applications mobiles et aux applications de bureau des capacités de communication en temps réel, généralement utilisées pour les appels vidéo. La plateforme se compose d'un ensemble complet de technologies et de normes. L'API repose sur une architecture triangulaire puis pair à pair dans laquelle un serveur central est utilisé pour mettre en relation deux pairs désirant échanger des flux de médias ou de données qui échangent ensuite sans autre relais. Cette architecture et la pile de protocoles utilisée posent des questions de sécurité et d'utilisation en relation avec d'autres technologies (comme les NAT ou les pare-feux) qui sont pour la plupart en cours de résolution par l'IETF et le W3C.
Google a lancé l'idée de créer WebRTC en 2009, comme alternative à Adobe Flash et aux applications de bureau qui ne pouvaient pas fonctionner dans le navigateur. La génération précédente de produits basés sur un navigateur reposait sur une technologie propriétaire sous licence. Différents produits ont été conçus avec cette technologie, notamment Hangouts. Google a ensuite acquis les entreprises auprès desquelles il accordait une licence pour la technologie et l'a mise à disposition dans le cadre du projet WebRTC open source.
Cette base de code est intégrée à Chrome et utilisée par la majorité des applications utilisant WebRTC. En collaboration avec d'autres fournisseurs de navigateurs et des leaders du secteur tels que Mozilla, Microsoft, Cisco et Ericsson, la standardisation de WebRTC a été lancée à la fois au W3C et à l'IETF.
En 2013, Mozilla et Google ont présenté des appels vidéo entre leurs navigateurs. Au cours de l'évolution de la norme, de nombreuses discussions architecturales ont conduit à des différences d'implémentation entre les navigateurs et ont remis en question la compatibilité et l'interopérabilité. La plupart de ces désaccords ont finalement été réglés au fur et à mesure que la norme était finalisée ces dernières années. La spécification WebRTC est désormais accompagnée d'un ensemble complet de tests de plateforme et d'outils pour gérer la compatibilité et les navigateurs ont largement adapté leurs implémentations en conséquence. Cela met fin à une période difficile où les développeurs Web devaient continuellement adopter leurs services pour différentes implémentations de navigateur et modifications de spécifications.
Architecture et fonctionnalité
L'API RTCPeerConnection est la partie centrale de la spécification WebRTC. RTCPeerConnection traite la connexion de deux applications sur différents points de terminaison pour une communication à l'aide d'un protocole peer-to-peer. L'API PeerConnection interagit étroitement avec getUserMedia pour accéder à la caméra et au microphone, et getDisplayMedia pour capturer le contenu de l'écran. WebRTC vous permet d'envoyer et de recevoir des flux qui incluent du contenu audio et/ou vidéo, ainsi que des données binaires arbitraires via le DataChannel. La fonctionnalité multimédia de traitement, d'encodage et de décodage audio et vidéo constitue le cœur de toute implémentation WebRTC. WebRTC prend en charge divers codecs audio, Opus étant le plus utilisé et le plus polyvalent. Les implémentations WebRTC sont nécessaires pour prendre en charge le codec vidéo libre VP8 de Google et H.264 pour le traitement de la vidéo. Les connexions WebRTC sont toujours chiffrées, ce qui est réalisé via deux protocoles existants: DTLS et SRTP. WebRTC s'appuie fortement sur les normes et technologies existantes, depuis les codecs vidéo (VP8, H264), la traversée de réseau (ICE), le transport (RTP, SCTP), jusqu'aux protocoles de description de média (SDP). Ceci est lié dans plus de 50 RFC.
Cas d'utilisation: quand c'est une question de millisecondes
WebRTC est largement utilisé dans les applications à temps critique telles que la chirurgie à distance, la surveillance du système et le contrôle à distance de voitures autonomes, et les appels vocaux ou vidéo basés sur UDP où la mise en mémoire tampon n'est pas possible. Presque tous les services d'appels vidéo basés sur un navigateur d'entreprises telles que Google, Facebook, Cisco, RingCentral et Jitsi utilisent WebRTC. Google Stadia et NVidia Geforce utilisent maintenant WebRTC pour transférer le flux de jeu du cloud vers le navigateur Web sans délai perceptible.
La pandémie met l'accent sur les performances des appels vidéo
Au cours de l'année écoulée, WebRTC a...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.