Maison  >  Questions et réponses  >  le corps du texte

Quelles contraintes dois-je transmettre à getUserMedia() afin d'obtenir deux mediaStreamTracks vidéo ?

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粉818317410P粉818317410382 Il y a quelques jours597

répondre à tous(1)je répondrai

  • P粉060528326

    P粉0605283262023-10-24 00:02:22

    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).

    répondre
    0
  • Annulerrépondre