如何预加载音频文件xcode

时间:2012-08-04 02:23:28

标签: ios audio wav audiotoolbox

我想在我的应用中预加载* .wav文件,因为它相当大。我想开始在viewcontroller1加载它,然后在viewcontroller15中播放它。我需要代码来预加载它;播放它的代码是:

CFBundleRef mainbundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef =CFBundleCopyResourceURL(mainbundle, (CFStringRef) @"america", CFSTR ("wav"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);

1 个答案:

答案 0 :(得分:1)

预加载wav文件的标头需要读取非常少量的数据。这足以初始化您的音频播放流。您还需要填充播放缓冲区(需要读取相当少量的数据)才能开始播放。

要预加载音频文件的示例数据,您可以使用AudioFile* API和自定义I / O回调。

然而,您描述的场景是预加载音频文件样本数据的一个很好的例子。

可以实时从磁盘流式传输wav文件。它不需要在播放之前读取整个文件的样本数据。实时播放不需要将大型音频文件加载到内存中。当然,iOS设备的内存天花板也很低。

如果您想要预加载和初始化流,则可以使用ExtAudioFile* API并使用AudioQueue*等API继续流式传输。

有关您遇到的问题的更多细节可能会有所帮助。在这种情况下,我没有看到任何有理由预装音频文件的样本数据;只有负面的副作用。

相关问题