AVPlayerStatus vs AVPlayerItemStatus - PullRequest
6 голосов
/ 24 мая 2011

Проблема в том, что player.status возвращает AVPlayerStatusReadyToPlay за полные 2 секунды до того, как player.currentItem.status возвращает AVPlayerItemStatusReadyToPlay. У кого-нибудь есть полезные объяснения, почему это происходит?
Это просто пример кода, чтобы показать основную идею того, что происходит, поэтому, если есть какие-либо опечатки или что-то еще, пожалуйста, игнорируйте их.

- (void) someMethod
{    
    player = [[AVPlayer alloc] initWithURL:someValidURL];
    [player play];

    NSTimer *timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(checkStatus:) userInfo:nil repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}

- (void) checkStatus: (NSTimer *)timer
{
    NSLog(@"player status: %i", player.status]);
    NSLog(@"player item status: %i", player.currentItem.status]);
}

1 Ответ

3 голосов
/ 21 мая 2015

В нашем опыте построения Ultravisual AVPlayerStatus и AVPlayerItemStatus являются только разновидностью , связанными друг с другом, и часто зависят от асинхронных состояний - т.е. реализации имеют тенденцию быть сильно многопоточными, и часто глючат или плохо определены.

Мы нашли AVPlayerItemStatus самым надежным индикатором , действительно действительно готовым к игре , но были некоторые ошибки, особенно при работе с AVQueuePlayer или AVPlayerItem, построенными из AVMutableComposition экземпляров. .

...