【发布时间】:2015-02-10 01:16:42
【问题描述】:
我正在尝试访问附加的多输入音频接口的所有音频通道。我知道频道应该在使用 MediaStream 创建后由 MediaStreamAudioSourceNode 节点公开:
navigator.getUserMedia({ audio: true }, function(stream) {
var input = audio.createMediaStreamSource(stream);
console.log(input.channelCount);
});
问题在于 input.channelCount 始终为 2,无论选择哪个设备作为用户媒体源。 Chrome 和 FireFox 也是如此。
媒体捕获和流规范指出:
单个 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 中的前两个通道。
有人知道这个问题的更多信息吗?我错过了什么吗?它还没有正确实施吗?我们如何才能修复它?
【问题讨论】:
-
为了记录,这里有几个类似的问题:stackoverflow.com/questions/27433904/…,stackoverflow.com/questions/26659560/… 他们没有详细说明,而且(迄今为止)尚未解决。
-
寻找支持线路输入的 USB 麦克风。因此,您只需使用该麦克风录制到网络音频,但麦克风将充当外部源的接口,尤其是如果该麦克风具有“线路输入”选项。
标签: javascript audio web-audio-api