为了获得两个视频 mediaStreamTrack,我应该传递哪些约束给 getUserMedia()?
P粉818317410
P粉818317410 2023-10-23 17:03:58
0
1
531

我可以通过 navigator.mediaDevices.enumerateDevices() Promise 获取“videoinput”类型的 mediaDevices。

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

为了在 userMedia 中拥有两个视频轨道,constraints 应该是什么样子?

P粉818317410
P粉818317410

全部回复(1)
P粉060528326

每次调用getUserMedia()时最多可以获得一个视频轨道和一个音频轨道,但可以多次调用。不过,这可能会多次询问用户,具体取决于 https、浏览器以及用户的操作。

遵循标准(目前需要在 Chrome 中使用 adapter.js ),以获得特定的“videoinput " 设备,使用 deviceId 约束将其 deviceId 传递到 getUserMedia 中:

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 关键字使约束成为必需,保证它只返回正确的约束,否则就会失败。

如果您想要两个摄像头,则必须使用不同的 deviceId 再次调用 getUserMedia,并希望您所在的操作系统支持它(例如,手机通常不要)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!