2016-06-01 12 views
0

Ich verwende OpenGLES3.0, um Videoverarbeitung zu tun. Ich habe festgestellt, dass es möglich ist, Frames von einem Video mit Android MediaExtractor und MediaCodec API zusammen mit Oberflächenstruktur, wie unten zu bekommen.Oberflächenstruktur mit OpenGL3.0 auf Android

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); 

Aber es gibt keine solche API in GLES3.0.

Meine Frage ist: gibt es eine relevante API in OpenGLES3.0 zu generieren und Oberflächenstruktur zu verwenden? Oder gibt es noch andere APIs in Android, um alle Frames von einem Video zu erhalten?

Ich versuchte getFrameAtTime() in MediaMetadataRetriever und FFmpegMediaMetadataRetriever, aber ich konnte nur die Schlüsselrahmen und nicht alle Rahmen, auch mit MediaMetadataRetriever.OPTION_CLOSEST.

Antwort

0

Es scheint, dass 1.1 oder 2.0 Erweiterungen noch in 3.0 verfügbar sind. Um GL_TEXTURE_EXTERNAL_OES zu verwenden, müssen Sie nur die gl2ext.h einschließen.