如何在 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:如何知道歌曲何时结束
如何持续检查 AVAudioplayer 是不是已在 Swift 中播放完毕?