Android - OpenGL ES 2 - 在顶点上显示视频 (SurfaceView)
Android - OpenGL ES 2 - Display video on vertices (SurfaceView)
现在我使用 SurfaceView 通过 OpenGL ES 2.0 在顶点上显示图像。
我不能使用 GLSurfaceView,因为我想自己管理 OpenGL 上下文。
我还使用离屏表面通过 MediaCodec 对我的 OpenGL 场景的视频进行编码。
在 Java 中加载图像,但在 C++ (NDK) 中完成绘制调用。
下一步也是在顶点上显示视频(来自文件)。所以我想我需要加载视频的每一帧(解码),并像图像一样(将图像放在顶点上)。但我不知道如何检索视频文件的帧,如 Bitmap 或 GLint ?这可能还是有不同的解决方案?提前致谢!
您可以使用 SurfaceTexture。 SurfaceTexture 的目的是获取发送到其 Surface 的任何内容并使其作为 GLES 纹理可用。
您可以在 Grafika's "texture from camera" Activity.
中找到在 GLES 矩形上显示实时摄像头源的示例
您没有说明解码视频的来源是什么,但只要它可以将其输出发送到 Surface,整个过程就相当高效——帧通过句柄传递,而不是复制。另一种方法是解码视频帧,必要时将 YUV 转换为 RGB,然后使用 glTexImage2D()
上传每个帧。那会慢很多。
现在我使用 SurfaceView 通过 OpenGL ES 2.0 在顶点上显示图像。 我不能使用 GLSurfaceView,因为我想自己管理 OpenGL 上下文。 我还使用离屏表面通过 MediaCodec 对我的 OpenGL 场景的视频进行编码。
在 Java 中加载图像,但在 C++ (NDK) 中完成绘制调用。
下一步也是在顶点上显示视频(来自文件)。所以我想我需要加载视频的每一帧(解码),并像图像一样(将图像放在顶点上)。但我不知道如何检索视频文件的帧,如 Bitmap 或 GLint ?这可能还是有不同的解决方案?提前致谢!
您可以使用 SurfaceTexture。 SurfaceTexture 的目的是获取发送到其 Surface 的任何内容并使其作为 GLES 纹理可用。
您可以在 Grafika's "texture from camera" Activity.
中找到在 GLES 矩形上显示实时摄像头源的示例您没有说明解码视频的来源是什么,但只要它可以将其输出发送到 Surface,整个过程就相当高效——帧通过句柄传递,而不是复制。另一种方法是解码视频帧,必要时将 YUV 转换为 RGB,然后使用 glTexImage2D()
上传每个帧。那会慢很多。