首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用AVPlayer ()之前使用AVPlayer.seek()时显示AVPlayer.play()框架的更新

在使用AVPlayer ()之前使用AVPlayer.seek()时显示AVPlayer.play()框架的更新
EN

Stack Overflow用户
提问于 2021-02-28 21:18:17
回答 2查看 482关注 0票数 4

我有一个AVPlayer,当我到达持续时间结束时,我想回到开始,但我不想重新启动AVPlayer

代码语言:javascript
复制
//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()功能时更改它向用户显示的实际框架?

EN

回答 2

Stack Overflow用户

发布于 2021-06-29 22:20:00

这部分代码是正确的。它可能是别的什么东西叫它寻求结束??您可以使用完成处理程序来查看查找是否被中断。并设置一个断点,以查看您在哪个队列上,以确保您处于主线程上。如果发生了第二次搜索操作,您将在完成处理程序中得到一个错误的结果。此外,尝试在搜索之后设置一个断点,以检查UI是否响应。

代码语言:javascript
复制
    self.player.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero) { success in
        print("seek finished success = ", success)
    }
票数 0
EN

Stack Overflow用户

发布于 2021-07-03 06:21:10

像这样设置

代码语言:javascript
复制
self.player.seek(to: .zero) // it will update the player slider to 0:00

如果您想设置特定的时间,请使用它,如

代码语言:javascript
复制
// Seek to the 2 minute mark
let time = CMTime(value: 120, timescale: 1)
self.player.seek(to: time)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66413918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档