iOS:AVQueuePlayer不表示已停止播放

iOS:AVQueuePlayer不表示已停止播放,ios,avplayer,iphone-5,avqueueplayer,Ios,Avplayer,Iphone 5,Avqueueplayer,我有一个AVQueuePlayer,它可以加载URL来播放音频文件,并且在大多数情况下工作良好。但是,我遇到了一个问题,在播放器播放完一个文件(队列中有另一个文件)后,它将停止播放。通常,应用程序将能够使用玩家的费率,状态,以及项目。在本例中,我使用了调试器,一切看起来都很正常 除了玩家本身,一切似乎都在玩。在强制播放机播放后,播放机将跳到下一个曲目,表明未加载它的AVPlayerItem(我可以确认音频URL是否有效) 有人知道我是如何通过编程捕捉到这一点的吗?您需要使用委托方法: - (vo

我有一个
AVQueuePlayer
,它可以加载URL来播放音频文件,并且在大多数情况下工作良好。但是,我遇到了一个问题,在播放器播放完一个文件(队列中有另一个文件)后,它将停止播放。通常,应用程序将能够使用玩家的
费率
状态
,以及
项目
。在本例中,我使用了调试器,一切看起来都很正常

除了玩家本身,一切似乎都在玩。在强制播放机播放后,播放机将跳到下一个曲目,表明未加载它的
AVPlayerItem
(我可以确认音频URL是否有效)


有人知道我是如何通过编程捕捉到这一点的吗?

您需要使用委托方法:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;

完成此方法后,启动新音频

应用程序已注册为
AVPlayerItemDidPlayToEndTimeNotification
通知。但是,在本例中,我不强制播放任何内容,只删除播放器的当前项目(刚刚完成的文件)。
AVQueuePlayer
将继续播放其队列中的任何项目。
AVPlayerItemDidPlayToEndTimeNotification
可以发布与其注册的线程不同的线程。你查过了吗?我还没查过,但这与本案有关吗?音频播放器是线程安全的,包含在一个单例类中。嗯,我想不是,当
AVPlayerItemDidPlayToEndTimeNotification
被触发时,上面的委托方法会被调用吗?我还没有实现
audioplayerdfinishplaying
,但我相信它不会被触发,因为它是针对
AVAudioPlayer
的。我开始认为播放器中排队的
AVPlayerItem
可能是问题的原因。手动按play后,会立即发出
AVPlayerItemDidPlayToEndTimeNotification
通知。虽然媒体URL是有效的,但大约一分钟后就会过期。这些文件很小,应该在创建
AVPlayerItem
后立即开始缓冲,但这种假设可能是可疑的。