实际上我正在使用 OpenGL,我想将我所有的纹理都放在 MP4 中以压缩它们。
然后我需要从我的 Android 上的 MP4 中获取它
我需要以某种方式解码 MP4 并根据请求逐帧获取。
我找到了这个 MediaCodec
https://developer.android.com/reference/android/media/MediaCodec
和这个 MediaMetadataRetriever
https://developer.android.com/reference/android/media/MediaMetadataRetriever
但是我没有看到如何逐帧请求的方法......
如果有人用过MP4,请给我一个去哪里的方法。
PS我正在使用本机方式(JNI),所以怎么做都无所谓..Java或本机,但我需要找到方法。
编辑1
我制作了某种电影(只有一个 3d 模型),所以我每 32 毫秒更改一次几何和纹理。因此,在我看来,将 mp4 用于 tex 似乎是合理的,因为每个新帧(32 毫秒)都与原始帧非常相似......
现在我为一个模型使用 400 帧。对于几何,我使用 .mtr,对于 tex,我使用 .pkm(因为它针对 android 进行了优化),所以我有大约 350 个 .mtr 文件(因为有些文件包含子索引)和 400 个 .pkm 文件......
这就是为什么我要为 tex 使用 mp4 的原因。因为一个 mp4 比 400 .pkm 小得多
编辑2
请看一下 Edit1
实际上,我需要知道的只是可以MP4按帧读取的Android API ?也许某种getNextFrame()方法?
像这样的东西
MP4Player player = new MP4Player(PATH_TO_MY_MP4_FILE);
void readMP4(){
Bitmap b;
while(player.hasNext()){ …Run Code Online (Sandbox Code Playgroud)