我有一个AVPlayer,当我到达持续时间结束时,我想回到开始,但我不想重新启动AVPlayer。
//Do something when video ended
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying(note:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
@objc func playerDidFinishPlaying(note: Notification) {
self.restartVideo()
}
func restartVideo() {
self.player.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero)
}从现在起,我可以简单的.play() AVPlayer,它将从一开始播放。但是,在我使用.play()之前,.seek()函数并没有向用户表示它已被重新设置为开始。在我执行AVPlayer之前,.play()框架实际上不会转换回第一个框架。
问题:如何使AVPlayer在使用.seek()功能时更改它向用户显示的实际框架?
发布于 2021-06-29 22:20:00
这部分代码是正确的。它可能是别的什么东西叫它寻求结束??您可以使用完成处理程序来查看查找是否被中断。并设置一个断点,以查看您在哪个队列上,以确保您处于主线程上。如果发生了第二次搜索操作,您将在完成处理程序中得到一个错误的结果。此外,尝试在搜索之后设置一个断点,以检查UI是否响应。
self.player.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero) { success in
print("seek finished success = ", success)
}发布于 2021-07-03 06:21:10
像这样设置
self.player.seek(to: .zero) // it will update the player slider to 0:00如果您想设置特定的时间,请使用它,如
// Seek to the 2 minute mark
let time = CMTime(value: 120, timescale: 1)
self.player.seek(to: time)https://stackoverflow.com/questions/66413918
复制相似问题