我知道有很多帖子,但没有一个能帮上忙。
我的设备上有不同fps(如果有什么关系的话)的视频。
我正在计算精确值(如果我们将它们转换为秒,它们将是10.33333,10.4444等等)。
我正在寻求使用此代码:

  self.player.seekToTime( time, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)

它只能平稳地向前跑,但向后跑不行。有什么想法吗?

最佳答案

这是因为压缩视频与“关键帧”配合使用。关键帧是完全渲染的视频帧,但并非每个帧都是关键帧。关键帧之后的帧只存储为与该关键帧的增量差异。这意味着,当您通过视频向前移动时,播放机将显示一个关键帧,移动到下一帧并绘制更改,移动到下一帧等。当通过视频向后移动时,播放机实际上只能显示关键帧。通常它会使用编码的数据来显示关键帧以及关键帧之后的一些帧,这样您就可以看到在视频中的那个点发生了什么。解决这个问题的唯一方法是将视频解压缩到一个缓冲区中,然后向后扫描这个缓冲区——显然,对于大多数目的来说,这太慢了。
http://www.dacast.com/blog/what-is-a-key-frame-for-video/

关于objective-c - SeekToTime只为前锋而顺利工作,向后冷冻,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36575419/

10-12 01:12