我有一堆我想玩的声音。现在我正在使用AVAudioPlayer。当用户单击按钮时,应开始播放新声音。 AVAudioPlayer的url属性是只读的。每次我想要播放新声音时,我宁愿不必释放并重新分配对象。最好的方法是什么?我需要使用不同的课程吗?
答案 0 :(得分:1)
播放声音的最简单方法是Playing UI Sound Effects or Invoking Vibration Using System Sound Services。基本上你调用AudioServicesCreateSystemSoundID()和AudioServicesPlaySystemSound()。创建一个系统声音是相对昂贵的,并且当它与AudioServicesDisposeSystemSoundID()一起处理时播放停止,所以你真的想要缓存它们:
最大的警告是“系统声音”只支持几种声音格式;苹果似乎推荐IMA4(afconvert -f caff -d ima4 input.file output.caf
,如果您对单声道感到满意,可选择-c 1
。)
也就是说,如果您不介意一次一个声音,它就非常适合播放短音(如果您在播放时播放声音,它会重新开始播放)。我怀疑它也是由内核直接播放的(您可以设置一个标志,以便在您的应用程序退出时继续播放),这可能意味着它在CPU方面更有效。 可能与AVAudioPlayer播放的声音混合。