2017-05-27 110 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秒時使用此觀察者。

回答

2

在致電play()後添加一個5秒後運行的塊。然後檢查玩家是否仍在玩。

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

非常感謝它的工作! –