使用 Web Audio API 播放时,声音会在内存中扩展吗?

Are sounds expanded in memory when played with Web Audio API?

我是网络音频的初学者,想知道压缩(AAC、MP3、OGG)音效或特别是音乐曲目是否在内存中扩展为兆字节,就像 WebGL 中的纹理一样?

例如,如果我有一个包含一些音乐的音频文件并且文件大小约为 3 MB(任何格式:MP3、OGG、AAC),文件是否会扩展(解压缩)为 70 MB 以用于像原始 PCM 格式一样播放需要多少时间?

此外,是否可以估计在使用 Web Audio 时音频文件使用多少内存,定期播放,没有 Web Audio 更高级节点的额外音效。

目前,要使用压缩音频文件,您必须将压缩音频文件加载到内存中,然后使用 decodeAudioData 将压缩文件转换为 AudioBuffer,内部由浮点数组组成-- -本质上是PCM。 (但是,Firefox 进行了优化,在许多情况下,它可以使用 16 位整数数组而不是浮点数。)

如果您使用通道数和 AudioBuffer 的持续时间,您可以很好地估计所用内存。

如果这不适合您使用,唯一的选择是使用 MediaElementAudioSourceNode 和朋友一起将压缩文件流式传输到浏览器。但是,您失去了对源的样本精确控制。