gpt4 book ai didi

javascript - 在 getUserMedia 中使视频流可选

转载 作者:行者123 更新时间:2023-12-02 06:58:22 28 4
gpt4 key购买 nike

在我的应用程序中,如果用户可以生成音频流,则他可以调用电话。因此,我需要访问麦克风(音频流)。如果没有它,应用程序应该抛出错误。视频是可选的。因此,我调用 navigator.getUserMedia 并设置 约束,如下所示:

{ 音频:true,视频:false }

当麦克风不存在时,它会抛出错误,就像我需要的那样。但这样做的副作用是,如果用户还可以使用摄像头,则视频不会出现在流中。

但是,如果我将 audiovideo 设置为 true,当用户有麦克风但没有麦克风时,我会出现错误访问相机(根据我的应用程序逻辑,这是可以的)

如何使视频流可选 get getUserMedia

最佳答案

现在还有另一种方法。现在,您可以在调用 getUserMedia 之前直接检查用户是否有摄像头和/或麦克风:

navigator.mediaDevices.enumerateDevices()
.then(devices => {
const cams = devices.filter(device => device.kind == "videoinput");
const mics = devices.filter(device => device.kind == "audioinput");

const constraints = { video: cams.length > 0, audio: mics.length > 0 };
return navigator.mediaDevices.getUserMedia(constraints);
})
.then(stream => video.srcObject = stream)
.catch(failed);

另一个答案也有效,但这可能更清晰一些。

请注意,这是使用 enumerateDevices ,它返回包含信息的设备列表。出于隐私原因,在调用 getUserMedia 之前返回的信息量是有限的,但它仍然会显示用户是否拥有至少一个摄像头和/或至少一个麦克风,这就是我们在这里所需要的。

关于javascript - 在 getUserMedia 中使视频流可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308486/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com