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创建的流时,它只有一个轨道。据我所知,不可能检查该曲目的频道数量。因此,似乎:
getUserMedia仅将来自连接的设备的前两个音频流传输到单个MediaStreamTrack。
MediaStreamAudioSourceNode除了忽略MediaStreamTrack中的前两个通道外,还忽略了其他任何内容。
有人对此问题有更多信息吗?我想念什么吗?它执行不正确吗?我们如何去解决它?