使用 AVAudioPlayer 处理钢琴样本——内存管理
Posted
技术标签:
【中文标题】使用 AVAudioPlayer 处理钢琴样本——内存管理【英文标题】:Using AVAudioPlayer for piano samples -- memory management 【发布时间】:2012-05-06 20:58:28 【问题描述】:我正在编写一个包含钢琴的简单 ios 应用。
我只需要一些非常基本的东西,我可能会采用这种方法:
每个钢琴键都有一个 .mp3 文件 酌情使用 AVAudioPlayer 播放 .mp3我的理解是一个AVAudioPlayer
实例只能用一个声音。因此,我必须为每个钢琴键创建许多 AVAudioPlayer
s(准确地说是 88 个)。
我的问题是,AVAudioPlayer
的内存密集程度如何?我可以通过创建 88 个AVAudioPlayer
s 来初始化程序,将它们保存在内存中,并酌情使用它们吗?或者AVAudioPlayer
的内存占用是否太大,我是否应该只根据需要分配/释放AVAudioPlayer
s?如果是这样,分配/释放玩家是否足够快,以至于用户不会注意到任何延迟?
【问题讨论】:
为什么不尝试创建 10 个左右的AVAudioPlayer
实例并监控 Instruments 中的内存占用?如果看起来没问题,那么增加实例并看看它是如何进行的。
另外,我建议使用 IMA4 (CAF) 音频格式,因为它可以减少 iDevice 的处理压力。
【参考方案1】:
此项目使用 OpenAL SoundBankPlayer 作为该功能的解决方案。另一种方法是使用 soundFont 和 Sampler AudioUnit。非常适合音乐创作类型的应用程序。好的细节和源代码:AudioGraph
【讨论】:
以上是关于使用 AVAudioPlayer 处理钢琴样本——内存管理的主要内容,如果未能解决你的问题,请参考以下文章