AVPlayer查找并不总是准确的



我有一个问题与AVPlayer寻求。当前代码:

self.player?.seek(to: CMTime(seconds: Double(startSeconds), preferredTimescale: 600)

这在80%的情况下有效。但有时它不寻求正确的位置,而是从0.0重新开始。

I tried this way:

let time = CMTimeMake(value: Int64(startSeconds), timescale: 1)
self.player?.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero)

100%有效,但是非常慢寻。

我在这里做错了什么?

默认容差值为无穷大(未指定时),但通常与请求值的实际差值约为1秒-这允许seek快速执行。

如果在你的情况下,它跳转到文件开始,这可能是因为你的文件没有正确编码。

如果你不能改变你的文件的源,你能做的最好的是指定大于零的容差,但不要太大。比如±1秒,你的容忍度越小,搜索时间越长,所以试着找到一些平衡。

最新更新