Android Video Recording de la superficie de OpenGL (GLSURFACEVIEW)

Estoy trabajando en un proyecto donde necesitamos grabar la superficie renderizada de OpenGL. (Por ejemplo si usamos GLsurfaceView, necesitamos grabar la superficie junto con el audio del MIC)

Actualmente estoy usando MediaRecorder API estableciendo la fuente de video como VIDEO_SOURCE_GRALLOC_BUFFER .

Estoy utilizando el ejemplo siguiente como el código base

Quería saber ….

  1. ¿Es este el camino correcto? . ¿Hay alguna alternativa mejor?
  2. La prueba de muestra dada en el enlace es la grabación de audio y vídeo de la EGLSURFACE, pero no se muestra correctamente.

¿Cuál podría ser la razón?
Cualquier ayuda / punteros es realmente apreciada.

Gracias,
Satish

El código que usted hace referencia no es un ejemplo, sino un código de prueba interno que ejerce una interfaz no pública. SurfaceMediaSource podría cambiar o desaparecer en una versión futura y romper su código.

Actualización: Android 4.3 (API 18) permite la entrada de superficie a MediaCodec . El ejemplo EncodeAndMuxTest muestra la grabación de marcos de OpenGL ES en un archivo .mp4.

La clase MediaRecorder no recibe la entrada Surface, así que en su caso necesitaría grabar el audio por separado y luego combinarlo con la nueva clase MediaMuxer .

Actualización # 2: Android 5.0 (API 21) permite la entrada de superficie a MediaRecorder, que a menudo es mucho más conveniente que MediaCodec. Si necesita utilizar MediaCodec, hay un ejemplo que muestra tres maneras diferentes de grabar la salida de OpenGL ES con ella en la actividad GL de Grafika .

La clase MediaProjection también puede ser útil para la grabación de pantalla.

  • Recursos para aprender desarrollando juegos con ndk + opengl en C ++?
  • Android 2D-juego, la mejor opción para los gráficos?
  • Android GLSurfaceView con fondo dibujable
  • Android opengl dibujar el modelo 3d de archivo .obj
  • ¿Hay algún dispositivo Android con un tamaño de pantalla mayor que GL_MAX_TEXTURE_SIZE?
  • Android OpenGL ES y 2D
  • ¿Cuál es la diferencia entre 'Wall Time' y 'Thread Time' en 'Tracer para OpenGL ES' en DDMS
  • ¿Cuál es el significado de la clase EGL14
  • la animación adview admob hace que glsurfaceview se retrasa
  • Plataforma C ligera y ligera (OpenGL)
  • ¿Por qué no hay un método onSurfaceDestroyed en GLSurfaceView.Renderer?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.