L'API WebRTC
============

**WebRTC** (Web Real-Time Communications) est une technologie qui permet aux applications et sites web de capturer et éventuellement de diffuser des médias audio et/ou vidéo, ainsi que d'échanger des données arbitraires entre les navigateurs sans passer par un intermédiaire.

L'ensemble de normes qui comprend WebRTC permet de partager des données et d'effectuer des téléconférences peer-to-peer, sans exiger que l'utilisateur installe des plug-ins ou tout autre logiciel tiers.

WebRTC se compose de plusieurs API et protocoles interdépendants qui fonctionnent ensemble pour y parvenir. La documentation que vous trouverez ici vous aidera à comprendre les principes de base de WebRTC, comment configurer et utiliser les connexions de données et multimédias, et plus encore.

Concepts et utilisation du WebRTC
---------------------------------

WebRTC a plusieurs objectifs et chevauche considérablement l'API Media Capture and Streams. Ensemble, ils offrent de puissantes capacités multimédias au web, notamment la prise en charge des conférences audio et vidéo, l'échange de fichiers, la gestion des idendités et l'interfaçage avec les systèmes téléphoniques hérités en envoyant des signaux DTMF. Les connexions entre pairs peuvent être établies sans nécessiter de pilotes ou de plug-ins spéciaux, et peuvent souvent être établies sans aucun serveur intermédiaire.

Les connexions entre deux pairs sont créées à l'aide de - et représentées par - l'interface `RTCPeerConnection`. Une fois la connexion établie et ouverte, des flux multimédias (`MediaStream`s) et/ou des canaux de données (`RTCDataChannel` (en-US)s) peuvent être ajoutés à la connexion.

Les flux multimédias peuvent être constitués de n'importe quel nombre de pistes d'informations multimédias; les pistes, qui sont représentées par des objets basés sur l'interface `MediaStreamTrack` (en-US), peuvent contenir l'un des nombreux types de données multimédias, y compris audio, vidéo et texte (comme des sous-titres ou même des noms de chapitre). La plupart des flux se composent d'au moins une piste audio et probablement également d'une piste vidéo, et peuvent être utilisés pour envoyer et recevoir à la fois des médias en direct ou des informations multimédias stockées (comme un film diffusé en continu).

Vous pouvez également utiliser la connexion entre deux pairs pour échanger des données binaires arbitraires à l'aide de l'interface `RTCDataChannel` (en-US). Cela peut être utilisé pour les informations de canal arrière, l'échange de métadonnées, les paquets d'état du jeu, les transferts de fichiers ou même comme canal principal pour le transfert de données.

***plus de détails et de liens vers des guides et didacticiels pertinents nécessaires***

Interfaces WebRTC
-----------------

Étant donné que WebRTC fournit des interfaces qui fonctionnent ensemble pour accomplir une variété de tâches, nous avons divisé les interfaces dans la liste ci-dessous par catégorie. Veuillez consulter la barre latérale pour une liste alphabétique.

### Configuration et gestion de la connexion

Ces interfaces sont utilisées pour configurer, ouvrir et gérer les connexions WebRTC.

`RTCPeerConnection`

Représente une connexion WebRTC entre l'ordinateur local et un homologue distant. Il est utilisé pour gérer un flux de données efficace entre les deux pairs.

`RTCDataChannel` (en-US)

Représente un canal de données bidirectionnel entre deux homologues d'une connexion.

`RTCDataChannelEvent` (en-US)

Représente les événements qui se produisent lors de l'attachement d'un `RTCDataChannel` (en-US) à un `RTCPeerConnection`. Le seul événement envoyé avec cette interface est `datachannel` (en-US).

`RTCSessionDescription` (en-US)

Représente les paramètres d'une session. Chaque `RTCSessionDescription` se compose d'une description `type` (en-US) indiquant quelle partie du processus de négociation offre / réponse elle décrit et du descripteur SDP du session.

`RTCSessionDescriptionCallback`

