我知道如何从AudioContext解码AudioData
我不知道如何处理从decodeAudioData返回的AudioBuffer
假设我们返回了一些AudioBuffer
{
length: 12012146,
duration: 250.25304166666666,
sampleRate: 48000,
numberOfChannels: 2
}
现在,我可以从AudioBuffer中getChannelData((,它为我提供了一个关于AudioBuffer长度的数组。length。
我知道AudioBaffer的持续时间是AudioBuffer.length / AudioBuffer.sampleRate
。
我想要的是创建一个函数,该函数需要一个时间变量(以秒为单位(,然后根据该变量从AudioBuffer.getChannelData((返回数据
所以我会调用getChannelDataFromTime(seconds)
,它会给我返回一个未知大小的数组。
我是不是错过了一些能让我的工作更轻松的东西
您要查找的方法已经存在。这至少是一个非常相似的功能。它被称为copyFromChannel()
。它将把信道数据的一部分复制到给定的CCD_ 4中。
假设您想要复制前一秒的通道数据。在这种情况下,您需要首先创建一个Float32Array
,它可以保存样本一秒钟。
const seconds = 1;
const channelData = new Float32Array(Math.round(audioBuffer.sampleRate * seconds));
接下来,您可以将数据复制到Float32Array
中。
audioBuffer.copyFromChannel(channelData, 0, 0);
第一个数值参数定义了要从中复制数据的通道,第二个数值参数则定义了样本中的偏移量。