[英]Surface texture using Opengles3.0 on Android
我正在使用OpenGLES3.0进行视频处理。 我发现可以通过使用Android MediaExtractor
和MediaCodec
API以及Surface纹理,从视频中获取帧,如下所示。
glGenTextures( 1, &textureId );
glBindTexture(GL_TEXTURE_EXTERNAL_OES, textureId);
glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_EXTERNAL_OES, 0);
但是GLES3.0中没有这样的API。
我的问题是:OpenGLES3.0中是否有相关的API可以生成和使用表面纹理? 还是Android中还有其他一些API可以从视频中获取所有帧?
我在MediaMetadataRetriever
和FFmpegMediaMetadataRetriever
尝试了getFrameAtTime()
,但是即使使用MediaMetadataRetriever.OPTION_CLOSEST
,我也只能获取关键帧,而不是所有帧。
似乎1.1或2.0扩展在3.0中仍然可用。 因此,要使用GL_TEXTURE_EXTERNAL_OES
,只需包含gl2ext.h
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.