AVPlayer 寻求并不总是准确的
AVPlayer seek not always accurate
我在使用 AVPlayer 搜索时遇到问题。当前代码:
self.player?.seek(to: CMTime(seconds: Double(startSeconds), preferredTimescale: 600)
这在大约 80% 的时间都有效。但有时它不会寻找正确的位置,而是从 0.0 开始。
我这样试过:
let time = CMTimeMake(value: Int64(startSeconds), timescale: 1)
self.player?.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero)
这在 100% 的时间里都有效,但是非常 搜索很慢。
我做错了什么?
默认公差值为无穷大(未指定时),但通常与请求值的实际差异约为一秒 - 这允许快速查找。
如果您的情况是跳转到文件开头,可能是因为您的文件编码不正确。
如果您无法更改文件来源,您最好将公差指定为大于零,但不要太大。就像±1秒。您的容忍度越低,搜索的时间就越长,因此请尝试找到一些平衡点。
我在使用 AVPlayer 搜索时遇到问题。当前代码:
self.player?.seek(to: CMTime(seconds: Double(startSeconds), preferredTimescale: 600)
这在大约 80% 的时间都有效。但有时它不会寻找正确的位置,而是从 0.0 开始。
我这样试过:
let time = CMTimeMake(value: Int64(startSeconds), timescale: 1)
self.player?.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero)
这在 100% 的时间里都有效,但是非常 搜索很慢。
我做错了什么?
默认公差值为无穷大(未指定时),但通常与请求值的实际差异约为一秒 - 这允许快速查找。
如果您的情况是跳转到文件开头,可能是因为您的文件编码不正确。
如果您无法更改文件来源,您最好将公差指定为大于零,但不要太大。就像±1秒。您的容忍度越低,搜索的时间就越长,因此请尝试找到一些平衡点。