Filtro de video de Android

Estoy intentando crear una aplicación donde pueda agregar filtros a un video grabado. Básicamente, quiero replicar la funcionalidad que existe en el video de Instagram, o Viddy.

He hecho la investigación y no puedo juntar todo. He mirado en el uso de GLSurfaceView para reproducir el video grabado y sé que podría utilizar NDK para hacer la manipulación de píxeles y enviar de nuevo a la SurfaceView o guardar de alguna manera. El problema es, no sé cómo enviar los datos de píxeles porque no parece haber ninguna función para acceder a él. Esta idea vino de la función de cámara "onPreviewFrame". La función devuelve una matriz de bytes que me permite manipular los píxeles y mostrarlos.

Otra idea es usar GLSurfaceView y usar OpenGL para representar el filtro. GLSurfaceView tiene un procesador que puede establecer, pero no estoy muy familiarizado con OpenGL. Pero una vez más, esto se remonta a la obtención de los píxeles de cada marco de vídeo. También leí acerca de rasgar cada marco como una textura y luego manipular la textura en OpenGL, pero las respuestas que he encontrado no son muy detalladas.

Por último, he buscado JavaCV. Tratando de usar FFmpegFrameGrabber, pero no he tenido mucho tampoco. Quería agarrar un marco, pero cuando intento escribir ByteBuffer del marco a un ImageView, obtengo un error de "buffer no lo suficientemente grande para píxeles".

¿Cualquier guía estaría genial?

Desde Android 4.3 puede utilizar una Surface como entrada para su codificador. http://developer.android.com/about/versions/android-4.3.html#Multimedia

Así que puede utilizar GLSurfaceView y aplicar los filtros utilizando shaders fragmento.

Aquí encontrará algunos buenos ejemplos. http://bigflake.com/mediacodec/

  • Transmisión de audio y vídeo desde Android a PC / web.
  • Android frente a la cámara está grabando videos entre 7,5 y 8,0 - setVideoFrameRate no funciona - Samsung galaxy s2
  • No se pueden reproducir ciertos videos
  • cordova android - cómo jugar videofile que se encuentra dentro del proyecto en sí
  • Android MediaPlayer parpadea al reproducir vídeos en Android 4.2.2
  • Android: Reproducción y grabación simultánea de vídeo
  • Cómo incrustar VLC media player en mi aplicación para Android
  • No se pueden transmitir vídeos
  • Detectar la orientación de un vídeo grabado en android
  • Transferir flujo de video en tiempo real al servidor mediante Android
  • Configuración de encabezados para streaming de vídeo mp4 y reproducción de archivos con Exoplayer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.