【问题标题】:how to check when AV player reach special Seconds in swift 3如何在 Swift 3 中检查 AV 播放器何时达到特殊秒数
【发布时间】:2017-05-27 17:54:35
【问题描述】:

我有一个 AVPlayer 并且想做一些事情:

当视频超过 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 秒时使用这个观察者。

【问题讨论】:

    标签: ios swift3 avplayer seconds


    【解决方案1】:

    在调用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")
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      相关资源
      最近更新 更多