5

问题是player.statusAVPlayerStatusReadyToPlay在 player.currentItem.status 返回前整整 2 秒返回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]);
}
4

1 回答 1

3

在我们构建 Ultravisual 的经验中,AVPlayerStatusAVPlayerItemStatus只是彼此相关的一种,并且通常依赖于异步状态——即,实现往往是多线程的,并且经常有错误或定义不明确。

我们发现它是真正准备好玩AVPlayerItemStatus的最可靠指标,但有一些陷阱,尤其是在处理或从实例构建时。AVQueuePlayerAVPlayerItemAVMutableComposition

于 2015-05-21T14:11:47.723 回答