ChannelMergerNode - 用于将不同的单声道输入重新组合为单个输出

ChannelMergerNode 接口用于将不同的单声道输入重新组合为单个输出,通常与其相反的 ChannelSplitterNode 接口结合使用。每个输入用于填充输出的一个通道。这对于分别访问每个通道是有用的,例如,在执行通道混合时,增益必须分别控制在每个通道上。

如果 ChannelMergerNode 只有一个输出,但是输入与要合并的通道一样多;输入的数量被定义为其构造函数的一个参数和对 AudioContext.createChannelMerger 的调用。在没有给出值的情况下,它将默认为 6

使用 ChannelMergerNode 可以创建比渲染硬件能够处理的通道更多的输出。在这种情况下,当信号发送到 AudioContext.listener 对象时,多余的通道将被忽略。

输入数量 变量; 默认为 6。
输出数量 1
通道计数模式 "max"
通道数 2(在默认计数模式下不使用)
通道解释 "speakers"

构造函数

ChannelMergerNode()

创建一个新的 ChannelMergerNode 对象实例。

属性

没有特有的属性;从其父接口 AudioNode 继承了属性。

方法

没有特有的属性;从其父接口 AudioNode 继承了方法。

实例

下面的实例说明如何分离立体声轨道(例如一段音乐),并以不同的方式处理左右声道。要使用它们,您需要使用 AudioNode.connect(AudioNode) 方法的第二个和第三个参数,该参数可以同时指定要从其连接的通道的索引和要连接的频道。

var ac = new AudioContext();
ac.decodeAudioData(someStereoBuffer, function(data) {
 var source = ac.createBufferSource();
 source.buffer = data;
 var splitter = ac.createChannelSplitter(2);
 source.connect(splitter);
 var merger = ac.createChannelMerger(2);

 // 仅减小左声道的音量
 var gainNode = ac.createGain();
 gainNode.gain.setValueAtTime(0.5, ac.currentTime);
 splitter.connect(gainNode, 0);

 // 将分离器连接回合并的第二个输入:我们有效地交换通道,在这里,反转立体声图像。
 gainNode.connect(merger, 0, 1);
 splitter.connect(merger, 1, 0);

 var dest = ac.createMediaStreamDestination();

 // 因为我们使用了 `ChannelMergerNode`,所以现在有了立体声 `MediaStream`,
 // 可以用来将 Web 音频图通过管道传输到 WebRTC,MediaRecorder 等。
 merger.connect(dest);
});

规范

规范 状态 备注
Web Audio API
ChannelMergerNode 的定义
工作草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持14≤1825 不支持156
ChannelMergerNode() 构造函数55≤7953 不支持42 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持18 未知26 未知14 支持
ChannelMergerNode() 构造函数5555 未知53 未知42 未知

相关链接