2017-05-27 4 views
0

に特別秒に達したときにチェックする私はAVPlayerを持っており、いくつかのことをしたい:
どのようにAVプレーヤーが迅速な3

ビデオが5秒以上を通過すると、印刷「OK」と現在の時刻5秒未満で、印刷する(いいえ)。

私はオブザーバを使用する必要があることを知っています。しかし、私は結果を得ていませんでした。 ここのコードは正常に機能していますが、自動的には機能しません。 コードはボタン操作の間だけ機能します。しかし、私はこのコードを自動的に実行します。見ての通り、私はビデオが終了すると、再び再生するオブザーバを持って、

override func viewDidLoad() { 
    super.viewDidLoad()   
    let currentPlayerItem = Player.currentItem 
    let duration = currentPlayerItem?.asset.duration 

    let currentTime = Float(self.Player.currentTime().value) 


     if currentTime >= 5 { 

      print("OK") 

     }else if currentTime <= 5 { 

      print("NO") 
     } 

    NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.Player.currentItem, queue: nil, using: { (_) in 
     DispatchQueue.main.async { 
      self.Player.seek(to: kCMTimeZero) 
      self.Player.play() 
     } 
    }) 



は、ここに私のコードです。このオブザーバーは、ビデオの5秒目に到達するときに使用します。 5秒後に実行されるブロックを追加play()を呼び出した後

答えて

2

。プレーヤーがまだ遊んでいるかどうかを確認します。

self.Player.play() 
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5.0) { 
    // check if player is still playing 
    if self.Player.rate != 0 { 
     print("OK") 
     print("Player reached 5 seconds") 
    } 
} 
+0

おかげで、それが働いたたくさん! –