Ste*_*veB 6 iphone nstimer nsrunloop avplayer
问题是player.status AVPlayerStatusReadyToPlay在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]);
}
Run Code Online (Sandbox Code Playgroud)
根据我们构建 Ultravisual 的经验,AVPlayerStatus和AVPlayerItemStatus仅仅是彼此相关的,并且通常依赖于异步状态——即,实现往往是严重多线程的,并且经常有错误或定义不明确。
我们发现AVPlayerItemStatus它是真正准备好玩的最可靠指标,但也存在一些问题,特别是在处理从实例构建的AVQueuePlayer或时。AVPlayerItemAVMutableComposition