AudioContext.createChannelSplitter()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

The createChannelSplitter() method of the AudioContext Interface is used to create a ChannelSplitterNode, which is used to access the individual channels of an audio stream and process them separately.

Syntax

js
var audioCtx = new AudioContext();
var splitter = audioCtx.createChannelSplitter(2);

参数

numberOfOutputs

你期待将输入音频分割成的声道道数目; 当不传入参数时,默认为 6

Returns

Example

下面这个简单的例子告诉你怎样分割一个双声道音轨 (或者说一段音乐), 以及对于左右声道不同的处理。要使用它们,你需要用到AudioNode.connect(AudioNode)方法的第二个和第三个参数,他们会指定链接声道源的序号和链接到的声道序号。

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

  // Reduce the volume of the left channel only
  var gainNode = ac.createGain();
  gainNode.gain.value = 0.5;
  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);

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

规格

Specification
Web Audio API
# dom-baseaudiocontext-createchannelsplitter

浏览器兼容性

BCD tables only load in the browser

参见