AVPlayerStatus与AVPlayerItemStatus

时间:2011-05-24 13:14:49

标签: iphone nstimer avplayer nsrunloop

问题是 player.status在player.currentItem.status返回AVPlayerStatusReadyToPlay 之前的整整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]);
}

1 个答案:

答案 0 :(得分:3)

根据我们构建Ultravisual的经验,AVPlayerStatusAVPlayerItemStatus只是彼此相关,并且通常依赖于异步状态 - 即,实现倾向于是多线程的,经常是错误或定义不明确。

我们发现AVPlayerItemStatus实际上真正准备好发挥的最可靠指标,但在处理AVQueuePlayerAVPlayerItem时尤其存在一些问题从AVMutableComposition个实例构建。