【发布时间】:2015-10-25 00:52:09
【问题描述】:
我正在创建一个需要显示一系列视频帧的Bitmaps 的应用程序。该应用程序使用MediaCodec 将视频解码为多个帧,并获取每个帧的Bitmaps 以在ImageView 上显示它们。
问题是每个Bitmap的大小约为2~3MB(帧大小为1280 x 720,720p视频的大小。)所以当Bitmap的个数在上面60~65,应用程序由于内存不足而崩溃。为了避免这个问题,我一直在实现 D tour 算法,它只加载需要立即或很快显示的Bitmaps。基本上我一直在尝试这些方法。
1。提前加载所有Bitmaps。
它的速度足以满足我的需要,但正如提到的,当Bitmaps 的数量超过 60~65 时,应用程序会崩溃。
2。提取帧时,将每个帧保存到JPEG 文件中,并在需要时将特定的JPEGs 加载到Bitmaps 中。
我使用BitmapFactory.decodeFile 从JPEG 加载Bitmap,但速度很慢。
3。提取帧时,将整个帧保存到 MJPEG 文件中,并在需要时将特定“帧”(技术上是字节数组)加载到 Bitmaps 中。
我想如果我从字节数组本身加载Bitmap,性能可能会更好。因此,在提取帧时,我创建了另一个元数据文件,其中包含每个帧的字节索引信息,并在需要时使用该信息加载Bitmaps。 [BitmapFactory.decodeByteArray](http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeByteArray(byte[], int, int)) 被使用。我可以看到速度略有提高,但仍然不够。
在这种情况下,我还能尝试提高Bitmap 的加载速度吗?
【问题讨论】:
标签: android bitmap android-bitmap bitmapfactory