Maison > Questions et réponses > le corps du texte
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粉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).