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

时间:2016-05-25 17:02:35

标签: android opengl-es android-ndk opengl-es-2.0

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

图像的加载是用Java编写的,但是调用是用C ++(NDK)完成的。

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

1 个答案:

答案 0 :(得分:3)

您可以使用SurfaceTexture。 SurfaceTexture的目的是将任何发送到其Surface的内容并使其作为GLES纹理使用。

您可以在Grafika's“纹理来自相机”活动中找到在GLES矩形上显示实时相机Feed的示例。

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