我对AVAudioPlayer
课有一个奇怪的问题。我创建一个播放器,从初始化器获取非零引用,但-play
消息返回NO
并且播放器不播放。我已经实现了播放器委托方法,并且未调用-audioPlayerDecodeErrorDidOccur:error:
。初始化程序中的错误未设置。
我检查了通常的嫌疑人。我设置音频会话类别,我也激活它。在播放之前,应用程序会录制播放器的音频文件。当我使用不同的声音(来自应用程序包)初始化播放器时,它会播放。当我将录制的文件复制到应用程序包中,然后使用此副本初始化播放器时,它会播放。当我在加载之前检查文件是否存在时,文件就在那里,是可读的并且具有非零大小。
我已经尝试过模拟器和设备,没有区别。
我错过了什么?
答案 0 :(得分:0)
它有助于在录制和播放结束之间等待1/10秒:
dispatch_time_t moment = dispatch_time(DISPATCH_TIME_NOW, 1e8);
dispatch_after(moment, dispatch_get_main_queue(), ^{
[statusLabel setText:@"Playing"];
[self setPlayer:[[AVAudioPlayer alloc]
initWithContentsOfURL:[self recordingURL]
error:NULL]];
[player play];
});
这当然不是一个合适的解决方案,所以经过一些搜索后我意识到我没有正确完成录制,在创建播放器之前保留文件缓冲区未刷新。现在我在调用播放器之前刷新缓冲区一切正常。