有效地从 TextureView 获取位图

Get Bitmap from TextureView efficiently

我正在尝试从 TextureView 获取每一帧,不幸的是尝试:

textureView.getBitmap();

性能低下的结果有没有更快的方法来获取位图。使用 NDK 会更好吗?

寻找实际例子

TextureView 接收 SurfaceTexture 上的帧,SurfaceTexture 接收发送到其 Surface 的帧并将它们转换为 GLES 纹理。要取出像素数据,必须将纹理渲染到帧缓冲区,然后用 glReadPixels() 读出。然后可以使用位图对象包装像素数据(这可能涉及也可能不涉及复制像素数据)。

使用 NDK 对您没有多大好处,因为所有需要快速 运行 的代码都已经本地实现了。

通过将数据直接发送到 SurfaceTexture 并自己执行 GLES 工作,您可能会看到一些改进,但您可能希望在 TextureView 中显示传入的帧,因此您可能节省的只是位图开销(这可能重要也可能不重要)。

如果您在您的问题中解释了帧的来源以及您想要用它们做什么,这可能会有所帮助。