Воспроизведение n-го элемента AVQueuePlayer
У меня есть экземпляр AVQueuePlayer
и я инициализировал его с коллекцией видео, используя AVPlayerItem
(допустим, у меня есть 10 элементов). При событии кнопки мне нужно воспроизвести элемент n-го индекса из коллекции.
Я использовал - (void)replaceCurrentItemWithPlayerItem:(AVPlayerItem *)item
но он заменяет текущий игровой элемент переданным AVPlayerItem
,
Мне нужно играть в н AVPlayerItem
из AVQueuePlayer
, Любая помощь будет оценена.
2 ответа
Две идеи, не проверенные:
А. Продвижение
NSUInteger indexToPlay = …
AVPlayerItem *currentItem = [queuePlayer currentItem];
NSUInteger currentIndex = [[queuePlayer items] indexOfObject:currentItem];
for (;currentIndex<indexToPlay; currentIndex++)
{
[queuePlayer advanceToNextItem];
}
Б. Расчет времени
Получить продолжительность, используя -duration
(AVPlayerItem
) всех видео от начала очереди до (но не включая) n-го видео и переходите к полученному времени с -seekToTime:toleranceBefore:toleranceAfter:
,
Я думаю, что у вас не должно быть проблем с допуском и задержкой декодирования, потому что предполагаемое время - это начало видео.
- (void)playAudioAtIndex:(NSInteger)index
{
[player removeAllItems];
for (int i = index; i <playerItems.count; i ++) {
AVPlayerItem* obj = [playerItems objectAtIndex:i];
if ([player canInsertItem:obj afterItem:nil]) {
[obj seekToTime:kCMTimeZero];
[player insertItem:obj afterItem:nil];
}
}
}
playerItems - это NSMutableArray(NSArray), где вы храните свои AVPlayerItems.