TrackBox track = tb.get(0); TrackHeaderBox header = track.getTrackHeaderBox(); SampleTableBox samples = track.getSampleTableBox(); SampleDescriptionBox sampleDesc = samples.getSampleDescriptionBox(); if (sampleDesc != null) {
/** * Gets the SampleTableBox at mdia/minf/stbl if existing. * * @return the SampleTableBox or <code>null</code> */ public SampleTableBox getSampleTableBox() { MediaBox mdia = getMediaBox(); if (mdia != null) { MediaInformationBox minf = mdia.getMediaInformationBox(); if (minf != null) { return minf.getSampleTableBox(); } } return null; }
public SampleList(TrackBox trackBox, IsoFile... additionalFragments) { Container topLevel = ((Box) trackBox.getParent()).getParent(); if (trackBox.getParent().getBoxes(MovieExtendsBox.class).isEmpty()) { if (additionalFragments.length > 0) { throw new RuntimeException("The TrackBox comes from a standard MP4 file. Only use the additionalFragments param if you are dealing with ( fragmented MP4 files AND additional fragments in standalone files )"); } samples = new DefaultMp4SampleList(trackBox.getTrackHeaderBox().getTrackId(), topLevel); } else { samples = new FragmentedMp4SampleList(trackBox.getTrackHeaderBox().getTrackId(), topLevel, additionalFragments); } }
public SampleList(TrackBox trackBox) { initIsoFile(trackBox.getIsoFile()); // where are we? SampleSizeBox sampleSizeBox = trackBox.getSampleTableBox().getSampleSizeBox(); ChunkOffsetBox chunkOffsetBox = trackBox.getSampleTableBox().getChunkOffsetBox(); SampleToChunkBox sampleToChunkBox = trackBox.getSampleTableBox().getSampleToChunkBox(); List<MovieExtendsBox> movieExtendsBoxes = trackBox.getParent().getBoxes(MovieExtendsBox.class); List<TrackExtendsBox> trackExtendsBoxes = movieExtendsBoxes.get(0).getBoxes(TrackExtendsBox.class); for (TrackExtendsBox trackExtendsBox : trackExtendsBoxes) { if (trackExtendsBox.getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { for (MovieFragmentBox movieFragmentBox : trackBox.getIsoFile().getBoxes(MovieFragmentBox.class)) { offsets2Sizes.putAll(getOffsets(movieFragmentBox, trackBox.getTrackHeaderBox().getTrackId(), trackExtendsBox));
public Mp4TrackImpl(TrackBox trackBox) { final long trackId = trackBox.getTrackHeaderBox().getTrackId(); samples = new SampleList(trackBox); SampleTableBox stbl = trackBox.getMediaBox().getMediaInformationBox().getSampleTableBox(); handler = trackBox.getMediaBox().getHandlerBox().getHandlerType(); mihd = trackBox.getMediaBox().getMediaInformationBox().getMediaHeaderBox(); decodingTimeEntries = new LinkedList<TimeToSampleBox.Entry>(); compositionTimeEntries = new LinkedList<CompositionTimeToSample.Entry>(); final List<MovieExtendsBox> movieExtendsBoxes = trackBox.getParent().getBoxes(MovieExtendsBox.class); if (movieExtendsBoxes.size() > 0) { for (MovieExtendsBox mvex : movieExtendsBoxes) { for (MovieFragmentBox movieFragmentBox : trackBox.getIsoFile().getBoxes(MovieFragmentBox.class)) { List<TrackFragmentBox> trafs = movieFragmentBox.getBoxes(TrackFragmentBox.class); for (TrackFragmentBox traf : trafs) { MediaHeaderBox mdhd = trackBox.getMediaBox().getMediaHeaderBox(); TrackHeaderBox tkhd = trackBox.getTrackHeaderBox();
/** * Returns the track numbers associated with this <code>MovieBox</code>. * * @return the tracknumbers (IDs) of the tracks in their order of appearance in the file */ public long[] getTrackNumbers() { List<TrackBox> trackBoxes = this.getBoxes(TrackBox.class); long[] trackNumbers = new long[trackBoxes.size()]; for (int trackCounter = 0; trackCounter < trackBoxes.size(); trackCounter++) { trackNumbers[trackCounter] = trackBoxes.get(trackCounter).getTrackHeaderBox().getTrackId(); } return trackNumbers; }
long trackId = trackBox.getTrackHeaderBox().getTrackId(); if (trackBox.getParent().getBoxes(MovieExtendsBox.class).size() > 0) { for (MovieFragmentBox movieFragmentBox : ((Box) trackBox.getParent()).getParent().getBoxes(MovieFragmentBox.class)) { List<TrackFragmentBox> trafs = movieFragmentBox.getBoxes(TrackFragmentBox.class); for (TrackFragmentBox traf : trafs) { long baseOffset; if (traf.getTrackFragmentHeaderBox().hasBaseDataOffset()) { base = ((Box) trackBox.getParent()).getParent(); baseOffset = traf.getTrackFragmentHeaderBox().getBaseDataOffset(); } else { chunkOffsetBox = Path.getPath(trackBox, "mdia[0]/minf[0]/stbl[0]/co64[0]"); long[] chunkSizes = trackBox.getSampleTableBox().getSampleToChunkBox().blowup(chunkOffsetBox.getChunkOffsets().length); SampleAuxiliaryInformationSizesBox saiz = saizSaioPair.saiz; Container topLevel = ((MovieBox) trackBox.getParent()).getParent();
super(name); this.trackBox = trackBox; final long trackId = trackBox.getTrackHeaderBox().getTrackId(); samples = new SampleList(trackBox, fragments); SampleTableBox stbl = trackBox.getMediaBox().getMediaInformationBox().getSampleTableBox(); handler = trackBox.getMediaBox().getHandlerBox().getHandlerType(); movieFragmentBoxes.addAll(((Box) trackBox.getParent()).getParent().getBoxes(MovieFragmentBox.class)); for (IsoFile fragment : fragments) { movieFragmentBoxes.addAll(fragment.getBoxes(MovieFragmentBox.class)); final List<MovieExtendsBox> movieExtendsBoxes = trackBox.getParent().getBoxes(MovieExtendsBox.class); if (movieExtendsBoxes.size() > 0) { for (MovieExtendsBox mvex : movieExtendsBoxes) { for (TrackExtendsBox trex : trackExtendsBoxes) { if (trex.getTrackId() == trackId) { List<SubSampleInformationBox> subss = Path.getPaths(((Box) trackBox.getParent()).getParent(), "/moof/traf/subs"); if (subss.size() > 0) { subSampleInformationBox = new SubSampleInformationBox(); MediaHeaderBox mdhd = trackBox.getMediaBox().getMediaHeaderBox(); TrackHeaderBox tkhd = trackBox.getTrackHeaderBox();
if (trackBox.getMediaBox().getHandlerBox().getHandlerType().equals("vide")) { videoTrackFound = true; TrackHeaderBox trackHeaderBox = trackBox.getTrackHeaderBox();
@Override public int size() { return l2i(trackBox.getSampleTableBox().getSampleSizeBox().getSampleCount()); }
public void close() throws IOException { Container c = trackBox.getParent(); if (c instanceof BasicContainer) { ((BasicContainer) c).close(); } if (fragments != null) { for (IsoFile fragment : fragments) { fragment.close(); } } }
public SampleList(TrackBox trackBox) { initIsoFile(trackBox.getIsoFile()); // where are we? SampleSizeBox sampleSizeBox = trackBox.getSampleTableBox().getSampleSizeBox(); ChunkOffsetBox chunkOffsetBox = trackBox.getSampleTableBox().getChunkOffsetBox(); SampleToChunkBox sampleToChunkBox = trackBox.getSampleTableBox().getSampleToChunkBox(); List<MovieExtendsBox> movieExtendsBoxes = trackBox.getParent().getBoxes(MovieExtendsBox.class); List<TrackExtendsBox> trackExtendsBoxes = movieExtendsBoxes.get(0).getBoxes(TrackExtendsBox.class); for (TrackExtendsBox trackExtendsBox : trackExtendsBoxes) { if (trackExtendsBox.getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { for (MovieFragmentBox movieFragmentBox : trackBox.getIsoFile().getBoxes(MovieFragmentBox.class)) { offsets2Sizes.putAll(getOffsets(movieFragmentBox, trackBox.getTrackHeaderBox().getTrackId(), trackExtendsBox));
public Mp4TrackImpl(TrackBox trackBox) { final long trackId = trackBox.getTrackHeaderBox().getTrackId(); samples = new SampleList(trackBox); SampleTableBox stbl = trackBox.getMediaBox().getMediaInformationBox().getSampleTableBox(); handler = trackBox.getMediaBox().getHandlerBox().getHandlerType(); mihd = trackBox.getMediaBox().getMediaInformationBox().getMediaHeaderBox(); decodingTimeEntries = new LinkedList<TimeToSampleBox.Entry>(); compositionTimeEntries = new LinkedList<CompositionTimeToSample.Entry>(); final List<MovieExtendsBox> movieExtendsBoxes = trackBox.getParent().getBoxes(MovieExtendsBox.class); if (movieExtendsBoxes.size() > 0) { for (MovieExtendsBox mvex : movieExtendsBoxes) { for (MovieFragmentBox movieFragmentBox : trackBox.getIsoFile().getBoxes(MovieFragmentBox.class)) { List<TrackFragmentBox> trafs = movieFragmentBox.getBoxes(TrackFragmentBox.class); for (TrackFragmentBox traf : trafs) { MediaHeaderBox mdhd = trackBox.getMediaBox().getMediaHeaderBox(); TrackHeaderBox tkhd = trackBox.getTrackHeaderBox();
/** * Returns the track numbers associated with this <code>MovieBox</code>. * * @return the tracknumbers (IDs) of the tracks in their order of appearance in the file */ public long[] getTrackNumbers() { List<TrackBox> trackBoxes = this.getBoxes(TrackBox.class); long[] trackNumbers = new long[trackBoxes.size()]; for (int trackCounter = 0; trackCounter < trackBoxes.size(); trackCounter++) { AbstractBox trackBoxe = trackBoxes.get(trackCounter); TrackBox trackBox = (TrackBox) trackBoxe; trackNumbers[trackCounter] = trackBox.getTrackHeaderBox().getTrackId(); } return trackNumbers; }
if (tb.getTrackHeaderBox().getTrackId() == track) { trackBox = tb; throw new RuntimeException("This MP4 does not contain track " + track); chunkOffsets = trackBox.getSampleTableBox().getChunkOffsetBox().getChunkOffsets(); chunkSizes = new long[chunkOffsets.length]; ssb = trackBox.getSampleTableBox().getSampleSizeBox(); List<SampleToChunkBox.Entry> s2chunkEntries = trackBox.getSampleTableBox().getSampleToChunkBox().getEntries(); SampleToChunkBox.Entry[] entries = s2chunkEntries.toArray(new SampleToChunkBox.Entry[s2chunkEntries.size()]);
/** * Returns the track numbers associated with this <code>MovieBox</code>. * * @return the tracknumbers (IDs) of the tracks in their order of appearance in the file */ public long[] getTrackNumbers() { List<TrackBox> trackBoxes = this.getBoxes(TrackBox.class); long[] trackNumbers = new long[trackBoxes.size()]; for (int trackCounter = 0; trackCounter < trackBoxes.size(); trackCounter++) { AbstractBox trackBoxe = trackBoxes.get(trackCounter); TrackBox trackBox = (TrackBox) trackBoxe; trackNumbers[trackCounter] = trackBox.getTrackHeaderBox().getTrackId(); } return trackNumbers; }
/** * Gets the SampleTableBox at mdia/minf/stbl if existing. * * @return the SampleTableBox or <code>null</code> */ public SampleTableBox getSampleTableBox() { MediaBox mdia = getMediaBox(); if (mdia != null) { MediaInformationBox minf = mdia.getMediaInformationBox(); if (minf != null) { return minf.getSampleTableBox(); } } return null; }