iphone - AVPlayerStatus 与 AVPlayerItemStatus

标签 iphone nstimer avplayer nsrunloop

问题在于,player.status 在 player.currentItem.status 返回 AVPlayerItemStatusReadyToPlay 之前整整 2 秒返回 AVPlayerStatusReadyToPlay。有人对为什么会发生这种情况有任何有用的解释吗?
这只是示例代码,用于展示正在发生的事情的基本概念,因此如果有任何拼写错误或其他任何内容,请忽略它们。

- (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]);
}

最佳答案

根据我们构建 UltraVisual 的经验,AVPlayerStatusAVPlayerItemStatus某种彼此相关,并且通常依赖于异步状态 -即,实现往往是严重多线程的,并且经常有错误或定义不明确。

我们发现 AVPlayerItemStatus真正准备好播放的最可靠指标,但也存在一些问题,尤其是在处理 AVQueuePlayer 时或从 AVMutableComposition 实例构建的 AVPlayerItem

关于iphone - AVPlayerStatus 与 AVPlayerItemStatus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6111005/

相关文章:

objective-c - 当 UIView 框架更改时, View 内的 AVPlayer 层不会调整大小

ios - AVQueuePlayer 的属性

ios - AVPlayer 视频始终无法加载

ios - iOS NSTimer触发两次

iphone - Airplay、Apple TV 和 Remote Events - 是否仅适用于流式音频/视频?

iphone - 如何在 jQuery-BlockUI 中覆盖覆盖 css

iphone - Storyboard中的 Xcode 4.2 错误

swift - [__NSCFTimer copyWithZone :]: unrecognized selector sent to instance

objective-c - 使用 NSTimer 安排多个日常事件?

iphone - 标签栏点击委托(delegate)