Capture et contraintes liées à l'élément multimédia

La partie multimédia de WebRTC explique comment accéder au matériel capable de capturer vidéo et audio (caméras et micros, par exemple), ainsi que la manière dont les contenus multimédias sont diffusés travail. Il aborde également les supports d'affichage, qui permettent à une application la capture.

Périphériques multimédias

Il permet d'accéder à l'ensemble des caméras et micros compatibles avec le navigateur. gérées via l'objet navigator.mediaDevices. Les applications peuvent récupérer la liste actuelle des appareils connectés et écouter les modifications, puisque de nombreux les caméras et les microhpones se connectent via USB et peuvent être connectés et déconnectés pendant le cycle de vie de l'application. Puisque l'état d'un média appareil peut changer à tout moment, nous vous recommandons d'enregistrer les applications les changements d'appareil afin de les gérer correctement.

Contraintes

Lorsque vous accédez à des périphériques multimédias, il est recommandé de fournir que possible. Bien qu'il soit possible d'ouvrir l'appareil photo par défaut et avec une contrainte simple, il peut diffuser un flux multimédia les plus optimales pour l'application.

Les contraintes spécifiques sont définies dans un objet MediaTrackConstraint, l'une pour l'audio et une 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, booléenne ou de chaîne), une plage (LongRange ou DoubleRange avec une valeur minimale et (valeur maximale) ou un objet avec une définition ideal ou exact. Pour une une valeur spécifique, le navigateur tente de trouver un élément 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 correspondant exactement à cette contrainte renvoyé.

Near

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

Plage

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

Mot clé 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 MediaTrackSettings actuellement appliqué.

Il est également possible de mettre à jour les contraintes d'un titre à partir d'un appareil multimédia ouvertes, en appelant applyConstraints() sur le canal. Ainsi, reconfigurer un périphérique multimédia sans avoir à fermer au préalable flux existant.

Contenu multimédia display

Application qui veut pouvoir effectuer des captures d'écran et des enregistrements doivent utiliser l'API Display Media. La fonction getDisplayMedia() (qui fait partie de navigator.mediaDevices est semblable à getUserMedia() et est utilisé pour objectif d'ouvrir le contenu de l'écran (ou une partie de celui-ci, par exemple fenêtre). Le MediaStream renvoyé fonctionne de la même manière que lorsque vous utilisez getUserMedia()

Les contraintes pour getDisplayMedia() diffèrent de celles utilisées pour la vidéo ou audio.

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

L'extrait de code ci-dessus montre comment les contraintes spéciales pour l'enregistrement d'écran fonctionne. Notez qu'il est possible qu'elles ne soient pas compatibles avec tous les navigateurs compatibles la compatibilité avec les médias.

Flux et titres

Une MediaStream représente un flux de contenu multimédia composé de pistes. (MediaStreamTrack) d'audio et de vidéo. Vous pouvez récupérer tous les titres MediaStream en appelant MediaStream.getTracks(), qui renvoie un tableau de Objets MediaStreamTrack.

MediaStreamTrack

Un MediaStreamTrack possède une propriété kind qui est audio ou video. indiquant le type de média qu'elle représente. Vous pouvez couper le son de chaque piste en appuyant sur sa propriété enabled. La propriété booléenne remote d'une piste indique si elle provient d'un RTCPeerConnection et d'un pair distant.