Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Clip createSlideshowFromImagesAndAudio (ArrayList<Clip> images, Clip audio, Clip out, int durationPerSlide, ShellCallback sc) throws Exception
- {
- final String imageBasePath = new File(mFileTemp,"image-").getCanonicalPath();
- final String imageBaseVariablePath = imageBasePath + "%03d.jpg";
- ArrayList<String> cmd = new ArrayList<String>();
- String newImagePath = null;
- int imageCounter = 0;
- Clip imageCover = images.get(0); //add the first image twice
- cmd = new ArrayList<String>();
- cmd.add(mFfmpegBin);
- cmd.add("-y");
- cmd.add("-i");
- cmd.add(new File(imageCover.path).getCanonicalPath());
- if (out.width != -1 && out.height != -1)
- {
- cmd.add("-s");
- cmd.add(out.width + "x" + out.height);
- }
- newImagePath = imageBasePath + String.format(Locale.US, "%03d", imageCounter++) + ".jpg";
- cmd.add(newImagePath);
- execFFMPEG(cmd, sc);
- for (Clip image : images)
- {
- cmd = new ArrayList<String>();
- cmd.add(mFfmpegBin);
- cmd.add("-y");
- cmd.add("-i");
- cmd.add(new File(image.path).getCanonicalPath());
- if (out.width != -1 && out.height != -1)
- {
- cmd.add("-s");
- cmd.add(out.width + "x" + out.height);
- }
- newImagePath = imageBasePath + String.format(Locale.US, "%03d", imageCounter++) + ".jpg";
- cmd.add(newImagePath);
- execFFMPEG(cmd, sc);
- }
- //then combine them
- cmd = new ArrayList<String>();
- cmd.add(mFfmpegBin);
- cmd.add("-y");
- cmd.add("-loop");
- cmd.add("0");
- cmd.add("-f");
- cmd.add("image2");
- cmd.add("-r");
- cmd.add("1/" + durationPerSlide);
- cmd.add("-i");
- cmd.add(imageBaseVariablePath);
- cmd.add("-strict");
- cmd.add("-2");//experimental
- String fileTempMpg = new File(mFileTemp,"tmp.mpg").getCanonicalPath();
- cmd.add(fileTempMpg);
- execFFMPEG(cmd, sc);
- //now combine and encode
- cmd = new ArrayList<String>();
- cmd.add(mFfmpegBin);
- cmd.add("-y");
- cmd.add("-i");
- cmd.add(fileTempMpg);
- if (audio != null && audio.path != null)
- {
- cmd.add("-i");
- cmd.add(new File(audio.path).getCanonicalPath());
- cmd.add("-map");
- cmd.add("0:0");
- cmd.add("-map");
- cmd.add("1:0");
- cmd.add(Argument.AUDIOCODEC);
- cmd.add("aac");
- cmd.add(Argument.BITRATE_AUDIO);
- cmd.add("128k");
- }
- cmd.add("-strict");
- cmd.add("-2");//experimental
- cmd.add(Argument.VIDEOCODEC);
- if (out.videoCodec != null)
- cmd.add(out.videoCodec);
- else
- cmd.add("mpeg4");
- if (out.videoBitrate != -1)
- {
- cmd.add(Argument.BITRATE_VIDEO);
- cmd.add(out.videoBitrate + "k");
- }
- cmd.add(new File(out.path).getCanonicalPath());
- execFFMPEG(cmd, sc);
- return out;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement