BaseAudioContext:createChannelSplitter() 方法
BaseAudioContext
接口的 createChannelSplitter()
方法用于创建一个 ChannelSplitterNode
,该节点用于访问音频流的各个通道并分别处理它们。
注意: ChannelSplitterNode()
构造函数是创建 ChannelSplitterNode
的推荐方法;请参阅 创建 AudioNode。
语法
js
createChannelSplitter(numberOfOutputs)
参数
numberOfOutputs
-
您想要单独输出的输入音频流中的通道数;如果未指定此参数,则默认为 6。
返回值
示例
以下简单示例显示了如何分离立体声轨道(例如,一段音乐)并以不同的方式处理左右声道。要使用它们,您需要使用 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-createchannelsplitter |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。