Я вычислил решение, чтобы перебрать все видео в моей очереди видео, а не только одну. Сначала я инициализируюсь моим AVQueuePlayer
:
- (void)viewDidLoad
{
NSMutableArray *vidItems = [[NSMutableArray alloc] init];
for (int i = 0; i < 5; i++)
{
// create file name and make path
NSString *fileName = [NSString stringWithFormat:@"intro%i", i];
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mov"];
NSURL *movieUrl = [NSURL fileURLWithPath:path];
// load url as player item
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:movieUrl];
// observe when this item ends
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:item];
// add to array
[vidItems addObject:item];
}
// initialize avqueueplayer
_moviePlayer = [AVQueuePlayer queuePlayerWithItems:vidItems];
_moviePlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;
// create layer for viewing
AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:_moviePlayer];
layer.frame = self.view.bounds;
layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
// add layer to uiview container
[_movieViewContainer.layer addSublayer:layer];
}
Когда уведомление размещено
- (void)playerItemDidReachEnd:(NSNotification *)notification {
AVPlayerItem *p = [notification object];
// keep playing the queue
[_moviePlayer advanceToNextItem];
// if this is the last item in the queue, add the videos back in
if (_moviePlayer.items.count == 1)
{
// it'd be more efficient to make this a method being we're using it a second time
for (int i = 0; i < 5; i++)
{
NSString *fileName = [NSString stringWithFormat:@"intro%i", i];
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mov"];
NSURL *movieUrl = [NSURL fileURLWithPath:path];
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:movieUrl];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:item];
// the difference from last time, we're adding the new item after the last item in our player to maintain the order
[_moviePlayer insertItem:item afterItem:[[_moviePlayer items] lastObject]];
}
}
}
Вы застряли на этом этапе или вам просто нужно создать его из начальной точки? – Dhruv
Я на самом деле теперь, как создать его и воспроизвести все AVQueuePlayers, теперь я ищу перезагрузить плеер, когда последний QVPlayerItem сделан. – Edelweiss
'- (void) playVideoAtIndex: (NSInteger) index { [self performSelector: @selector (setObservationInfo)]; currentIndex = index; AVPlayerItem * videoItem = [AVPlayerItem playerItemWithURL: [NSURL файлURLWithPath: [arrVideoList objectAtIndex: index]]]; } ' , где вам нужно проверить, ' если (currentIndex <[число arrVideoList] -1) { currentIndex ++; } прочее { currentIndex = 0; } [self playVideoAtIndex: currentIndex]; ' – Dhruv