2017-02-12 1 views
0

Si vous essayez d'extraire chaque image d'un fichier vidéo à l'aide de javaCV, FFFmpegFramGrabber et d'enregistrer en tant que jpg, vous obtenez la même image à chaque fois.Obtention de la même image à chaque fois à l'aide de FFmpegFrameGrabber.grabImage() dans 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 { 

      } 
} 

Répondre

0

La boucle semble incorrecte. Voici comment cette boucle devrait être:

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

obtenir toujours la même image à chaque fois, mais quand noyant la valeur i incréments comme il devrait être, mais l'image de sortie est le même à chaque fois – AlphabateCoder

+0

On ne sait pas comment vous générez 'file_name'. Vous ne créez probablement pas de nouveau fichier pour chaque image. –

+0

Merci Alex maintenant obtenir tous les cadres au besoin. mais le problème est avec la latence, obtenant seulement 2 images par seconde. – AlphabateCoder