【问题标题】:Web Audio Api input from specific microphone来自特定麦克风的 Web Audio Api 输入
【发布时间】:2015-09-24 16:48:12
【问题描述】:

我正在使用 Web Audio Api ( navigator.getUserMedia({audio: true}, function, function) ) 进行音频录制。

如果用户有多个麦克风设备,我可以选择所需的录音设备吗?

我遇到了一个有问题的情况,即全新的戴尔笔记本电脑(运行 Windows 8.1)有 2 个麦克风设备(板载和外部)并且外部设备设置为默认值(由操作系统设置为默认值)。

正如预期的那样,在录制时,输入来自外部麦克风,这意味着 - 静音 - 没有实际输入。

我可以从技术上解决这个问题并从板载设备中捕获音频吗?

在搜索时,我发现this question 谈到了检测声卡。

来自答案:

您无法控制延迟。您无法检测到实际的声音设备。您所能确定的只是浏览器是否允许您访问音频通道,以及它们的数量。我还发现,不管另一边是什么,Chrome 只会打开一个立体声通道。 (它还将单声道设备视为立体声,将第一个通道复制到 L 和 R 通道。)Firefox 也有类似的问题。

录制设备截图 - http://i.stack.imgur.com/jUrCw.jpg(还不能添加实际照片)

不胜感激。

谢谢! 艾维。

【问题讨论】:

    标签: javascript audio-recording web-audio-api getusermedia


    【解决方案1】:

    您可以(选择输入设备) - 查看https://webaudiodemos.appspot.com/input/index.html,它允许用户选择输入。请注意,除非您安全地提供服务(https 而不是 http),否则您将无法访问实际名称。

    【讨论】:

    • 这仅适用于 Chrome。你对如何处理 Firefox 有什么建议吗?
    • 我可以检测哪个设备是默认设备吗?谢谢!
    • @AviAnkona 一些操作系统,如 OSX 有一个“虚拟”默认设备,通常在其标签中包含“默认”一词(仅在使用期间或用户授予持久权限时可用),但是并非每个操作系统都这样做,而且我不知道有任何其他方法来检测默认值。请参阅我对 jesup 关于 Firefox 的回答的评论。
    【解决方案2】:

    您想使用设备枚举和 deviceid 约束。根据@cwilso 的回答,https://webaudiodemos.appspot.com/input/index.html 是一个适用于 Chrome 的示例。如果您更改操作系统中的默认麦克风,Chrome 应该将其拾取。

    Firefox 正在添加 deviceId 和约束,但它们尚未发布。目前在 Firefox 上,用户可以选择任何音频设备进行输入,如果他们在批准时没有选择“始终允许”(如果他们选择了,那么它将选择默认设备而不询问用户)。请注意,Allow Always 需要通过 https 加载,这不是默认操作(与 Chrome 不同)。

    【讨论】:

    【解决方案3】:

    您可以使用Web Audio API 选择您想要的任何录音设备,请查看https://jsfiddle.net/bomzj/beap6n2g/

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2011-03-07
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多