8

我想制作具有逐帧播放功能的应用程序。我想标准的android工具是不可能的。我尝试了 VideoView 和 seekTo(current + 1000/framerate) 方法,但它不起作用(我猜它不会在暂停的视频上搜索)。我的问题是:我需要学习和使用什么才能使它成为可能,什么工具和/或库?我是 android 初学者,我之前没有从事视频渲染工作,所以我对此的了解非常低。

4

1 回答 1

3

几年过去了,但问题仍然存在

关于该主题的简短评论:
假设您有一个压缩视频,例如 mp4 文件。您要求的是逐帧播放,但由于压缩,这些帧实际上并不存在(在这个 Wiki 上查看 i、p 和 b 帧)。所以Android需要为你生成这个帧。这一代可能远非最佳(在我的情况下它跳过了大约 3% 的帧),并且可能在某些设备上不受支持,因为使用了不同的编解码器。

如果你打算在它上面运行一些算法,我建议先提取帧,作为 jpg 图像,然后一个一个地读取它们。

我使用了 hiteshsondhi88 的 ffmpeg 包装器 存档提取。它非常易于使用,并且运行流畅。

如果您仍然想使用纯 Java,Fadden做得很好。有几个示例如何使用媒体编解码器和获取帧。

此外,我为此编写了一个小示例,可以在 我的 Git 存储库中找到

在另一个 StackOverflow问题中也有关于它的讨论 ,但我还没有尝试过,要批准。

于 2020-02-01T19:55:30.080 回答