我可以通过navigator.mediaDevices.enumerateDevices()
承诺获得'videoinput'类型的mediaDevices。
我可以通过navigator.mediaDevices.getUserMedia(constraints)
承诺获得mediaStream。
为了在userMedia中拥有两个视频曲目,constraints
应该是什么样的?
答案 0 :(得分:12)
每次拨打getUserMedia()
时,您都可以获得最多一个视频轨道和一个音频轨道,但您可以多次调用它。这可能会多次询问用户,具体取决于https,浏览器以及用户的操作。
关注the standard(此时需要在Chrome中使用adapter.js),以获得特定的"视频输入"设备,使用deviceId
约束将getUserMedia
传递给deviceId
:
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));
exact
关键字需要约束,保证它只返回正确的约束,或者失败。
如果您需要两台相机,则必须使用不同的getUserMedia
再次拨打deviceId
,并希望您所使用的操作系统支持它(例如手机通常不会#&# 39; t)的