如何在没有麦克风的情况下使用 .getusermedia()?

how to use .getusermedia() without mic?

即使我的用例不需要任何音频输入,.getusermedia() 是否总是需要麦克风权限?

有没有办法通过询问和仅使用相机来使其工作?

我正在使用下面的示例 - https://webrtc.github.io/samples/src/content/getusermedia/gum/ - 音频约束似乎是错误的 - 但这是音频输入吗?

getUserMedia中传递视频和音频参数。通过分别使它们 truefalse 来允许或不允许。

navigator.mediaDevices.getUserMedia({
  audio: false,
  video: true
})

Does .getusermedia() always require mic permissions even if my use case doesn't require any audio input?

否(但通常会根据浏览器不断询问相机权限)。

Is there a way to make it work by asking and using ONLY camera?

是的,您的 link 提供了代码。通过设置audio: false表示不寻求Mic权限,不收音频不输出音频。它将使用默认摄像头并仅提供视频。

如果您将视频设置为 false,将音频设置为 true chrome 仅要求您提供麦克风权限。但是,根据浏览器的不同,您将被要求为第一个会话或每个会话提供相机权限。

I'm using the sample below - https://webrtc.github.io/samples/src/content/getusermedia/gum/ - it looks like audio constraint is false - but is that audio input?

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 上转到设置 -> 站点设置 -> 麦克风 -> 阻止

使用您提供的 link(使用 audio:false),当我在 Chrome macOS、Windows 10 和 Android。通常在第一个 运行 它只在 chrome.

请求相机权限一次