AVQueuePlayer 仅从数组中播放一次音频

AVQueuePlayer plays audio only once from array

我有如下的 QueuePlayer 数组,

Print Queue Player array : (
    "<AVQueuePlayer: 0x7fed625a51c0>",
    "<AVQueuePlayer: 0x7fed624baa00>",
    "<AVQueuePlayer: 0x7fed624c43c0>"
)

点击按钮我正在播放上面数组中的音频,

-(IBAction)click_Play:(UIButton *)sender {

    [(AVQueuePlayer *)[arrQueuePlayer objectAtIndex:sender.tag] setVolume:1.0];
    [(AVQueuePlayer *)[arrQueuePlayer objectAtIndex:sender.tag] play];
}

生成 QueuePlayer 数组的原因是,我的播放按钮在 UITableView 中。单击按钮时从阵列播放音频仅在第一次运行良好。如果我再次点击播放按钮。它没有播放声音。不知道出了什么问题。我通过调试代码检查了它,我的数组正在被清空或任何东西。那为什么在点击按钮时它不再播放了?

请帮帮我。提前致谢!

由于你是从array中播放queue player,有可能播放一次就变成nil了。我不确定这是否是您的实际问题。因为我不知道您是如何创建这些队列播放器对象并将其添加到数组中的。但我想队列播放器对象在播放后变为 nil 应该是问题所在。

如果是这样,那么您必须在播放队列播放器后重新创建它。由于AVQueuePlayer没有任何委托方法,例如audioPlayerDidFinishPlaying:(这是AVAudioPlayer的委托方法)。因此,对于 AVQueuePlayer,您需要为 playerItemDidReachEnd: 添加观察者,如下所示,

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:item];

在此观察者方法中,重新创建您的队列播放器并将其替换到您的数组中。希望它能帮助你!干杯..