package org.jcodec.movtool.streaming;
import java.lang.IllegalStateException;
import java.lang.System;
import static java.lang.Integer.parseInt;
import org.jcodec.common.io.IOUtils;
import org.jcodec.containers.mp4.MP4Util;
import org.jcodec.containers.mp4.boxes.MovieBox;
import org.jcodec.containers.mp4.boxes.TrakBox;
import org.jcodec.movtool.streaming.tracks.ConcatTrack;
import org.jcodec.movtool.streaming.tracks.FilePool;
import org.jcodec.movtool.streaming.tracks.RealTrack;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.Comparator;
/**
* This class is part of JCodec ( www.jcodec.org ) This software is distributed
* under FreeBSD License
*
* @author The JCodec project
*
*/
public class ConcatMain {
public static void main1(String[] args) throws Exception {
File folder = new File(System.getProperty("user.home"), "upload");
File[] listFiles = folder.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.startsWith("chunk") && name.endsWith(".mov");
}
});
Arrays.sort(listFiles, new Comparator<File>() {
public int compare(File o1, File o2) {
return parseInt(o1.getName().replaceAll("[^0-9]", ""))
- parseInt(o2.getName().replaceAll("[^0-9]", ""));
}
});
RealTrack[] tracks = new RealTrack[listFiles.length];
for (int i = 0; i < tracks.length; i++) {
File m1 = listFiles[i];
FilePool ch1 = new FilePool(m1, 1);
MovieBox mov1 = MP4Util.parseMovie(m1);
TrakBox v1 = mov1.getVideoTrack();
RealTrack rt = new RealTrack(mov1, v1, ch1);
tracks[i] = rt;
}
ConcatTrack concat = new ConcatTrack(tracks);
VirtualMovie vm = new VirtualMP4Movie(concat);
BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(new File(
System.getProperty("user.home"), "concat.mov")));
MovieRange movieRange = new MovieRange(vm, 0, vm.size() - 1);
IOUtils.copy(movieRange, os);
movieRange.close();
os.close();
vm.close();
}
}