iOS 内存崩溃上的 Web 音频 API
Posted
技术标签:
【中文标题】iOS 内存崩溃上的 Web 音频 API【英文标题】:Web Audio API on iOS Memory crash 【发布时间】:2018-08-29 22:23:01 【问题描述】:我们正在使用 Web Audio API 在网络应用中播放和操作音频。 在尝试解码大型 mp3 文件(大约 5MB)时,iPad 上的 Safari 中的内存使用量会激增,如果我们加载另一个类似大小的文件,它就会崩溃。
除非我们使用小文件,否则在 iPad 上运行时,Web Audio API 似乎并不能真正使用。
请注意,相同的代码在 Chrome 桌面版上运行良好 - Safari 版确实抱怨内存使用率高。
有人知道如何解决这个问题吗?或者在 iPad 上使用 Web Audio 播放音频文件的内存限制是多少?
谢谢!
【问题讨论】:
【参考方案1】:已解码的音频文件在 RAM 中的重量比在磁盘中的重量要大得多。单个样本使用4 bytes (32-bit float)。这意味着 230 MB 的 RAM 可用于 10 分钟的 48 000 Hz 采样率和立体声音频。以相同的采样率和立体声播放一小时的音频将需要大约 1.3 GB 的 RAM!
因此,如果您解码大量文件,则可能会消耗大量 RAM。我的建议是“解码”你不需要的文件(只需“忘记”不需要的音频缓冲区,这样垃圾收集器就可以释放内存)。
您也可以使用单声道音频文件代替立体声,这样可以将内存使用量减少一半。
请注意,解码后的音频文件始终会重新采样到设备的采样率。这意味着使用低采样率的音频无助于内存使用。
【讨论】:
以上是关于iOS 内存崩溃上的 Web 音频 API的主要内容,如果未能解决你的问题,请参考以下文章