我看到了很多类似我的问题,但我需要用Java而不是C/C++来解决,并且需要在Android设备上运行。
我找到了一种使用“MediaMetadataRetriever”方法来实现的方式。
但是将帧分离出来太耗时(每秒1帧),我需要读取大约600帧,所以仅读取图像就需要10分钟,还没有进行图像处理。
我想知道是否有其他方法可以从视频中分离出帧,或者如何操纵MediaMetadataRetriever使其快速工作。
非常感谢!
MediaCodec
支持视频格式,则所有工作都由硬件或驱动程序完成,直到使用glReadPixels
将数据复制到缓冲区为止。 (2) CTS是一组遵从性测试;上次我检查时,APK大约为100MB。因此,您肯定不需要全部 CTS类。 :-) 最好只选择您需要的部分。该页面上的其他示例(例如EncodeAndMuxTest)就是这样编写的。 (3) 我没有使用过OpenCV;glReadPixels
返回简单的RGBA(如果您需要YUV,可能会很烦人)。 - fadden