gpt4 book ai didi

macos - 在 AVPlayer 中准确搜索,而不是短两秒

转载 作者:行者123 更新时间:2023-12-03 23:20:04 24 4
gpt4 key购买 nike

我在 Cocoa 应用程序中使用 AVPlayer,并且我已经实现了一个跳转到视频结尾的命令。

问题是,AVPlayer 不会寻找我告诉它的地方。

例如,我拥有的其中一个视频时长为 4 分 14 秒。当我寻找到最后时,AVPlayer 寻找到 4 分 12 秒——短两秒。如果我然后点击播放,播放器将播放两秒钟,然后到达终点。

我的第一次尝试是这样的:

[self.player seekToTime:self.player.currentItem.duration];

我已经把它改成这样:
[self.player seekToTime:self.player.currentItem.duration
toleranceBefore:kCMTimePositiveInfinity
toleranceAfter:kCMTimeZero];

没有一个比另一个更好。

我也试过求 kCMTimePositiveInfinity .那时它只是不理我。

播放器是否已经加载了视频的那部分似乎并不重要。我什至可以寻到不完全的尽头,玩到真正的尽头,然后再尝试寻到尽头,它会跳回不完全的尽头。

不足并不总是两秒。在我的一些视频中,它或多或少地完全正确地工作,即使不完全正确,也非常接近真正的结尾。至少有一个,它缩短了三秒钟。长度似乎不是一个因素;所有这些长度都差不多,除了一个,它的长度超过一个小时,并试图缩短两秒。

那么,为什么 AVPlayer 比我告诉它的位置跳了三秒之多,我如何说服它跳到我要求的那一刻?

最佳答案

我误解了公差并将它们倒退。

每个容差是 AVPlayer 在该方向上允许从请求的时间移开多远。因此,为 toleranceBefore 传递正无穷大正在说“你可以早点到”,并为 toleranceAfter 传递零正在说“只是不要迟到”(这在寻求结束时将是一个巧妙的技巧)。

因此,解决方案是切换值:

[self.player seekToTime:self.player.currentItem.duration
toleranceBefore:kCMTimeZero
toleranceAfter:kCMTimePositiveInfinity];

或者,用英语说:“不要早,但你可以随心所欲地迟到。”

关于macos - 在 AVPlayer 中准确搜索,而不是短两秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14168590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com