package org.jcodec.containers.mp4.demuxer; import org.jcodec.common.AutoFileChannelWrapper; import org.jcodec.common.DemuxerTrack; import org.jcodec.common.io.SeekableByteChannel; import org.jcodec.common.model.Packet; import org.jcodec.platform.Platform; import org.junit.Test; import java.io.File; import java.lang.System; import java.net.URL; import java.nio.ByteBuffer; public class MP4DemuxerTest { // broken file // iphone generated video has 171 samples at 84 samples per chunk but only 2 chunks // 2 chunk * 84 samples == 168 expected samples // but 171 actual samples @Test public void testAudioTrack() throws Exception { URL resource = Platform.getResource(this.getClass(), "37.mp4"); System.out.println(resource); File source = new File(resource.getFile()); SeekableByteChannel input = new AutoFileChannelWrapper(source); MP4Demuxer demuxer = new MP4Demuxer(input); DemuxerTrack track = demuxer.getAudioTracks().get(0); Packet packet; while (null != (packet = track.nextFrame())) { ByteBuffer data = packet.getData(); } } }