AVAudioPlayer初始化很好,但拒绝播放

时间:2011-12-06 17:12:42

标签: ios avfoundation avaudioplayer

我对AVAudioPlayer课有一个奇怪的问题。我创建一个播放器,从初始化器获取非零引用,但-play消息返回NO并且播放器不播放。我已经实现了播放器委托方法,并且未调用-audioPlayerDecodeErrorDidOccur:error:。初始化程序中的错误未设置。

我检查了通常的嫌疑人。我设置音频会话类别,我也激活它。在播放之前,应用程序会录制播放器的音频文件。当我使用不同的声音(来自应用程序包)初始化播放器时,它会播放。当我将录制的文件复制到应用程序包中,然后使用此副本初始化播放器时,它会播放。当我在加载之前检查文件是否存在时,文件就在那里,是可读的并且具有非零大小。

我已经尝试过模拟器和设备,没有区别。

我错过了什么?

1 个答案:

答案 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];
});

这当然不是一个合适的解决方案,所以经过一些搜索后我意识到我没有正确完成录制,在创建播放器之前保留文件缓冲区未刷新。现在我在调用播放器之前刷新缓冲区一切正常。