2016-07-27 28 views
0

AVPlayerViewControllerがビデオを再生しているかどうか、またはそのバッファリングを確認します.iまた、このAVPlayerViewControllerのオーバーレイビューを次と前のボタンで追加します。 次のコードで私のビデオはバッファリングされていますが、通常の再生を示しています.i再生中か一時停止中かバッファリング中かを確認します。あなたが状態をチェックhandlePlayerStatusインサイドAVPlayerの再生状態を確認し、AVPlayerViewControllerにオーバーレイビューを追加します。

player.addPeriodicTimeObserverForInterval(CMTime(value: 1, timescale: 3), queue: dispatch_get_main_queue()) { [weak self] time in 
    self?.handlePlayerStatus(time) 
} 

:あなたは定期的な時間オブザーバを追加することができますプレイヤーの状態を確認するために

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") 
} 

答えて

0

func handlePlayerStatus(time: CMTime) { 
    if player.status == .ReadyToPlay { 
     // buffering is finished, the player is ready to play 
    } 
} 
+0

そのまだ機能していません。まだバッファリングしていますが、あなたのハンドルプレイヤーに告げると、バッファリングが終了しました –

+0

正確に何が動作していませんか? – fiks

+0

まだバッファリングモードですが、//バッファリングが終了し、プレイヤーは再生準備ができています。 –

関連する問題