完整的问题:为什么更适合使用MediaElementAudioSourceNode
而不是AudioBuffer
来获得更长的声音?为什么使用MediaElementAudioSourceNode获得更长的声音更合适?
From MDN:这些类型的
对象被设计成保持小音频片段,典型地小于45秒。对于更长的声音,实现MediaElementAudioSourceNode的对象更合适。
此接口表示驻留在内存中的音频资产(用于一次性的声音和其他短音频剪辑)。其格式是非交错的32位线性浮点PCM值,其正常范围为[-1,1] [ - 1,1],但值不限于此范围。它可以包含一个或多个频道。通常,预计PCM数据的长度将相当短(通常略小于1分钟)。对于较长的声音,例如音乐声轨,流媒体应与音频元素和MediaElementAudioSourceNode一起使用。
- 什么是使用一个
MediaElementAudioSourceNode
了一个多AudioBuffer
的好处? - 短片段使用
MediaElementAudioSourceNode
有什么不利吗?
有趣的是,为什么'MediaElementSourceNode'不需要转码为输出设备采样率呢?我认为,如果您播放的声音具有与输出设备不同的采样率,则样本的音高和速度会发生改变(根据我的经验,“AudioBuffer”就是这种情况)。我需要获得最精确的播放时间,因为我正在构建某种DAW,因此我会坚持使用'AudioBuffer'。谢谢您的帮助! – maximedupre
它确实需要转码为输出采样率(又名AudioContext比率),但它可以一次处理一个数据流块,而不是整个缓冲区。 – cwilso
如果您使用decodeAudioData(),AudioBuffers应该适当地重新采样到正确的采样率。 – cwilso