2013-10-29 70 views
3

我试图找到一种方法来将视频提取到帧中。 主要目标是使用openGl更改图像并再次构建视频。从视频获取帧,而不是MediaMetadataRetriever

问题是,我找不到一种不满意的方式来提取视频。我看到很多熟悉的问题都是使用MediaMetadataRetriever回答的,但我不想使用它,因为它的工作非常慢。

我对像jcodec,ffmpeg,openCV和mp4parser这样的库做了一些研究。

jcodec - 工作正常,但真的很慢,每个getFrame()花费1秒。

ffmpeg - 根据GPL许可证,这意味着你将不得不公布你的代码。

openCV - 复杂。也许我可以完成我需要的东西,但它看起来太复杂了,我正在寻找一个更简单的解决方案。

mp4parser - 提取解码的帧,但不支持将它们编码为jpg/png。

对于获得一些帮助将是美好的。 tnx

回答

0

不,ffmpeg库是与LGPL授权的,并且不需要打开所有的代码。 avcodec的android构建包括libstagefright的接口,它提供了h264(avc)的硬件编解码器。这与您在Android上获得的速度一样快。

+0

ffmpeg的库的一部分在GPL下,这些是我需要的,以便将帧解码回png(libx256)。关于libstagefright - 听起来很有趣,你是否可能有一个源代码,博客文章或其他资源,其中包含更多'如何'信息与读者分享? Tnx – Nativ

+0

libx256适用于编码器,不是吗?为什么你需要GPL呢? –

+1

查看http://stackoverflow.com/questions/8613436/how-to-use-ffmpeg-libavcodec-libstagefright –