我的应用程序应该显示一组动画图像(在列表或网格中,根据屏幕大小在屏幕上显示约10-20个图像)。这些图像中的每一个都可以包含许多帧(最多150个)。实际上这些图像最初是GIF。我将它们作为编码的mp4文件(以减少通过网络传输的数据大小)并在设备上解码它们。为了解码我使用android.media.MediaMetadataRetriever(它在三星设备上不能很好地工作),我按照以下方式做到:当我显示当前帧时,我放了一个新的解码任务 - 实际上是一个任务来获得下一帧 - 到优先级队列。优先级取决于我需要获取下一帧的时间。如果任务“到期”(工作人员在预期时间之前没有处理)我只是把队列放到下一个任务等等。但是我的算法效果不好 - 动画非常慢且有错误(我也不排除我的实现可能有一些错误)..
所以,以下是问题: 1)还有其他可能更好的解码mp4的方法吗? 2)有人可以给我并建议我应该使用哪种算法来有效地解码mp4文件,所以没有任何动画滞后? 3)由于内存不足错误,我无法使用简单的AnimationDrawable,那么如何才能有效地管理帧缓存呢?
谢谢!