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

我可以通过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学习者快速成长!