Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 滴答声要保存在记忆中。AVAudioPlayer?听起来怎么样?核心音频?_Iphone_Core Audio_Avaudioplayer_System Sounds - Fatal编程技术网

Iphone 滴答声要保存在记忆中。AVAudioPlayer?听起来怎么样?核心音频?

Iphone 滴答声要保存在记忆中。AVAudioPlayer?听起来怎么样?核心音频?,iphone,core-audio,avaudioplayer,system-sounds,Iphone,Core Audio,Avaudioplayer,System Sounds,我试着播放一个非常小的音频文件——长度大约为0.05秒,是一个未压缩的.wav文件 现在,我正在使用AVAudioPlayer播放声音 我打算和一个旋转器、一个“价格合适”或“命运之轮”一起高速播放这个声音。如果我实例化循环计数为100的AVAudioPlayer,它确实会像我预期的那样快速播放声音 但是,如果我在微调器的每个“滴答声”上执行[audioPlayer play],音频就会严重落后。我的猜测是,与设置高循环计数不同,[audioPlayer play]需要为每次播放完全设置和拆除音

我试着播放一个非常小的音频文件——长度大约为0.05秒,是一个未压缩的.wav文件

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

我打算和一个旋转器、一个“价格合适”或“命运之轮”一起高速播放这个声音。如果我实例化循环计数为100的
AVAudioPlayer
,它确实会像我预期的那样快速播放声音

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


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

如果您需要更精确的计时,您可能需要尝试使用其他声音API之一。音频单元RemoteIO很复杂,但允许播放未压缩声音的最精确计时。OpenAL和音频队列是另外两种选择。

您对这三种方法的优缺点有何看法?RemoteIO是所有内置声音IO的底层API,它可以为您提供最低的延迟,但却是最复杂的API。音频队列更易于设置和使用,但具有更高的延迟。OpenAL是一个更高级别的API,有更多的功能(3D平移等),但仍然可以对游戏声音进行适当的控制。谢谢你提供的信息。现在我正在研究RemoteIO和AudioQueues,并将在这里发布我使用的是哪一个以及为什么/如何使用。