繁体   English   中英

在Android上使用Opengles3.0的表面纹理

[英]Surface texture using Opengles3.0 on Android

我正在使用OpenGLES3.0进行视频处理。 我发现可以通过使用Android MediaExtractorMediaCodec 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可以从视频中获取所有帧?

我在MediaMetadataRetrieverFFmpegMediaMetadataRetriever尝试了getFrameAtTime() ,但是即使使用MediaMetadataRetriever.OPTION_CLOSEST ,我也只能获取关键帧,而不是所有帧。

似乎1.1或2.0扩展在3.0中仍然可用。 因此,要使用GL_TEXTURE_EXTERNAL_OES ,只需包含gl2ext.h

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM