API MediaStream
===============

L'**API Processing MediaStream**, souvent appelée *Media Stream API* ou *Stream API*, est la partie de WebRTC décrivant un flux de données audio ou vidéo, les méthodes pour les manipuler, les contraintes associées au type de données, les erreurs et succès des callbacks avec les données asynchrones, et les évènements déclenchés durant le processus.

Concepts de base
----------------

L'API est basée sur la manipulation de l'objet `MediaStream` représentant un flux de données audio ou vidéo. Typiquement, un `MediaStream` est une simple chaine URL qui peut être utilisée pour référencer une donnée stockée dans un `File` DOM, ou un objet `Blob` crée avec `window.URL.createObjectURL()` (en-US), tel que décrit dans cette vidéo (en-US).

Un `MediaStream` consiste en zéro ou plus objets `MediaStreamTrack` (en-US), représentant différentes **pistes** audio ou vidéos. Chaque `MediaStreamTrack` (en-US) peut avoir un ou plusieurs **canal**. Le canal représente la plus petite unité d'un flux média, tel un signal audio d'un haut-parleur, séparé en *gauche* et *droite* sur une piste audio en stéréo.

Les objets `MediaStream` ont une seule **entrée** et une seule **sortie**. Un objet `MediaStream` généré par getUserMedia() est dit *local*, et sa source d'entrée provient de l'une des caméras ou des microphones de l'utilisatrice ou l'utilisateur. Un objet `MediaStream` non local peut représenter un média tel que `<video>` ou `<audio>`, un flux provenant du réseau et obtenu via l'API WebRTC *RTCPeerConnection*, ou un flux créé en utilisant l'API *Web Audio* `MediaStreamAudioDestinationNode` (en-US).

La sortie d'un objet `MediaStream` est liée à un **consommateur**. Elle peut être un élément média tel que `<audio>` ou `<video>`, l'API WebRTC *RTCPeerConnection* ou l'API *Web Audio* `MediaStreamAudioDestinationNode` (en-US).

Interfaces
----------

Dans ces articles de référence, on trouvera les informations fondamentales sur les différentes interfaces qui composent l'API *Media Capture and Streams API*.

* `BlobEvent`
* `CanvasCaptureMediaStreamTrack` (en-US)
* `InputDeviceInfo` (en-US)
* `MediaDeviceKind`
* `MediaDeviceInfo` (en-US)
* `MediaDevices`
* `MediaStream`
* `MediaStreamConstraints` (en-US)
* `MediaStreamEvent`
* `MediaStreamTrack` (en-US)
* `MediaStreamTrackEvent` (en-US)
* `MediaTrackCapabilities`
* `MediaTrackConstraints`
* `MediaTrackSettings` (en-US)
* `MediaTrackSupportedConstraints` (en-US)
* `NavigatorUserMedia`
* `NavigatorUserMediaError`
* `OverconstrainedError` (en-US)
* `URL`

Les premières versions de la spécification pour Media Capture and Streams API incluaient des interfaces séparées `AudioStreamTrack` et `VideoStreamTrack`, chacunes basées sur `MediaStreamTrack` (en-US) et qui représentaient des types de flux différents. Celles-ci n'existent plus et il faut utiliser `MediaStreamTrack` directement à la place.

Évènements
----------

* `addtrack` (en-US)
* `ended` (en-US)
* `mute` (en-US)
* `overconstrained`
* `removetrack` (en-US)
* `unmute` (en-US)
Guides et tutorials
-------------------

Les articles qui suivent fournissent des manuels et guides pour utiliser cette API et réaliser des certaines tâches avec elle.

Prendre des photos avec getUserMedia()Dans cet article, nous verrons comment utiliser `navigator.mediaDevices.getUserMedia()` pour accéder à la caméra de votre ordinateur ou de votre téléphone afin de prendre des photos avec.

Compatibilité des navigateurs
-----------------------------

### api.MediaStream

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.MediaStreamTrack

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.MediaDevices

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.MediaDeviceInfo

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.InputDeviceInfo

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.CanvasCaptureMediaStreamTrack

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

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

* WebRTC - la page d'introduction à l'API
* `mediaDevices.getUserMedia()`
* Prendre des clichés avec WebRTC : un tutoriel/une démonstration sur l'utilisation de `getUserMedia()`.