Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在内存中管理视频帧_Java_Android_Memory_Video_Frames - Fatal编程技术网

Java 如何在内存中管理视频帧

Java 如何在内存中管理视频帧,java,android,memory,video,frames,Java,Android,Memory,Video,Frames,我的应用程序正在用FFMPEG抓取视频的所有帧。 我的问题是,我在哪里保存所有帧?我已经尝试将帧转换为位图并保存到arraylist,但应用程序显示内存不足。另外,当我将IplImages保存到arraylist(它运行)时,需要500 MB以上的空间。我使用了一个低质量的视频。那些具有高质量的帧也不能使用IplImages运行。您无法在内存中加载所有这些帧,因为内存有限。为了检查谷歌Android堆大小的限制,每个设备的堆大小都不一样,但没有那么大。您必须逐帧处理它并将其保存在SD卡之类的存储

我的应用程序正在用FFMPEG抓取视频的所有帧。

我的问题是,我在哪里保存所有帧?
我已经尝试将帧转换为位图并保存到arraylist,但应用程序显示内存不足。
另外,当我将IplImages保存到arraylist(它运行)时,需要500 MB以上的空间。
我使用了一个低质量的视频。那些具有高质量的帧也不能使用IplImages运行。

您无法在内存中加载所有这些帧,因为内存有限。为了检查谷歌Android堆大小的限制,每个设备的堆大小都不一样,但没有那么大。您必须逐帧处理它并将其保存在SD卡之类的存储设备上。

但是如果应用程序同时在SD卡上逐帧读取和保存,则仅上传视频就太慢了,对吗?但可能比应用程序消耗大量ram要好。您知道FFmpeg的许可证吗?它是GPL,这意味着如果你在你的应用程序中使用它,那么你的应用程序的许可证也必须是GPL,因此是开源的