我试图消除通过 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 中执行此操作,其他一切都运行良好。
我在文档中找不到任何有关此内容的信息,但情况似乎确实如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)