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
- Usar el indicador de hardwareAcceleration con Canvas.clipPath
- La forma correcta de dibujar texto en OpenGL ES 2
- Cómo renderizar vídeo a través de openGLES2 con Android NDK
- ¿Cómo se consigue rajawali para trabajar (tutorial 1 en git)
- ¿Cuál es el significado de la clase EGL14
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.
- ¿Cómo determinar si una subida de textura tuvo éxito en OpenGL ES 2?
- Android OpenGL ES 2.0: No obtengo resultados que quiero con Matrix.traslateM
- Cómo escribir / prevenir la escritura en el buffer de profundidad OpenGL en GLSL
- Aprenda OpenGL: ¿por dónde empezar o cómo ha aprendido OpenGL?
- Android OpenGL ES 2, Dibujo de cuadrados
- Solución para escribir el valor del búfer de profundidad / profundidad en OpenGL ES 2.0
- GLSL ES falla las variables locales?
- Google Maps Android API V2 no muestra mapas en Emulator
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.