【问题标题】:iOS able to play AVPlayer without waiting for AVPlayerItemiOS 无需等待 AVPlayerItem 即可播放 AVPlayer
【发布时间】:2014-07-01 00:34:11
【问题描述】:

我注意到我几乎可以立即在我的AVPlayer 上发送播放消息,而无需等待 AVPlayerItem 中的“状态”。我对此有点困惑。为什么不立即播放?

大多数示例显示在 AVPlayerItem 的“状态”键上添加观察者。这是一些代码:

self.asset!.loadValuesAsynchronouslyForKeys(keys, completionHandler: {
    dispatch_async(dispatch_get_main_queue(), {

        var error:NSError?
        for key in keys {
            var status = self.asset!.statusOfValueForKey(key, error: &error)
        }

        var status = self.asset!.statusOfValueForKey("playable", error: &error)
        if status == AVKeyValueStatus.Loaded {
            playerItem = AVPlayerItem(asset: self.asset)
            playerItem!.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.Initial, context: itemContext)
            self.player = AVPlayer(playerItem: playerItem)
            playerLayer = AVPlayerLayer(player: self.player)
            playerLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill
            playerLayer!.frame = self.view!.bounds
            self.view.layer.addSublayer(playerLayer)

            //self.player!.play() [This seems to work!]
        } else {
            println("Error in async load of keys")
        }

    })
})            

示例表明我需要实现一个观察者,它会等待直到我从AVPlayerItem 获得状态,然后在 AVPlayer 上调用 play。

 override func observeValueForKeyPath(keyPath: String!, ofObject object: AnyObject!, change: NSDictionary!, context: CMutableVoidPointer) {

    dispatch_async(dispatch_get_main_queue(), {
            self.player!.play()
        })

    super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}

对此还有一些其他的 SO 问题,但没有人解释为什么无需等待 AVPlayerItem 上的“状态”键即可玩玩家。

【问题讨论】:

    标签: ios swift avplayer


    【解决方案1】:

    您没有立即播放,因为播放数据可能尚未准备好(网络不佳)。

    这就是为什么玩家决定什么时候玩,这就是为什么你应该观察 AVPlayerStatusReadyToPlay 案例的状态。

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2018-05-06
      相关资源
      最近更新 更多