iOS上的Web Audio API内存崩溃

Web Audio API on iOS Memory crash

我们正在使用Web Audio API来播放和处理Web应用程序中的音频。
尝试解码大型mp3文件(约5MB)时,iPad上的Safari中的内存使用量会急剧上升,如果我们加载另一个类似大小的文件,它只会崩溃。

除非在我们使用小文件的情况下,否则在iPad上运行时,Web Audio API似乎并不真正可用。

请注意,相同的代码在Chrome桌面版上效果很好-Safari版确实会抱怨内存使用率过高。

有人知道如何解决这个问题吗?或在iPad上使用Web Audio播放音频文件的内存限制是多少?

谢谢!


解码后的音频文件在RAM中的重量比在磁盘上的重量大得多。单个样本使用4个字节(32位浮点数)。这将转换为230 MB的RAM,以48 000 Hz的采样率和立体声播放10分钟的音频。以相同的采样率和立体声播放一小时的音频将占用约1.3 GB的RAM!

因此,如果解码大量文件,则会消耗大量RAM。我的建议是对不需要的文件进行"取消编码"(只是"忘记"不需要的音频缓冲区,以便垃圾收集器可以释放内存)。

您还可以使用单声道音频文件代替立体声文件,这样可以将内存使用量减少一半。

请注意,解码后的音频文件始终会重新采样为设备的采样率。这意味着使用低采样率的音频不会帮助占用内存。