Extraer mapa de bits del vídeo en android

Estoy tratando de extraer todos los marcos de un video.
Siguiendo el código quiero buscar los primeros 30 cuadros de un vídeo, pero conseguí solamente el primer marco 30 veces.

private ArrayList<Bitmap> getFrames(String path) { try { ArrayList<Bitmap> bArray = new ArrayList<Bitmap>(); bArray.clear(); MediaMetadataRetriever mRetriever = new MediaMetadataRetriever(); mRetriever.setDataSource("/sdcard/myvideo.mp4"); for (int i = 0; i < 30; i++) { bArray.add(mRetriever.getFrameAtTime(1000*i, MediaMetadataRetriever.OPTION_CLOSEST_SYNC)); } return bArray; } catch (Exception e) { return null; } } 

Ahora, ¿cómo puedo obtener todos los cuadros de un video?

El soporte de vídeo en Android SDK es limitado y la extracción de fotogramas para vídeos codificados en H264 sólo es posible para fotogramas clave. Para extraer un marco arbitrario, necesitará usar una biblioteca como FFmpegMediaMetadataRetriever que utiliza código nativo para extraer datos del vídeo. Es muy rápido, viene con binarios precompilados (para ARM y x86) por lo que no es necesario profundizar en C ++ y makefiles, está bajo licencia de Apache 2.0 y viene con una aplicación demo de Android.

También hay una biblioteca Java pura, JCodec pero es más lenta y cuando la usé el año pasado los colores del marco extraído fueron distorsionados.

GetFrameAt obtiene datos en milisegundos pero está incrementando .001 milisegundos en el bucle for.

  for(int i=1000000;i<millis*1000;i+=1000000) // for incrementing 1s use 1000 { bArray.add(mRetriever.getFrameAtTime(i, MediaMetadataRetriever.OPTION_CLOSEST_SYNC)); } 

Cámbielo como arriba. Arriba se muestra para crear lo que desea. Yo también lo respondí aquí

  • Cómo obtener la velocidad de fotogramas de vídeo en Android OS?
  • ¿Cómo transmitir vídeo directamente entre dvr (servidor) y el teléfono móvil con android (cliente)?
  • Pantalla negra al volver a la actividad de reproducción de vídeo en Android
  • Crear video desde imágenes
  • Reproducción automática de vídeos (vista de lista)
  • Cómo recortar vídeo en android (sin ffmpeg)?
  • Eventos VideoView onTouch: pausar / reanudar vídeo y mostrar / ocultar MediaController y ActionBar
  • Superposición de ScrollView durante la reproducción de vídeo
  • La aplicación permite la reproducción de fondo de videos, problemas de Córdoba, Google Play rechaza aplicaciones
  • Buscando FFmpeg Wrappers para Android
  • Android VideoView crop_center
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.