Android - OpenGL ES 2 - 在顶点上显示视频(SurfaceView)



现在我使用SurfaceView通过OpenGL ES 2.0在顶点上显示图像。我不能使用GLSurfaceView,因为我想管理OpenGL上下文。我还使用屏幕外的Surface通过MediaCodec对我的OpenGL场景的视频进行编码。

图像的加载是在 Java 中完成的,但绘制调用是在C++ (NDK) 中完成的。

下一步是在顶点上显示视频(来自文件)。所以我想我需要加载视频的每一帧(解码),并做与图像相同的操作(将图像放在顶点上)。但是我不知道如何检索视频文件的帧,如位图或GLint?这可能还是有不同的解决方案?提前谢谢你!

您可以使用

SurfaceTexture。 SurfaceTexture的目的是获取发送到其Surface的任何内容,并使其作为GLES纹理提供。

您可以在 Grafika 的"来自相机的纹理"活动中找到在 GLES 矩形上显示实时摄像机源的示例。

你没有说解码视频的来源是什么,但只要它可以将其输出发送到Surface,整个事情就相当有效 - 帧通过句柄传递,而不是复制。 另一种方法是解码视频帧,必要时将 YUV 转换为 RGB,并使用 glTexImage2D() 上传每个帧。 那会慢得多。

最新更新