我在 Cocoa 应用程序中使用 AVPlayer,并且我实现了一个跳转到视频末尾的命令。
问题是,AVPlayer 不会寻找我告诉它的地方。
例如,我有一个视频是 4 分 14 秒长。当我寻找到最后时,AVPlayer 寻找到 4 分 12 秒——短了 2 秒。如果我然后点击播放,玩家将播放两秒钟,然后到达终点。
我的第一次尝试是这样的:
[self.player seekToTime:self.player.currentItem.duration];
我已将其切换为:
[self.player seekToTime:self.player.currentItem.duration
toleranceBefore:kCMTimePositiveInfinity
toleranceAfter:kCMTimeZero];
没有一个比另一个更好。
我也尝试过寻求kCMTimePositiveInfinity
。那时它只是不理我。
播放器是否已经加载了视频的那部分似乎并不重要。我什至可以追到未尽头,玩到真正的尽头,然后再试探到底,它会跳回未尽头。
差值并不总是两秒。在我的一些视频中,它或多或少完全正确,如果不完全正确的话,它会非常接近真实的结尾。至少在一个上,它缩短了三秒钟。长度似乎不是一个因素;所有这些都大约相同的长度,除了一个,它长一个多小时,短到两秒。
那么,为什么 AVPlayer 比我告诉它的位置少了三秒,我如何说服它跳到我要求的那一刻?