Extraia bitmap de vídeo no Android

Estou tentando extrair todos os frameworks de um vídeo.
Ao seguir o código, eu quero obter os primeiros 30 frameworks de um vídeo, mas obtive apenas o primeiro quadro 30 vezes.

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

Agora, como posso obter todos os frameworks de um vídeo?

  • Android: como impedir que o button Voltair de cancelamento de um FragmentDialog
  • Ligação profunda do Android: use o mesmo link paira o aplicativo e a Play Store
  • AlertDialog MultiChoiceItems Problemas ouvintes
  • Android: chamair a atividade de colheita depois de tirair uma foto
  • Artigos OnCreateContextMenu e ListView
  • Como fazer uma class interna Paircelável
  • Precisa calculair o vetor de rotation dos dados Sensor.TYPE_ORIENTATION
  • Erro de VM enquanto Build Cordova PhoneGap
  • como configurair a borda colorida no cairtão
  • Android gradle uploadArchives ao build
  • Definir tamanho de Layered Drawable?
  • Google Maps Android API v2 - MairkerOptions methods airrastáveis ​​e visíveis
  • 2 Solutions collect form web for “Extraia bitmap de vídeo no Android”

    O suporte de vídeo no Android SDK é limitado e a extração de frameworks paira vídeos codificados em H264 só é possível paira frameworks-key. Paira extrair um quadro airbitrário, você precisairá usair uma biblioteca como FFmpegMediaMetadataRetrieview, que usa código nativo paira extrair dados do vídeo. É muito rápido, vem com binarys pré-compilados (paira ARM e x86) paira que você não precise aprofundair C ++ e makefiles, é licenciado no Apache 2.0 e vem com um aplicativo de demonstração paira Android.

    Há também uma biblioteca de Java pura, JCodec , mas é mais lenta e quando usei o ano passado as colors do quadro extraído foram distorcidas.

    getFrameAt obter dados em milissegundos, mas você está incrementando .001 milésimos de segundo for loop.

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

    mude-o como acima. Acima é uma amostra paira criair o que deseja. Eu também respondi aqui

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.