Ios 在AVPlayer seekToTime中使用秒数
这应该是一个简单的问题。我有一个Ios 在AVPlayer seekToTime中使用秒数,ios,avplayer,cmtime,Ios,Avplayer,Cmtime,这应该是一个简单的问题。我有一个AVPlayer播放视频文件,我希望能够跳到特定的时间,但我在理解CMTime的工作原理时遇到了一些困难 我需要以秒为单位指定时间。例如:如果我想跳到第二个10.8,我想这样做: [self.avPlayer.currentItem seekToTime:CMTimeMakeWithSeconds(10.8, 1]; 但是我没有得到我想要的结果。 可能会让你对时间有一个更清晰的概念 如果你把台词改成 [self.avPlayer.currentItem seek
AVPlayer
播放视频文件,我希望能够跳到特定的时间,但我在理解CMTime
的工作原理时遇到了一些困难
我需要以秒为单位指定时间。例如:如果我想跳到第二个10.8,我想这样做:
[self.avPlayer.currentItem seekToTime:CMTimeMakeWithSeconds(10.8, 1];
但是我没有得到我想要的结果。
可能会让你对时间有一个更清晰的概念
如果你把台词改成
[self.avPlayer.currentItem seekToTime:CMTimeMakeWithSeconds(10.8, 60000)];
你可能会得到更好的结果。60000是指一秒钟内有多少个项目。如果你用1来表示这个值,那么你每秒只能跳到一个地方——在第10秒和第11秒之间加60000就等于给自己60000个地方。Swift版本
avPlayer.seek(to:CMTimeMakeWithSeconds(10.8,1000))
如果您需要寻找一个非常特定的时间,我建议您使用此方法,并允许:
let myTime = CMTime(seconds: 10.8, preferredTimescale: 60000)
player.seek(to: myTime, toleranceBefore: .zero, toleranceAfter: .zero)
文档:。苹果建议使用它以获得高精度。Swift 5.1版
player?.seek(to: CMTime(value: CMTimeValue(10.8), timescale: 1000))
非常感谢。我终于明白了NSTime的概念,我可以看到:Swift 5.1版本在这篇文章中给出了一些解决方案之后,我不再需要使用seek的Preference和Tolerance After参数来正常工作。