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.
- ¿Cómo incrustar texto durante la grabación de vídeo en Android?
- Android cómo grabar vídeo, subir, transcodificar, descargar, jugar
- Android: captura de video en dispositivo o emulador
- Cómo obtener el ID de video de YouTube, incluidos los parámetros
- ¿Reproduce vídeos de vimeo usando el reproductor nativo de android?
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?
- Se ha abandonado BufferQueue: Al reproducir vídeo con TextureView
- SurfaceView, SurfaceTexture y MediaPlayer no pueden reproducir mi video en android
- Android SDK: Reproducción de vídeo mediante el protocolo mms
- YouTubeAndroidPlayerAPI no puede reproducir algunos videos
- Reproducir vídeo utilizando USB conectado a través de cable OTG en Android?
One Solution collect form web for “Filtro de video de Android”
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/
- Buffer de vídeo circular Android con sonido
- Error de MediaPlayer de Android No se puede reproducir este video
- Android: Copiar RawFile a Sdcard (video mp4)
- Android: dibuja el video de YouTube en SurfaceTexture
- Cómo vivir la transmisión desde Android
- Vídeo incrustado HTML5 de Android
- Los archivos de video locales no se reproducirán en la aplicación para Android de Cordova
- Procesamiento de vídeo de Android marco por cuadro durante la grabación
- ¿Cómo puedo crear un reproductor multimedia personalizado para reproducir un códec personalizado en Android?
- Error de la cámara 1001
- Establecer brillo / contraste en la captura de vídeo con Android Camera2
- Problema de compatibilidad de vídeo: el video grabado en Android no se reproduce en el iPhone