Воспроизведение 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.

Другие вопросы по тегам