如何检查 AV 播放器何时在 swift 3 中达到特殊秒数
how to check when AV player reach special Seconds in swift 3
我有一个 AVPlayer 并且想做一些事情:
当视频超过5秒时,打印"OK",当当前时间小于5秒时,打印(No)。
我知道我应该使用观察者。但是我没有得到结果。
这里的代码运行良好,但不是自动的。
该代码仅在按钮操作期间有效。但我希望此代码自动 运行。
这是我的代码:
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 秒时使用此观察器。
调用 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")
}
}
我有一个 AVPlayer 并且想做一些事情:
当视频超过5秒时,打印"OK",当当前时间小于5秒时,打印(No)。
我知道我应该使用观察者。但是我没有得到结果。
这里的代码运行良好,但不是自动的。
该代码仅在按钮操作期间有效。但我希望此代码自动 运行。
这是我的代码:
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 秒时使用此观察器。
调用 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")
}
}