Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Capture média et contraintes

La partie multimédia de WebRTC explique comment accéder au matériel capable de capturer de la vidéo et de l'audio, comme les caméras et les microphones, ainsi que le fonctionnement des flux multimédias. Il couvre également les supports d'affichage, c'est ainsi qu'une application peut effectuer une capture d'écran.

Appareils multimédias

Toutes les caméras et tous les microphones pris en charge par le navigateur sont accessibles et gérés via l'objet navigator.mediaDevices . Les applications peuvent récupérer la liste actuelle des appareils connectés et également écouter les changements, car de nombreux appareils photo et micro-appareils se connectent via USB et peuvent être connectés et déconnectés pendant le cycle de vie de l'application. Étant donné que l'état d'un périphérique multimédia peut changer à tout moment, il est recommandé que les applications s'enregistrent pour les modifications de périphérique afin de gérer correctement les modifications.

Contraintes

Lors de l'accès aux périphériques multimédias, il est recommandé de fournir des contraintes aussi détaillées que possible. Bien qu'il soit possible d'ouvrir la caméra et le microphone par défaut avec une simple contrainte, il peut fournir un flux multimédia qui est loin d'être le plus optimal pour l'application.

Les contraintes spécifiques sont définies dans un objet MediaTrackConstraint , un pour l'audio et un pour la vidéo. Les attributs de cet objet sont de type ConstraintLong , ConstraintBoolean , ConstraintDouble ou ConstraintDOMString . Il peut s'agir d'une valeur spécifique (par exemple, un nombre, une valeur booléenne ou une chaîne), une plage ( LongRange ou DoubleRange avec une valeur minimale et maximale) ou un objet avec une définition ideal ou exact . Pour une valeur spécifique, le navigateur tentera de choisir quelque chose d'aussi proche que possible. Pour une plage, la meilleure valeur de cette plage sera utilisée. Lorsque exact est spécifié, seuls les flux multimédias qui correspondent exactement à cette contrainte seront renvoyés.

Près

 // Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}
 

Intervalle

 // Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}
 

Exact

 // Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}
 

Pour déterminer la configuration réelle d'une certaine piste d'un flux multimédia, nous pouvons appeler MediaStreamTrack.getSettings() qui renvoie les MediaTrackSettings actuellement appliqués.

Il est également possible de mettre à jour les contraintes d'une piste à partir d'un périphérique multimédia que nous avons ouvert, en appelant applyConstraints() sur la piste. Cela permet à une application de reconfigurer un périphérique multimédia sans avoir à fermer au préalable le flux existant.

Afficher les médias

Une application qui souhaite pouvoir effectuer une capture d'écran et un enregistrement doit utiliser l'API Display Media. La fonction getDisplayMedia() (qui fait partie de navigator.mediaDevices est similaire à getUserMedia() et est utilisée pour ouvrir le contenu de l'affichage (ou une partie de celui-ci, comme une fenêtre). Le MediaStream renvoyé fonctionne comme lors de l'utilisation de getUserMedia() .

Les contraintes de getDisplayMedia() diffèrent de celles utilisées pour l'entrée vidéo ou audio ordinaire.

 {
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}
 

L'extrait de code ci-dessus montre comment fonctionnent les contraintes spéciales pour l'enregistrement d'écran. Notez que ceux-ci peuvent ne pas être pris en charge par tous les navigateurs prenant en charge les supports d'affichage.

Flux et pistes

Un MediaStream représente un flux de contenu multimédia, qui se compose de pistes ( MediaStreamTrack ) audio et vidéo. Vous pouvez récupérer toutes les pistes de MediaStream en appelant MediaStream.getTracks() , qui renvoie un tableau d'objets MediaStreamTrack .

MediaStreamTrack

Un MediaStreamTrack a une propriété kind qui est soit audio soit video , indiquant le type de média qu'il représente. Chaque piste peut être coupée en basculant sa propriété enabled . Une piste a une propriété booléenne remote qui indique si elle provient d'un RTCPeerConnection et provient d'un pair distant.