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.