2015-11-30 11 views
5

Sto cercando di recuperare i frame dai file video catturati dalla fotocamera. Ho scritto una funzione di farlo e lo uso in un ciclo con tempi diversi, ricevere trame ogni 100000 (micro sec):getFrameAtTime() restituisce Same Frame

public static Bitmap getVideoFrame(long time) { 
     MediaMetadataRetriever mdr = new MediaMetadataRetriever(); 
     mdr.setDataSource(path); 
     try { 
      return mdr.getFrameAtTime((time),MediaMetadataRetriever.OPTION_CLOSEST); 
     } catch (IllegalArgumentException ex) { 
      ex.printStackTrace(); 
     } catch (RuntimeException ex) { 
      ex.printStackTrace(); 
     } finally { 
      try { 
       mdr.release(); 
      } catch (RuntimeException ex) { 
      } 
     } 

     return null; 
    } 

So quel dato momento deve essere contenuto nel microsecondi e ho cercato that.No importa cosa, getFrameAtTime() restituisce sempre lo stesso frame.

+0

Il problema potrebbe essere perché si utilizza 100_000 come un secondo quando 1 secondo = 1_000_000. –

risposta

3

Ho riscontrato lo stesso problema ma non sono riuscito a trovare una soluzione utilizzando MediaMetadataRetriever.

Tuttavia, ho fatto di utilizzare questo: https://github.com/wseemann/FFmpegMediaMetadataRetriever

Speranza che aiuta.

+1

Grazie per questo, è rimasto bloccato su questo problema per due giorni! Non riesco a credere che l'API di Android per questo abbia un'affidabilità così terribile. – hiimabear

+0

Anche se devo informare tutti che FFMMR non è affidabile per tutti i dispositivi Android e non è neanche efficiente. – Mehrdad1373

Problemi correlati