2016-10-13 3 views
0

Wie kann ich ein Bild als Textur laden und es durch GLES Rendern, um den MediaCodec Surface Input-Ansatz zu verwenden?Android Bild zu Video

Ich wurde von EncodeAndMuxTest Beispiel gestartet.

Vielen Dank im Voraus.

Antwort

0

Blick auf Probe aus grafika, wird es geben Ihnen einen Einblick darüber, wie Sie es

tun sollten

Hier Code Bitmap in Textur laden

int mTextureId = -1; 

public void loadTexture(Bitmap bitmap) 
{ 
    if (mTextureId != -1) { 
     int[] textureHandle = new int[1]; 

     GLES20.glGenTextures(1, textureHandle, 0); 


     GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureId); 

     GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MIN_FILTER, 
      GLES20.GL_NEAREST); 
     GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MAG_FILTER, 
      GLES20.GL_LINEAR); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_WRAP_S, 
      GLES20.GL_CLAMP_TO_EDGE); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_WRAP_T, 
      GLES20.GL_CLAMP_TO_EDGE); 
    } else { 
     GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureId); 
    } 

    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 
} 

und hier ist, wie man es machen kann inputsurface

// Create Fullframe rectangle (a class from grafika), 
mInputSurface.makeCurrent(); 
mFullFrameRect = new FullFrameRect(new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_2D)); 

.... 


// And when you want to draw it 
mInputSurface.makeCurrent(); // if its not already current 
loadTexture(bitmap); 
GLES20.glViewport(0, 0, viewWidth, viewHeight); 
mFullFrameRect.drawFrame(mTextureId, GlUtil.IDENTITY_MATRIX); 
mInputSurface.setPresentationTime(pts); 
mInputSurface.swapBuffers(); 

FullFrameRect, Texture2dProgram, GlUtil sind Klassen von Grafika, so sollten Sie cop y es oder ähnliche Funktionalität selbst implementieren

+0

Vielen Dank für Ihre Antwort. Es scheint, ich bin auf einem guten Weg, ich habe Ihre Lösung versucht, aber ich bekomme immer noch ein schwarzes Bildschirmvideo. Was ich nicht verstehe, brauche ich eine GLSurfaceView, um die Bildtextur zu rendern? Danke – Siv

+0

Ok. Ich konnte mein Bild konvertieren. tIch war meine Schuld, falsche Konfiguration für Egl-Kontext. Nochmals vielen Dank für Ihre Hilfe. – Siv

+0

@Siv wäre nützlich zu wissen, was Ihre Lösung war –