Grabación de marcos generados por Open GL ES en android

Estoy captando marcos de la cámara y procesándolos en tiempo real a través de OpenGL ES 2.0. Ahora quiero grabarlos en un archivo de película junto con el audio. En el iPhone, tenía AVAssetWriter que se encargaría de la grabación, dándome 30fps. ¿Cuáles son mis opciones en android? Intenté buscar pero no pude encontrar ninguno.

ACTUALIZACIÓN: Para aquellos que se preguntan qué intento hacer, vea esta aplicación: https://play.google.com/store/apps/details?id=com.androidillusion.videocamillusion&hl=es

Esta es la única aplicación que encontré que podría realizar 30FPS de vídeo de representación / grabación. Mi objetivo es tratar de averiguar cómo se hace.

Una vez que capture los fotogramas de la cámara y los muestre con OpenGL, supongo que ya tiene esos fotogramas en su memoria y no necesita usar OpenGL para volver a leer las imágenes renderizadas.

Puede utilizar las bibliotecas FFmpeg o libtheora para intercalar sus secuencias de audio / vídeo en un archivo. Ambos pueden ser compilados para Android y son compatibles con NDK.

Hay un montón de tutoriales para ambas bibliotecas.

En el caso de Theora, puede convertir los fotogramas a YUV-color utilizando GLES 2 shaders.

PS Si necesita leer algo de OpenGL ES, utilice glReadPixels() y prosiga con estas bibliotecas de codificación de vídeo.

  • Convertir la textura procesada de OpenGL ES 2.0 en mapa de bits y volver
  • Cómo salvar SurfaceTexture como bitmap
  • Bajo rendimiento al ejecutar eglSwapBuffer y eglMakeCurrent
  • Tamaños de textura razonables en android
  • GLES20.glUniform4fv está dando GL_INVALID_OPERATION (1282)
  • Representación fuera de pantalla con PixelBuffer o FBO para guardar todos los gráficos en el mapa de bits (y luego en bmp / ​​jpg) del tamaño deseado (> 4096) con OpenGL ES 2.0
  • Solución para escribir el valor del búfer de profundidad / profundidad en OpenGL ES 2.0
  • LibGDX: ¿Cómo determinar si el contexto opengl se perdió?
  • La línea de dibujo de OpenGL ES 2.0 basada en movimiento, Line comienza siempre en origen
  • OpenGL ES profundidad buffer android, no puede llegar a trabajar
  • Las aplicaciones de Android OpenGL dejan de funcionar después de cargarlas en el emulador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.