当我将视频解码到表面时,我想将我想要的帧保存为位图/jpeg 文件。我不想在屏幕上绘图,只想将 SurfaceTexture 的内容保存为图像文件。
问问题
16759 次
2 回答
10
我最近一直在看这个,在 Android 平台上。总结各种选项以及为什么它们适用/不适用。
glReadPixels() Android Java 程序员目前真正拥有的唯一选项。据说很慢。从帧缓冲区读取,而不是纹理(因此必须首先将纹理渲染到内部帧缓冲区,除非想要记录屏幕本身)。好的。有事情要做。
EGL_KHR_image_base() 似乎在本机 (NJK) 级别上可用但在 Java 中不可用的扩展。
glGetTexImage() 看起来很有希望,但在 OpenGL 2.0 ES 变体中不可用。
像素缓冲区对象 可能是做事的“正确”方式,但需要 OpenGL 3.0 ES(即选定的 Android 4.3+ 设备)。
我并不是说这是在添加任何其他地方无法获得的信息。但是有这么多看似相似的选项(仍然行不通)令人困惑。我不是 OpenGL 专家,因此很乐意纠正上述任何错误。
于 2014-03-19T14:29:43.503 回答