为了获得两个视频mediaStreamTracks,我应该向getUserMedia()传递什么约束?

时间:2015-11-17 16:13:25

标签: constraints webrtc getusermedia

我可以通过navigator.mediaDevices.enumerateDevices()承诺获得'videoinput'类型的mediaDevices。

我可以通过navigator.mediaDevices.getUserMedia(constraints)承诺获得mediaStream。

为了在userMedia中拥有两个视频曲目,constraints应该是什么样的?

1 个答案:

答案 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)的