Quelles contraintes dois-je transmettre à getUserMedia() afin d'obtenir deux mediaStreamTracks vidéo ?
P粉818317410
P粉818317410 2023-10-23 17:03:58
0
1
629

Je peux obtenir des appareils multimédias de type « entrée vidéo » via navigator.mediaDevices.enumerateDevices() Promesse.

Je peux obtenir mediaStream via navigator.mediaDevices.getUserMedia(constraints)promis.

Pour avoir deux pistes vidéo dans userMedia, à quoi devrait constraints ressembler ?

P粉818317410
P粉818317410

répondre à tous(1)
P粉060528326

Vous pouvez obtenir au maximum une piste vidéo et une piste audio à chaque fois que vous appelez getUserMedia(), mais elle peut être appelée plusieurs fois. Cependant, cela peut demander à l'utilisateur plusieurs fois, en fonction de https, du navigateur et des actions de l'utilisateur.

Suivez la standard (nécessite actuellement adapter.js dans Chrome), pour obtenir un périphérique "d'entrée vidéo" spécifique, utilisez deviceId 约束将其 deviceId 传递到 getUserMedia dans :

navigator.mediaDevices.enumerateDevices()
.then(devices => {
  var camera = devices.find(device => device.kind == "videoinput");
  if (camera) {
    var constraints = { deviceId: { exact: camera.deviceId } };
    return navigator.mediaDevices.getUserMedia({ video: constraints });
  }
})
.then(stream => video.srcObject = stream)
.catch(e => console.error(e));
Le mot-clé

exact rend la contrainte obligatoire, garantissant qu'elle ne renvoie que la bonne contrainte, sinon elle échoue.

Si vous voulez deux caméras, vous devrez en utiliser une différente deviceId 再次调用 getUserMedia et espérer que le système d'exploitation que vous utilisez le prend en charge (par exemple, les téléphones ne le font généralement pas).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal