作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,如果用户可以生成音频流,则他可以调用电话。因此,我需要访问麦克风(音频流)。如果没有它,应用程序应该抛出错误。视频是可选的。因此,我调用 navigator.getUserMedia
并设置 约束
,如下所示:
{ 音频:true,视频:false }
当麦克风不存在时,它会抛出错误,就像我需要的那样。但这样做的副作用是,如果用户还可以使用摄像头,则视频不会出现在流中。
但是,如果我将 audio
和 video
设置为 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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!