package com.googlecode.mp4parser.muxformats; import org.mp4parser.IsoFile; import org.mp4parser.boxes.iso14496.part14.ESDescriptorBox; import org.mp4parser.muxer.Movie; import org.mp4parser.muxer.Track; import org.mp4parser.muxer.builder.DefaultMp4Builder; import org.mp4parser.muxer.container.mp4.MovieCreator; import org.mp4parser.muxer.tracks.mjpeg.OneJpegPerIframe; import org.mp4parser.tools.Hex; import org.mp4parser.tools.Path; import java.io.File; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.util.Arrays; public class MjpegTest { public static void main(String[] args) throws IOException { IsoFile isofile = new IsoFile("C:\\content\\bbb-small\\output_320x180-mjpeg.mp4"); ESDescriptorBox esDescriptorBox = Path.getPath(isofile, "/moov[0]/trak[0]/mdia[0]/minf[0]/stbl[0]/stsd[0]/mp4v[0]/esds[0]"); byte[] d = new byte[esDescriptorBox.getData().rewind().remaining()]; esDescriptorBox.getData().get(d); System.err.println(Hex.encodeHex(d)); Movie mRef = MovieCreator.build("C:\\content\\bbb-small\\output_320x180_150.mp4"); Track refTrack = mRef.getTracks().get(0); File baseDir = new File("C:\\content\\bbb-small"); File[] iFrameJpegs = baseDir.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".jpg"); } }); Arrays.sort(iFrameJpegs); Movie mRes = new Movie(); mRes.addTrack(new OneJpegPerIframe("iframes", iFrameJpegs, refTrack)); new DefaultMp4Builder().build(mRes).writeContainer(new FileOutputStream("output-mjpeg.mp4").getChannel()); } }