Web音频API中的ChannelMergerNode不合并频道

时间:2014-08-19 04:37:35

标签: javascript audio web-audio

我正在尝试使用网络音频API创建一个音频流,其中左右声道由不同的振荡器生成。左声道的输出是正确的,但右声道是0.根据规格,我看不出我做错了什么。

在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);

1 个答案:

答案 0 :(得分:1)

channelInterpretation意味着合并节点将立体声振荡器连接混合到两个通道 - 但是因为你有一个显式的channelCountMode,它将每个连接的两个通道堆叠起来以获得四个通道(因为它只是放弃了前两个频道。不幸的是,后两个通道是来自第二个输入的两个通道 - 因此它会丢失来自第二个连接的所有通道。

一般来说,你不应该使用channelCount解释内容,它会为立体声做正确的事情。