Extraer / modificar marcos de video en Android
Tengo un archivo de video. Quiero obtener cada fotograma del vídeo y hacer algunas modificaciones en el marco, como dibujar otro mapa de bits en que, poner un poco de texto, etc
¿Hay alguna API / marco disponible para obtener marcos de vídeo en Android? He hecho algo similar en iOS usando su AVFramework.
- Cómo transmitir vídeo desde Internet a través de nanoHTTPd a VideoView
- Archivos no eliminados al borrar y aún mostrados en Listview
- Aplicación de efectos en el video que se está reproduciendo
- Reproducir video local en la vista web
- ¿Es Android 2.2 HTTP streaming progresivo = HTTP Live Streaming?
Si es posible con ffmpeg, utilizaré algunos de los NDK de código abierto disponibles.
- Marcas de tiempo de presentación incorrectas al buscar hacia atrás a través de vídeo MP4
- El video no se reproduce en la vista web de Android
- Android Crear miniatura de video en un momento específico
- Resample / upsample sonidos de 8Khz a 48Khz (Java / Android)
- Android: graba vídeo en la misma orientación independientemente de la orientación del dispositivo
- Android MediaPlayer seekTo no funciona
- Cómo obtener el ID de video de YouTube, incluidos los parámetros
- Obtención de pantalla en negro cuando se agrega ExoPlayer a GLSurfaceView
Opción A:
Puede crear un objeto SurfaceTexture y adjuntarlo al MediaPlayer de la siguiente manera
myPlayer = new MediaPlayer ... myRedirectionSurface = new Surface(mySurfaceTexture); myPlayer->setSurface(myRedirectionSurface);
De esta manera, el flujo decodificado del reproductor es "redirigido" a SurfaceTexture y no al SurfaceView. El OnFrameAvailableListener se llama cuando tiene disponible un marco decodificado. Para acceder / modificar la imagen, puede utilizar los métodos de bloqueo / desbloqueo de la superficie en myRedirectionSurface.
NOTA IMPORTANTE: Necesita tener soporte API 14 para que esto funcione.
Opción B:
Como ha indicado la probabilidad de usar ffmpeg, puede lograr lo que pretende, ya que tiene acceso completo a los marcos de salida del decodificador. Puede comenzar con el puerto ffmpeg de RockPlayer o MoboPlayer. Pero en esta opción, el renderizado de la salida de vídeo de NDK no es staright-forward. !
- Obtener 'No se puede resolver el método' addOnCompletionListener () '…' al intentar colocar algún código dentro del método onClick () de builder.setPositiveButton
- ¿Cómo implementar callbacks usando IntentService en Android?