使用WebAudio API访问音频接口的所有输入通道?

ste*_*and 5 javascript audio web-audio-api

我正在尝试访问附加的多输入音频接口的所有音频通道。我知道使用MediaStream创建通道后,该通道应该由MediaStreamAudioSourceNode节点公开:

navigator.getUserMedia({ audio: true }, function(stream) {
    var input = audio.createMediaStreamSource(stream);
    console.log(input.channelCount);
});
Run Code Online (Sandbox Code Playgroud)

问题是无论选择哪个设备作为用户媒体源,input.channelCount始终为2。Chrome和FireFox确实如此。

Media Capture and Streams规范指出:

单个MediaStreamTrack可以表示多声道内容,例如立体声或5.1音频或立体视频,其中声道之间具有明确定义的关系。关于频道的信息可能会通过其他API(例如[WEBAUDIO])公开,但是此规范不提供对频道的直接访问。

http://w3c.github.io/mediacapture-main/getusermedia.html#introduction

这表明没有办法通过getUserMedia调用来影响通道数量(除非我缺少一些特殊的约束参数)。

MediaStreamAudioSourceNode的WebAudio规范指出:

MediaStream中的第一个AudioMediaStreamTrack将用作音频源。[...]输出的通道数与AudioMediaStreamTrack的通道数相对应。

http://webaudio.github.io/web-audio-api/#MediaStreamAudioSourceNode

当我检查getUserMedia创建的流时,它只有一个轨道。据我所知,不可能检查该曲目的频道数量。因此,似乎:

  1. getUserMedia仅将来自连接的设备的前两个音频流传输到单个MediaStreamTrack。

  2. MediaStreamAudioSourceNode除了忽略MediaStreamTrack中的前两个通道外,还忽略了其他任何内容。

有人对此问题有更多信息吗?我想念什么吗?它执行不正确吗?我们如何去解决它?

cwi*_*lso 8

Chrome 还不支持这一点。已知问题。红灿一直在看。