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()); 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(); } }