检查AVPlayer的播放状态并将覆盖视图添加到AVPlayerViewController中
问题描述:
我想检查AVPlayerViewController是否正在播放视频或其仍然缓冲。我还希望通过下一个和上一个按钮在此AVPlayerViewController中添加叠加视图。 使用下面的代码我的视频缓冲,但它显示正常playback.i想要跟踪如果它的播放或其暂停或其缓冲阶段。检查AVPlayer的播放状态并将覆盖视图添加到AVPlayerViewController中
let playerAV = AVPlayerViewController()
var player = AVPlayer()
let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.d e/big_buck_bunny.mp4")
player = AVPlayer(URL:videoURL!)
playerAV.player = player
playerAV.view.frame = self.movieView.frame
self.addChildViewController(playerAV)
self.movieView.addSubview(playerAV.view)
playerAV.didMoveToParentViewController(self)
playerAV.contentOverlayView?.addSubview(viewNext)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.notificationObserver(_:)), name:AVPlayerItemDidPlayToEndTimeNotification , object: player.currentItem)
player.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions.New, context: nil)
_ = UIDevice.beginGeneratingDeviceOrientationNotifications
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.deviceOrientationDidChange(_:)) , name:
UIDeviceOrientationDidChangeNotification, object: nil)
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if keyPath == "rate" {
if let rate = change?[NSKeyValueChangeNewKey] as? Float {
if rate == 0.0 {
print("playback stopped")
}
if rate == 1.0 {
print("normal playback")
}
if rate == -1.0 {
print("reverse playback")
}
}
}
print("you are here")
}
答
为了检查你可以添加一个周期性时间观察球员的状态:
player.addPeriodicTimeObserverForInterval(CMTime(value: 1, timescale: 3), queue: dispatch_get_main_queue()) { [weak self] time in
self?.handlePlayerStatus(time)
}
里面handlePlayerStatus
您检查状态:
func handlePlayerStatus(time: CMTime) {
if player.status == .ReadyToPlay {
// buffering is finished, the player is ready to play
}
}
它仍然没有工作。 。它仍然缓冲,但accourding到你的handleplayerstatu它说缓冲结束 –
什么是不工作? – fiks
它仍然在缓冲模式,但/ /缓冲完成后,玩家准备玩正在调用。 –