在iphone上一次播放不同声音的最佳方式?

时间:2010-11-23 03:45:03

标签: iphone ios core-audio avaudioplayer

我有一堆我想玩的声音。现在我正在使用AVAudioPlayer。当用户单击按钮时,应开始播放新声音。 AVAudioPlayer的url属性是只读的。每次我想要播放新声音时,我宁愿不必释放并重新分配对象。最好的方法是什么?我需要使用不同的课程吗?

1 个答案:

答案 0 :(得分:1)

播放声音的最简单方法是Playing UI Sound Effects or Invoking Vibration Using System Sound Services。基本上你调用AudioServicesCreateSystemSoundID()和AudioServicesPlaySystemSound()。创建一个系统声音是相对昂贵的,并且当它与AudioServicesDisposeSystemSoundID()一起处理时播放停止,所以你真的想要缓存它们:

  • 在应用启动时创建它们(或者可能是第一次播放声音)。您可以将它们保存在由声音文件名键入的NSDictionary中,并将声音ID存储在NSValue中,或者等等。
  • 如果您感到困扰,请在应用程序退出,背景或内存警告时将其丢弃。

最大的警告是“系统声音”只支持几种声音格式;苹果似乎推荐IMA4(afconvert -f caff -d ima4 input.file output.caf,如果您对单声道感到满意,可选择-c 1。)

也就是说,如果您不介意一次一个声音,它就非常适合播放短音(如果您在播放时播放声音,它会重新开始播放)。我怀疑它也是由内核直接播放的(您可以设置一个标志,以便在您的应用程序退出时继续播放),这可能意味着它在CPU方面更有效。 可能与AVAudioPlayer播放的声音混合。