【问题标题】:how to use .getusermedia() without mic?如何在没有麦克风的情况下使用 .getusermedia()?
【发布时间】:2020-11-15 09:24:01
【问题描述】:
【问题讨论】:
标签:
javascript
webrtc
android-camera
microphone
getusermedia
【解决方案1】:
.getusermedia() 是否总是需要麦克风权限,即使我使用
机箱不需要任何音频输入?
否(但通常会根据浏览器不断要求相机权限)。
有没有办法通过询问和仅使用相机来使其工作?
是的,您的链接为此提供了代码。通过设置 audio: false 表示不寻求 Mic 权限,不接收音频,不输出音频。它将使用默认摄像头并仅提供视频。
如果您将视频翻转为 false 并将音频翻转为 true,则 chrome 仅要求您提供麦克风权限。但是,根据浏览器,您将被要求为第一个会话或每个会话提供相机权限。
我正在使用下面的示例 -
https://webrtc.github.io/samples/src/content/getusermedia/gum/ - 它
看起来音频约束是错误的 - 但那是音频输入吗?
audio:true 将使用您设备上的默认音频输入和输出,您可以通过 deviceId 指定其他来源(视频、音频输入和音频输出)。通过使用您发布的音频设置为 false 的示例代码,您只是在寻求相机权限。如果您将其设置为 true,它将使用默认音频输入(通常与相机相同的设备)和输出(扬声器)。
令人困惑的是权限弹出。如果您只寻找音频,它会询问“website_name 想要使用您的麦克风”。如果您只寻找相机,它会询问“website_name 想要使用您的相机”,如果您寻找视频和音频,则会询问相同的消息。
您可以通过在此处阻止 chrome 中的麦克风权限来测试这一点:
chrome://settings/content/siteDetails?site=https%3A%2F%2Fwebrtc.github.io%3A443 为https://webrtc.github.io/samples/src/content/getusermedia/gum/
或者在 android 上进入设置 -> 站点设置 -> 麦克风 -> 阻止
使用您提供的链接(带有音频:false),当我手动阻止 Chrome macOS、Windows 10 和 Android 上的麦克风访问时,它仍然有效。通常在第一次运行时,它只在 chrome 上请求一次相机权限。
【解决方案2】:
在getUserMedia 中传递视频和音频参数。分别设置为true 或false 允许或不允许。
navigator.mediaDevices.getUserMedia({
audio: false,
video: true
})