Advertisement
Guest User

Untitled

a guest
Feb 24th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1.     public Clip createSlideshowFromImagesAndAudio (ArrayList<Clip> images, Clip audio,  Clip out, int durationPerSlide, ShellCallback sc) throws Exception
  2.     {
  3.  
  4.         final String imageBasePath = new File(mFileTemp,"image-").getCanonicalPath();
  5.         final String imageBaseVariablePath = imageBasePath + "%03d.jpg";
  6.        
  7.        
  8.         ArrayList<String> cmd = new ArrayList<String>();
  9.        
  10.    
  11.         String newImagePath = null;
  12.         int imageCounter = 0;
  13.        
  14.         Clip imageCover = images.get(0); //add the first image twice
  15.        
  16.         cmd = new ArrayList<String>();
  17.         cmd.add(mFfmpegBin);
  18.         cmd.add("-y");
  19.        
  20.         cmd.add("-i");
  21.         cmd.add(new File(imageCover.path).getCanonicalPath());
  22.        
  23.         if (out.width != -1 && out.height != -1)
  24.         {
  25.             cmd.add("-s");
  26.             cmd.add(out.width + "x" + out.height);
  27.         }
  28.        
  29.         newImagePath = imageBasePath + String.format(Locale.US, "%03d", imageCounter++) + ".jpg";
  30.         cmd.add(newImagePath);
  31.        
  32.         execFFMPEG(cmd, sc);
  33.        
  34.         for (Clip image : images)
  35.         {
  36.             cmd = new ArrayList<String>();
  37.             cmd.add(mFfmpegBin);
  38.             cmd.add("-y");
  39.            
  40.             cmd.add("-i");
  41.             cmd.add(new File(image.path).getCanonicalPath());
  42.            
  43.             if (out.width != -1 && out.height != -1)
  44.             {
  45.                 cmd.add("-s");
  46.                 cmd.add(out.width + "x" + out.height);
  47.             }
  48.            
  49.             newImagePath = imageBasePath + String.format(Locale.US, "%03d", imageCounter++) + ".jpg";
  50.             cmd.add(newImagePath);
  51.            
  52.             execFFMPEG(cmd, sc);
  53.            
  54.            
  55.         }
  56.        
  57.         //then combine them
  58.         cmd = new ArrayList<String>();
  59.        
  60.         cmd.add(mFfmpegBin);
  61.         cmd.add("-y");
  62.        
  63.         cmd.add("-loop");
  64.         cmd.add("0");
  65.        
  66.         cmd.add("-f");
  67.         cmd.add("image2");
  68.        
  69.         cmd.add("-r");
  70.         cmd.add("1/" + durationPerSlide);
  71.        
  72.         cmd.add("-i");
  73.         cmd.add(imageBaseVariablePath);
  74.        
  75.         cmd.add("-strict");
  76.         cmd.add("-2");//experimental
  77.    
  78.         String fileTempMpg = new File(mFileTemp,"tmp.mpg").getCanonicalPath();
  79.        
  80.         cmd.add(fileTempMpg);
  81.        
  82.         execFFMPEG(cmd, sc);
  83.        
  84.         //now combine and encode
  85.         cmd = new ArrayList<String>();
  86.        
  87.         cmd.add(mFfmpegBin);
  88.         cmd.add("-y");
  89.        
  90.         cmd.add("-i");
  91.         cmd.add(fileTempMpg);
  92.        
  93.         if (audio != null && audio.path != null)
  94.         {
  95.             cmd.add("-i");
  96.             cmd.add(new File(audio.path).getCanonicalPath());
  97.            
  98.             cmd.add("-map");
  99.             cmd.add("0:0");
  100.            
  101.             cmd.add("-map");
  102.             cmd.add("1:0");
  103.            
  104.             cmd.add(Argument.AUDIOCODEC);
  105.             cmd.add("aac");
  106.            
  107.             cmd.add(Argument.BITRATE_AUDIO);
  108.             cmd.add("128k");
  109.            
  110.         }
  111.        
  112.         cmd.add("-strict");
  113.         cmd.add("-2");//experimental
  114.        
  115.         cmd.add(Argument.VIDEOCODEC);
  116.        
  117.  
  118.         if (out.videoCodec != null)
  119.             cmd.add(out.videoCodec);
  120.         else
  121.             cmd.add("mpeg4");
  122.  
  123.         if (out.videoBitrate != -1)
  124.         {
  125.             cmd.add(Argument.BITRATE_VIDEO);
  126.             cmd.add(out.videoBitrate + "k");
  127.         }
  128.        
  129.         cmd.add(new File(out.path).getCanonicalPath());
  130.        
  131.        
  132.         execFFMPEG(cmd, sc);
  133.        
  134.         return out;
  135.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement