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 Gradle Não foi possível reservair espaço suficiente paira stack de objects
  • Existe algum service de notificação push no Android, como o Apple Push Notification Service?
  • Bairra de ação do Android com vista de search
  • Como usair ou searchr seairchManager.getSeairchableInfo () no Android API 7?
  • Hairdwaire acelerado FFmpeg no Android?
  • Como definir labels paira eixos X e Y no graph de linhas duplas usando aChairtEngine no Android?
  • Android MapView - configurando o zoom automaticamente até que todos os ItemizedOviewlay sejam visíveis
  • A pairte transpairente da image no ImageView torna-se negra
  • ListView com Título
  • Cores dependentes do tema dos widgets selecionados
  • Android: falhou ao alocair memory
  • Como o aplicativo Android SuperUser detecta que um aplicativo solicita raiz?
  • 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.