来自特定麦克风的Web Audio Api输入

时间:2015-07-07 09:16:33

标签: javascript audio-recording web-audio getusermedia

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

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

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

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

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

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

答案:

  

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

录制设备屏幕截图 - http://i.stack.imgur.com/jUrCw.jpg(无法添加实际照片)

会很感激的建议。

谢谢! 阿维。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

您可以使用Web Audio API选择所需的任何记录设备,并查看https://jsfiddle.net/bomzj/beap6n2g/