import com.coremedia.iso.IsoBufferWrapperImpl;
import com.coremedia.iso.IsoFile;
import com.coremedia.iso.IsoOutputStream;
import com.googlecode.mp4parser.authoring.Movie;
import com.googlecode.mp4parser.authoring.Track;
import com.googlecode.mp4parser.authoring.builder.DefaultMp4Builder;
import com.googlecode.mp4parser.authoring.container.mp4.MovieCreator;
import com.googlecode.mp4parser.authoring.tracks.AppendTrack;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;
/**
*
*/
public class Concat {
public static void main(String[] args) throws IOException {
Movie video1 = new MovieCreator().build(new IsoBufferWrapperImpl(readFully(Concat.class.getResourceAsStream("/76.mp4"))));
Movie video2 = new MovieCreator().build(new IsoBufferWrapperImpl(readFully(Concat.class.getResourceAsStream("/7.mp4"))));
Track v1 = video1.getTracks().get(0);
Track v2 = video2.getTracks().get(0);
video1.setTracks(new LinkedList<Track>());
video1.addTrack(new AppendTrack(v1, v2));
IsoFile out = new DefaultMp4Builder().build(video1);
FileOutputStream fos = new FileOutputStream(new File(String.format("output.mp4")));
BufferedOutputStream bos = new BufferedOutputStream(fos);
out.getBox(new IsoOutputStream(bos));
bos.close();
}
static byte[] readFully(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
int n = 0;
while (-1 != (n = is.read(buffer))) {
baos.write(buffer, 0, n);
}
return baos.toByteArray();
}
}