使用Web Audio API隔离通道

时间:2015-09-26 23:14:36

标签: javascript web-audio

我试图仅在我的环绕声频道播放音频,但似乎任何时候我连接到特定频道时它也播放其他频道

我的设置和audioContext.destination配置为4个频道

var merger = context.createChannelMerger(4);
audio.connect(merger, 0, 2);
audio.connect(merger, 0, 3);
merger.connect(context.destination);

我的音频是立体声(但我只关心一个频道),所以我也尝试先拆分它

var merger = context.createChannelMerger(4),
    splitter = context.createChannelSplitter(2);
audio.connect(splitter);
splitter.connect(merger, 0, 2);
splitter.connect(merger, 0, 3);
merger.connect(context.destination);
奇怪的是,如果我只将它连接到左/右声道它会按预期播放。

我在Windows 10上运行chrome 45

2 个答案:

答案 0 :(得分:1)

我认为您错误地将拆分器连接到合并。你可能想要 splitter.connect(merger, 0, 2); splitter.connect(merger, 1, 3); 然后立体声源将被分割并发送到输出的通道2和3。

答案 1 :(得分:0)

您可以分享AudioContext的设置代码吗?它需要针对单个路由进行一些特定设置。请参阅以下示例:

var context = new AudioContext();
var maxChannelCount = context.destination.maxChannelCount;

context.destination.channelCount = maxChannelCount;    
var merger = context.createChannelMerger(maxChannelCount);
merger.connect(context.destination);

// This will play the sound on 3rd and 4th speakers for 1 second.
var osc = context.createOscillator();
osc.connect(merger, 0, 2);
osc.connect(merger, 0, 3);
osc.start();
osc.stop(1.0);