【问题标题】:Tick sound to be kept in memory. AVAudioPlayer? SystemSounds? Core Audio?滴答声要保存在内存中。 AV音频播放器?系统声音?核心音频?
【发布时间】:2011-04-13 18:12:09
【问题描述】:

我正在尝试播放一个非常小的音频文件 - 它的长度大约为 0.05 秒,并且是一个未压缩的 .wav 文件。

现在,我正在使用AVAudioPlayer 播放声音。

我打算在旋转器旁边快速播放声音,例如 The Price Is Right 或 Wheel of Fortune。如果我用循环计数为 100 来实例化 AVAudioPlayer,它确实会像我预期的那样快速播放声音。

但是,如果我在微调器的每个“滴答声”上执行 [audioPlayer play],音频就会严重落后。我的猜测是,与设置高循环次数不同,[audioPlayer play] 需要在每次播放时对音频剪辑的内存进行完整设置和拆卸。

有没有办法强制剪辑在内存中保持设置更长的时间?这是一个非常频繁的声音,因此在整个应用程序运行期间保持它也是可以的。

【问题讨论】:

    标签: iphone core-audio avaudioplayer system-sounds


    【解决方案1】:

    如果您依赖更精确的计时,您可能想尝试使用其他声音 API 之一。 Audio Unit RemoteIO 很复杂,但可以最精确地播放未压缩的声音。 OpenAL 和音频队列是另外两个选项。

    【讨论】:

    • 您对这三者的优缺点有什么看法吗?
    • RemoteIO 是所有内置声音 IO 的底层 API,将为您提供最低延迟,但也是最复杂的 API。音频队列更易于设置和使用,但延迟更高。 OpenAL 是一个更高级别的 API,具有更多功能(3D 平移等),但仍具有对游戏声音的适当控制。
    • 感谢您提供的信息。现在我正在研究 RemoteIO 和 AudioQueues,并将在这里发布我使用哪一个以及为什么/如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2019-05-30
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多