2017-05-27 104 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

非常感谢它的工作! –