【问题标题】:AVPlayer listen to when a thumbnail is addedAVPlayer 在添加缩略图时监听
【发布时间】:2018-01-17 16:41:37
【问题描述】:

我有一个AVPlayer,它从远程 url 加载其内容。创建AVPlayer 时,它会显示视频的缩略图。我似乎找不到通知或属性的任何信息,我可以收听查看何时添加此缩略图,因为我想在添加缩略图之前显示加载屏幕并在之后将其删除。

class VideoView: UIView {
    private var playerLayer: AVPlayerLayer {
        return layer as! AVPlayerLayer
    }

    public var videoURL: URL? {
        didSet {
            guard videoURL != oldValue
                else { return }

            if let videoURL = videoURL {
                avPlayer = AVPlayer(url: videoURL)
                playerLayer.player = avPlayer
            }
        }
    }

    private var avPlayer: AVPlayer?

    override public static var layerClass: AnyClass {
        return AVPlayerLayer.self
    }
}

我已经尝试观察玩家的currentItem.status 值何时为readyToPlay 但是在状态更改为readyToPlay 后添加缩略图

observer = currentItem.observe(\.status) { [weak self] (currentItem, change) in
                if currentItem.status == .readyToPlay {
                    self?.overlay?.isHidden = false
                }
            }

谢谢

【问题讨论】:

    标签: ios swift avfoundation avplayer


    【解决方案1】:

    AVPlayerLayer 有一个可以观察到的属性:readyForDisplay。它是BOOL,文档内容如下:

    一个布尔值,指示第一个视频帧是否已准备好为关联播放器的当前项目显示。使用此属性作为指示何时最好显示或动画播放器层进入视图。当此属性为 NO 时,可以显示或使播放器层可见,但是在值变为 YES 之前,该层将没有任何用户可见的内容。对于资产不包含启用的视频轨道的播放器的 currentItem,此属性保持为 NO。这个属性是键值可观察的,使用键值观察。

    您应该能够观察此属性并在视频的第一帧加载时移除加载微调器。请注意,对于不包含任何视频轨道的播放器项目,此属性仍为 NO。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      Swift 4 代码

      这是在将缩略图添加到 AVVideoPlayerViewController 时监听的代码(意味着它已准备好显示)

      observer = avVideoPlayerViewController.observe(\.isReadyForDisplay) { [weak self] (avVideoPlayerViewController, change) in
                          if avVideoPlayerViewController.isReadyForDisplay {
                              print("Video player is ready for display")
      
                          } else {
                              print("Video player is not ready for display")
                          }
                      }
      

      【讨论】:

        猜你喜欢
        • 2014-04-25
        • 2014-01-12
        • 1970-01-01
        • 2013-02-27
        • 2016-04-20
        • 2020-12-01
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        相关资源
        最近更新 更多