2015-09-26 125 views
2

我试图只在我的环绕声道播放音频信道,但似乎我随时连接到特定的通道也发挥出其他的人以及隔离Web Audio API使用

我的设置和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

回答

1

我想你分离器正确连接到运行合并铬45。您可能想要 splitter.connect(merger, 0, 2); splitter.connect(merger, 1, 3); 然后立体声源将被分割并发送到输出的通道2和3。

+0

对不起,我忘了我提到我的音频文件实际上是单声道,但它的阅读是立体声通道,所以我并不真正关心它的只有一个通道,如果这是你的代码做什么 –

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