Le RTCSessionDescriptionCallback est passé dans l'objet `RTCPeerConnection` lors de la demande de création d'offres ou de réponses.

`RTCStatsReport` (en-US)

Fournit des informations détaillant les statistiques pour une connexion ou pour une piste individuelle sur la connexion; le rapport peut être obtenu en appelant `RTCPeerConnection.getStats()` (en-US).

`RTCIceCandidate` (en-US)

Représente un serveur d'établissement de connectivité Internet (ICE) candidat pour l'établissement d'un `RTCPeerConnection`.

`RTCIceTransport` (en-US)

Représente des informations sur un transport d'établissement de connectivité Internet (ICE).

`RTCIceServer`

Définit comment se connecter à un seul serveur ICE (tel qu'un serveur STUN ou TURN).

`RTCPeerConnectionIceEvent` (en-US)

Représente les événements qui se produisent en relation avec les candidats ICE avec la cible, généralement un `RTCPeerConnection`. Un seul événement est de ce type: `icecandidate` (en-US).

`RTCRtpSender` (en-US)

Gère l'encodage et la transmission des données pour un `MediaStreamTrack` (en-US) sur un `RTCPeerConnection`.

`RTCRtpReceiver` (en-US)

Gère la réception et le décodage des données pour un `MediaStreamTrack` (en-US) sur un `RTCPeerConnection`.

`RTCRtpContributingSource` (en-US)

Contient des informations sur une source contributive donnée (CSRC), y compris l'heure la plus récente où un paquet que la source a contribué a été lu.

`RTCTrackEvent` (en-US)

Indique qu'un nouvel `MediaStreamTrack` (en-US) entrant a été créé et qu'un objet `RTCRtpReceiver` (en-US) associé a été ajouté à l'objet `RTCPeerConnection`.

`RTCConfiguration` (en-US)

Utilisé pour fournir des options de configuration pour un `RTCPeerConnection`.


`RTCSctpTransport` (en-US)

Fournit des informations qui décrivent un transport Stream Control Transmission Protocol (**SCTP**) et fournit aussi un moeyn d'accéder au transport Datagram Transport Layer Security (**DTLS**) sur lequel les paquets SCTP pour tous les canaux de données d'un `RTCPeerConnection` sont envoyés et reçus.

### Identité et sécurité

L'API WebRTC comprend un certain nombre d'interfaces pour gérer la sécurité et l'identité.

`RTCIdentityProvider`

Permet à un agent utilisateur de demander qu'une assertion d'identité soit générée ou validée.

`RTCIdentityAssertion` (en-US)

Représente l'identité de l'homologue distant de la connexion actuelle. Si aucun pair n'a encore été défini et vérifié, cette interface renvoie `null`. Une fois défini, il ne peut pas être modifié.

`RTCIdentityProviderRegistrar`

Enregistre un fournisseur d'identité (idP).

`RTCCertificate` (en-US)

Représente un certificat qu'un `RTCPeerConnection` utilise pour s'authentifier.

### Téléphonie

Ces interfaces sont liées à l'interactivité avec les réseaux téléphoniques publics commutés (RTPC).

`RTCDTMFSender` (en-US)

Gère le codage et la transmission de la signalisation DTMF (Dual-tone multi-frequency) pour une `RTCPeerConnection`.

`RTCDTMFToneChangeEvent` (en-US)

Indique l'occurence d'une multi-fréquence bicolore (DTMF). Cet événement ne bouillonne pas (sauf indication contraire) et n'est pas annulable (sauf indication contraire).

Guides
------

Introduction aux protocoles WebRTC (en-US)

Cet article présente les protocoles sur lesquels l'API WebRTC est construite.

Connectivité WebRTC

Un guide sur le fonctionnement des connexions WebRTC et sur la manière dont les différents protocoles et interfaces peuvent être utilisés ensemble pour créer de puissantes applications de communication.

Durée de vie d'une session WebRTC

WebRTC vous permet de créer une communication d'égal à égal de données arbitraires, audio ou vidéo - ou toute combinaison de celles-ci - dans une application de navigateur. Dans cet article, nous examinerons la durée de vie d'une session WebRTC, de l'établissement de la connexion à la fermeture de la connexion lorsqu'elle n'est plus nécessaire.

Signalisation et appel vidéo bidirectionnel

Un tutoriel et un exemple qui transforme un système de chat basé sur WebSocket créé pour un exemple précédent et ajoute la prise en charge de l'ouverture d'appels vidéo entre les participants. La connexion WebSocket du serveur de discussion est utilisée pour la signalisation WebRTC.

Utilisation des canaux de données WebRTC (en-US)

Ce guide explique comment utiliser une connexion homologue et un `RTCDataChannel` (en-US) associé pour échanger des données arbitraires entre deux homologues.

Utilisation de DTMF avec WebRTC (en-US)

La prise en charge de WebRTC pour l'interaction avec les passerelles reliées aux systèmes téléphoniques de la vieille école inclut la prise en charge de l'envoi de tonalités DTMF à l'aide de l'interface `RTCDTMFSender` (en-US). Ce guide montre comment procéder.

Tutoriels
---------

Amélioration de la compatibilité à l'aide de WebRTC adapter.js (en-US)

L'organisation WebRTC fournit sur GitHub l'adaptateur WebRTC pour contourner les problèmes de compatibilité dans les implémentations WebRTC de différents navigateurs. L'adaptateur est un shim JavaScript qui permet à votre code d'être écrit selon la spécification afin qu'il "fonctionne simplement" dans tous les navigateurs prenant en charge WebRTC.

Prendre des photos fixes avec WebRTC

Cet article explique comment utiliser WebRTC pour accéder à l'appareil photo sur un ordinateur ou un téléphone mobile avec prise en charge WebRTC et prendre une photo avec.

Un exemple RTCDataChannel simple (en-US)

L'interface `RTCDataChannel` (en-US) est une fonctionnalité qui vous permet d'ouvrir un canal entre deux pairs sur lequel vous pouvez envoyer et recevoir des données arbitraires. L'API est intentionnellement similaire à l'API WebSocket, de sorte que le même modèle de programmation peut être utilisé pour chacun.

Ressources
----------

### Protocoles

#### Protocoles propres au WebRTC

* Négociation de protocole de couche application pour les communications Web en temps réel
* Codec audio WebRTC et exigences de traitement
* Canaux de données RTCWeb
* Protocole de canal de données RTCWeb
* Communication Web en temps réel (WebRTC): transport multimédia et utilisation de RTP
* Architecture de sécurité WebRTC
* Transports pour RTCWEB

#### Protocoles de support associés

* Établissement de connectivité interactif (ICE): un protocole pour la traversée du traducteur d'adresses réseau (NAT) pour le protocole offre / réponse
* Utilitaires de traversée de session pour NAT (STUN)
* Schéma d'URI pour les utilitaires de traversée de session pour le protocole NAT (STUN)
* Traversée à l'aide de relais autour des identificateurs de ressources uniformes NAT (TURN)
* Un modèle d'offre / réponse avec protocole de description de session (SDP)
* Extension des utilitaires de traversée de session pour NAT (STUN) pour l'autorisation de tiers
Spécifications
--------------

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers  |
| Media Capture and Streams  |
| Media Capture from DOM Elements  |

En plus de ces spécifications définissant l'API nécessaire pour utiliser WebRTC, il existe plusieurs protocoles, répertoriés sous ressources.

Voir aussi
----------

* `MediaDevices`
* `MediaStreamEvent`
* `MediaStreamConstraints` (en-US)
* `MediaStreamTrack` (en-US)
* `MessageEvent`
* `MediaStream`
* Firefox multi-flux et renégociation pour Jitsi Videobridge
* Peering via le brouillard WebRTC avec SocketPeer
* À l'intérieur du bus de fête: création d'une application Web avec plusieurs flux vidéo en direct + graphiques interactifs