iphone - 第一次播放声音时 AVAudioPlayer 启动缓慢

标签 iphone caching audio nsdata avaudioplayer

我正在尝试消除通过 iPhone 上的 AVAudioPlayer 播放(非常短 - 不到 2 秒)音频文件时的启动延迟。

首先,代码:

NSString *audioFile = [NSString stringWithFormat:@"%@/%@.caf", [[NSBundle mainBundle] resourcePath], @"audiofile"];
NSData *audioData = [NSData dataWithContentsOfMappedFile:audioFile];

NSError *err;
AVAudioPlayer *audioPlayer = [(AVAudioPlayer*)[AVAudioPlayer alloc] initWithData:audioData error:&err];

audioPlayer.delegate = self;
[audioPlayer play];

我还实现了audioPlayerDidFinishPlaying方法来在完成后释放AVAudioPlayer。

我第一次播放音频时,明显有延迟——至少 2 秒。然而,此后声音立即播放。我怀疑罪魁祸首是 [NSData dataWithContentsOfMappedFile] 最初从闪存读取很长时间,但后来读取速度很快。不过,我不确定如何测试。

是这样吗?如果是这样,我是否应该预先缓存 NSData 对象并在内存不足的情况下积极清除它们?

最佳答案

延迟似乎与第一次实例化 AVAudioPlayer 有关。如果我加载任何音频,运行 [audioPlayerprepareToPlay],然后立即释放它,则所有其他音频的加载时间非常接近难以察觉。所以现在我在 applicationDidFinishLaunching 中执行此操作,其他一切都运行良好。

我在文档中找不到任何有关此内容的信息,但情况似乎确实如此。

关于iphone - 第一次播放声音时 AVAudioPlayer 启动缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900461/

相关文章:

iphone - UITextView 在滚动之前不显示

asp.net-mvc - IIS7 + ASP.NET MVC 客户端缓存 header 不工作

caching - 如何使缓存保持最新

javascript - YSlow 说我的 JavaScript 文件在合并 5 个文件并打包后不再缓存

c# - 实时 wasapi 捕获错误(来自声卡)操作和播放

比较两个语音

iphone - 如何将此类数据显示到 UITableview

html - 在 iphone 中被剪切的文本

java - 在 Macbook Pro 上生成可听见的正弦波时出现 line.open() 错误

iphone - 截取部分iphone屏幕