我知道怎么做 decodeAudioData 从 音频上下文. 我不知道的是,如何处理返回的 音频缓冲器 从 decodeAudioData. 让我们假设我们有一些返回的 音频缓冲器
{
length: 12012146,
duration: 250.25304166666666,
sampleRate: 48000,
numberOfChannels: 2
}
现在我可以 getChannelData() 从 音频缓冲器 这给了我一个关于 AudioBuffer.length. 我知道 期限 在 音频缓冲器 是 AudioBuffer.length / AudioBuffer.sampleRate
.
我想要的是创建一个函数,该函数期望一个 时候 变量(以秒为单位),然后返回来自于 AudioBuffer.getChannelData() 基于该变量。所以我会把 getChannelDataFromTime(seconds)
而它会返回一个(对我来说)未知大小的数组。
我是否遗漏了一些东西,使我的工作更容易?
你要找的方法已经存在了。它至少是一个非常相似的函数。它的名字叫 copyFromChannel()
. 它将把一部分通道数据复制到给定的 Float32Array
.
比方说,你想复制第一秒的通道数据。在这种情况下,你需要创建一个 Float32Array
首先,它可以保持一秒钟的样本。
const seconds = 1;
const channelData = new Float32Array(Math.round(audioBuffer.sampleRate * seconds));
接下来,您可以将数据复制到该 Float32Array
.
audioBuffer.copyFromChannel(channelData, 0, 0);
第一个数字参数定义了要复制数据的通道,第二个数字参数定义了样本的偏移量。