【发布时间】:2014-08-19 22:57:41
【问题描述】:
我正在尝试使用网络音频 API 创建一个音频流,其中左右声道由不同的振荡器生成。左声道的输出是正确的,但右声道是0。根据spec,我看不出我做错了什么。
在 Chrome 开发中测试。
代码:
var context = new AudioContext();
var l_osc = context.createOscillator();
l_osc.type = "sine";
l_osc.frequency.value = 100;
var r_osc = context.createOscillator();
r_osc.type = "sawtooth";
r_osc.frequency.value = 100;
// Combine the left and right channels.
var merger = context.createChannelMerger(2);
merger.channelCountMode = "explicit";
merger.channelInterpretation = "discrete";
l_osc.connect(merger, 0, 0);
r_osc.connect(merger, 0, 1);
var dest_stream = context.createMediaStreamDestination();
merger.connect(dest_stream);
// Dump the generated waveform to a MediaStream output.
l_osc.start();
r_osc.start();
var track = dest_stream.stream.getAudioTracks()[0];
var plugin = document.getElementById('plugin');
plugin.postMessage(track);
【问题讨论】:
-
为此创建了一个 JSFiddle。 jsfiddle.net/notthetup/0x11erbb
-
似乎与channelCountMode有关。不将其设置为“显式”似乎可以解决它。但我不知道为什么。
-
删除 channelCountMode 有效。谢谢。
-
但我不知道为什么会这样。默认的 channelCount 是 2。因此,即使您将其设置为显式,并且不设置 channelCount,它也应该向上合并为立体声。错误?
标签: javascript audio web-audio-api