AudioBuffer: copyFromChannel() 方法

Baseline 已广泛支持

此特性已得到良好支持,可在多种设备和浏览器版本上使用。自 2021 年 4 月起,所有浏览器均已支持此特性。

AudioBuffer 接口的 copyFromChannel() 方法将 AudioBuffer 指定通道的音频样本数据复制到一个指定的 Float32Array 中。

语法

js
copyFromChannel(destination, channelNumber, startInChannel)

参数

destination

一个用于复制通道样本的 Float32Array

channelNumber

当前 AudioBuffer 中要从中复制通道数据的通道编号。

startInChannel 可选

一个可选的偏移量,表示从源通道的缓冲区中开始复制样本的位置。如果未指定,则默认假定值为 0(缓冲区的开头)。

返回值

无(undefined)。

异常

indexSizeError

其中一个输入参数的值超出了可接受的范围。

  • channelNumber 的值指定了一个不存在的通道号(即,它大于或等于该通道在 AudioBuffer 上的 numberOfChannels 的值)。
  • startInChannel 的值超出了源缓冲区中已存在样本的当前范围;也就是说,它大于其当前的 length

示例

此示例创建一个新的音频缓冲区,然后将另一个通道的样本复制到其中。

js
const myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
const anotherArray = new Float32Array(length);
myArrayBuffer.copyFromChannel(anotherArray, 1, 0);

规范

规范
Web Audio API
# dom-audiobuffer-copyfromchannel

浏览器兼容性

另见