BaseAudioContext:createChannelMerger() 方法

基线 广泛可用

此功能已成熟稳定,可在许多设备和浏览器版本上运行。它自以下时间起在各个浏览器中可用: 2021 年 4 月.

BaseAudioContext 接口的 createChannelMerger() 方法创建一个 ChannelMergerNode,它将来自多个音频流的通道合并到单个音频流中。

注意:ChannelMergerNode() 构造函数是创建 ChannelMergerNode 的推荐方法;请参阅创建 AudioNode

语法

js
createChannelMerger(numberOfInputs)

参数

numberOfInputs

输入音频流中的通道数,输出流将包含这些通道;如果未指定此参数,则默认为 6。

返回值

一个 ChannelMergerNode

示例

以下示例演示了如何分离立体声轨道(例如,一段音乐),并对左右声道进行不同的处理。要使用它们,您需要使用 AudioNode.connect(AudioNode) 方法的第二个和第三个参数,这些参数允许您指定要从中连接的通道的索引以及要连接到的通道的索引。

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

  // Reduce the volume of the left channel only
  const gainNode = ac.createGain();
  gainNode.gain.setValueAtTime(0.5, ac.currentTime);
  splitter.connect(gainNode, 0);

  // Connect the splitter back to the second input of the merger: we
  // effectively swap the channels, here, reversing the stereo image.
  gainNode.connect(merger, 0, 1);
  splitter.connect(merger, 1, 0);

  const dest = ac.createMediaStreamDestination();

  // Because we have used a ChannelMergerNode, we now have a stereo
  // MediaStream we can use to pipe the Web Audio graph to WebRTC,
  // MediaRecorder, etc.
  merger.connect(dest);
});

规范

规范
Web Audio API
# dom-baseaudiocontext-createchannelmerger

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