MPMoviePlayer或AVPlayer帧提前。

6
有没有一种方法可以使用MPMoviePlayer或AVPlayer播放视频文件的每一帧? 甚至可能还有其他我不知道的电影播放器吗?
这是我的需求。我想将视频加载到全屏播放器中,并根据用户互动逐帧移动内容。这需要相当稳定,因为我需要准确地控制电影播放器在任何时候显示的帧。
理想情况下,我想知道是否可能通过代码加载视频并控制显示的帧。
我知道我可以使用UIImageView动画来实现这一点,但测试表明这会使用太多的内存。
1个回答

10

在使用AVPlayer时,您可以使用其当前AVPlayerItem的- (void)stepByCount:(NSInteger)stepCount方法向前或向后跨步。

AVPlayer *mPlayer = [AVPlayer playerWithURL:url];
[mPlayer.currentItem stepByCount:1];

1
@Wizfinger 对我来说,这仅适用于已下载/本地资产,而不适用于URL。 你测试过URL吗? 有关我的问题的更多详细信息,请在此处查看- http://stackoverflow.com/questions/40000849/why-stepbycount-is-not-working-with-m3u8?noredirect=1#comment67300916_40000849 - Dipak
1
这并不在所有情况下都有效:即使对于本地资产,有时它也会跳过将近0.5秒。 - bojan
@bojan 这取决于视频的帧率。低帧率意味着跳过的内容更多。 - hotdogsoup.nl
@Mr.Zystem,帧率不重要。我遇到了高帧率(120fps)的问题。根据文档,它取决于“每个步骤的大小取决于接收器启用的AVPlayerItemTrack对象(请参见轨道)”,但我不知道该怎么做。最终我采用了“手动”解决方案,适用于所有帧率。顺便说一句,我之前使用的是“stepByCount”,但直到昨天我才意识到它有多么不可靠。 - bojan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接