diff --git a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java index d943eda..765a9ab 100644 --- a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java +++ b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java @@ -799,4 +799,25 @@ public class FFmpegUtil { return insert(gopCmd.split(" "), 2, inputPath, outputPath); } + /** + * Trim one or more segments from a single video + * @param inputPath the path of input file + * @param start1 start time of the first segment + * @param end1 end time of the first segment + * @param start2 start time of the second segment + * @param end2 end time of the second segment + * @param outputPath the path of output file + * @return the command of trim video + */ + public static String[] trimVideo(String inputPath, int start1, int end1, int start2, int end2, String outputPath) { + String trimCmd = "ffmpeg -i -filter_complex " + + "[0:v]trim=start=%d:end=%d,setpts=PTS-STARTPTS[v0];" + + "[0:a]atrim=start=%d:end=%d,asetpts=PTS-STARTPTS[a0];" + + "[0:v]trim=start=%d:end=%d,setpts=PTS-STARTPTS[v1];" + + "[0:a]atrim=start=%d:end=%d,asetpts=PTS-STARTPTS[a1];" + + "[v0][a0][v1][a1]concat=n=2:v=1:a=1[out] -map [out]"; + trimCmd = String.format(Locale.getDefault(), trimCmd, start1, end1, start1, end1, start2, end2, start2, end2); + return insert(trimCmd.split(" "), 2, inputPath, outputPath); + } + }