这应该是一个简单的。我有一个AVPlayer
正在播放的视频文件,我希望能够跳到一个特定的时间,但我在理解如何CMTime
工作时遇到了一些麻烦。
我需要以秒为单位指定时间。例如:如果我想跳到第二个 10.8 我想做这样的事情:
[self.avPlayer.currentItem seekToTime:CMTimeMakeWithSeconds(10.8, 1];
但我没有得到我想要的结果。
http://warrenmoore.net/understanding-cmtime
可能会让您更清楚地了解 CMTime。
如果您将行更改为阅读...
[self.avPlayer.currentItem seekToTime:CMTimeMakeWithSeconds(10.8, 60000)];
你可能会得到更好的结果。60000 是一秒钟内有多少个项目。如果你使用 1 作为这个值,那么你每秒只能跳到一个位置 - 通过输入 60000,你在第 10 秒和第 11 秒之间给了自己 60000 个位置。
如果您需要寻找一个非常具体的时间,我建议您使用此方法并保持宽容:
let myTime = CMTime(seconds: 10.8, preferredTimescale: 60000)
player.seek(to: myTime, toleranceBefore: .zero, toleranceAfter: .zero)
文档:链接。苹果建议使用它来获得高精度。
斯威夫特版本
avPlayer.seek(to:CMTimeMakeWithSeconds(10.8,1000))
斯威夫特 5.1 版本
player?.seek(to: CMTime(value: CMTimeValue(10.8), timescale: 1000))