iOS上的Web Audio API内存崩溃

时间:2018-08-29 22:23:01

标签: ios audio web-audio web-audio-api

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

因此,如果解码大量文件,则会消耗大量RAM。我的建议是“取消编码”不需要的文件(只是“忘记”不需要的音频缓冲区,以便垃圾收集器可以重复使用它们)。

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

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