从视频中复制连续帧

时间:2014-07-09 17:45:28

标签: android opencv video-capture mediacodec

我正在尝试复制视频的一部分,并将其作为GIF保存到磁盘中。视频可以是本地视频或远程视频,副本最多为2秒。我不需要保存每一帧,而是每隔一帧(12-15 fps)。我有“框架到gif”部分工作,但“获取框架”部分不是很好。

这是我到目前为止所做的尝试:
- MediaMetadataRetriever:速度太慢(Nexus4每帧约1秒),仅适用于本地文件
- FFmpegMediaMetadataRetriever:相同的延迟,但适用于远程视频 - TextureView.getBitmap():我正在使用ScheduledExecutorService并且每60分钟抓住Bitmap(在播放时......)它适用于小尺寸getBitmap(100, 100),但是对于更大的那些(> 400),整个过程变得非常慢。正如文档所说Do not invoke this method from a drawing method无论如何。

似乎最好的解决方案是在解码时访问每一帧,并保存它们。我尝试了OpenCV for Android,但找不到在特定时间抓取帧的API。

现在,我正在调查那些samples以了解如何使用MediaCodec,但在运行ExtractMpegFramesTest.java时,我似乎无法提取任何帧(“没有输出来自解码器可用“)。

我是否在正确的轨道上?还有其他建议吗?

编辑:ExtractMpegFramesTest.java更进一步,感谢您post

编辑2:只是为了澄清,我在这里想要实现的是播放视频,然后按一个按钮开始捕捉帧。

0 个答案:

没有答案