2017-02-12 1 views
0

versuchen, jedes Bild aus einer Videodatei mit javaCV, FFFmpegFramGrabber zu extrahieren und als JPG zu speichern, wird jedes Mal der gleiche Frame bekommen.Immer den gleichen Frame mit FFmpegFrameGrabber.grabImage() in Android

 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(cVideoFilePath+ "/" + "VID_20170211_132657.mp4"); 
    try { 
     AndroidFrameConverter convertToBitmap = new AndroidFrameConverter(); 
     grabber.start(); 

     for (int i= 0; i< grabber.getFrameRate();i++){ 

      frame1 = grabber.grabImage(); 
      Bitmap bitmap = convertToBitmap.convert(frame1); 
      String date = simpleDateFormat.format(new Date()); 
      File picfile = new File(file_name); 
      if (!picfile.exists()) { 
       try { 
        picfile.createNewFile(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
      try { 

       FileOutputStream out = new FileOutputStream(picfile); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
       out.flush(); 
       out.close(); 

      } catch (IOException ex) { 

      } finally { 

      } 
} 

Antwort

0

Die Schleife sieht falsch aus. Hier ist, wie diese Schleife zu erwarten ist:

int frame_count = grabber.getLengthInFrames(); 
for (int i=0; i<frame_count; i+=grabber.getFrameRate()) 
+0

noch immer den gleichen Rahmen jedes Mal, obwohl, wenn der Wert i-Schritten überschwemmen, wie es sein sollte, aber das Ausgangsbild ist jedes Mal gleich – AlphabateCoder

+0

Es ist nicht klar, wie Sie generieren 'Dateiname'. Wahrscheinlich erstellen Sie keine neue Datei für jeden Frame. –

+0

Danke Alex jetzt alle Frames wie benötigt. aber das Problem ist mit der Latenz, nur 2 Bilder pro Sekunde zu bekommen. – AlphabateCoder

Verwandte Themen