如何从 <video> 获取网络音频 api 中的单独频道?

How to get seperate channels in web audio api from <video>?

我正在尝试获取单独的音频格式 html 元素(文件为 mp4 格式)。文件有 6 声道音频,我想在每个声道上分别使用一个 PannerNode。

到目前为止,我可以从文件创建 AudioNode,但我不知道如何获得单独的通道以供以后在 PannerNode 中使用。

   var context = new (window.AudioContext || window.webkitAudioContext)();

   var source = context.createMediaElementSource(video);

我知道可以使用 XMLHttpRequest 获取 arraybuffer 并稍后使用 decodeAudioData 但我在测试时遇到了问题。如果可能的话,最好从 HTML 视频元素中获取一次文件。

MediaElementAudioSourceNode 的规范说明此节点将包含视频源的音频部分。要获取各个频道,请使用 ChannelSplitterNode。例如,

let splitter = new ChannelSplitterNode(context, {numberOfOutputs: 6});
source.connect(splitter);

现在 splitter 有 6 个单独的输出,一个用于您源中的每个通道。您现在可以根据需要处理各个频道。