【发布时间】:2013-12-16 12:49:50
【问题描述】:
我使用AVQueuePlayer 循环遍历AVPlayerItems 的数组。
我循环它的方式,我听AVPlayerItemDidPlayToEndTimeNotification,每次调用它时,我都会将当前对象添加到队列的末尾。
代码如下:
viewWillAppear
{
...
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[_queuePlayer currentItem]];
[_queuePlayer play];
}
- (void)playerItemDidReachEnd:(NSNotification *)notification {
AVPlayerItem *p = [notification object];
AVPlayerItem *fakeNew = [[AVPlayerItem alloc] initWithAsset:p.asset];
if (_queuePlayer.items.count == 1)
{
[p seekToTime:kCMTimeZero];
[_queuePlayer play];
}
else
{
[_queuePlayer insertItem:fakeNew afterItem:[_queuePlayer.items lastObject]];
}
NSLog(@"array of items to play:%lu", (unsigned long)_queuePlayer.items.count);
}
问题是,该方法只为播放的第一个视频调用,之后,该方法停止被调用,所以如果我在数组中有两部电影,它会同时播放它们+第一个再次,知道为什么会这样吗?
更多信息: 还尝试每次都制作一个新播放器并将其设置为分层。同一条消息多次发送失败
- (void)playerItemDidReachEnd:(NSNotification *)notification {
AVPlayerItem *p = [notification object];
[self.playList removeObjectAtIndex:0];
[self.playList addObject:p];
AVPlayer *newPlayer = [[AVPlayer alloc] initWithPlayerItem:[self.playList objectAtIndex:0]];
_player = newPlayer;
self.AVPlayerLayerView.layer.player = self.player;
[_player play];
}
【问题讨论】:
标签: ios objective-c ios7 avplayer avqueueplayer