如何在 Swift 3 中检查 AV 播放器何时达到特殊秒数

Posted

技术标签:

【中文标题】如何在 Swift 3 中检查 AV 播放器何时达到特殊秒数【英文标题】:how to check when AV player reach special Seconds in swift 3 【发布时间】: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 秒时使用这个观察者。

【问题讨论】:

【参考方案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")
    

【讨论】:

以上是关于如何在 Swift 3 中检查 AV 播放器何时达到特殊秒数的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3.0 中的 Spotify SDK:如何知道歌曲何时结束

如何检查 HealthKit 功能何时完成(Swift)

如何检测 AVPlayer 视频何时结束播放?

如何持续检查 AVAudioplayer 是不是已在 Swift 中播放完毕?

Flutter Chewie 视频播放器 - 检查播放何时完成

swift 3 - 旋转到横向时全屏播放视频