/** * 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; }
/** * 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; }
/** * 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; }
TrackBox track = tb.get(0); TrackHeaderBox header = track.getTrackHeaderBox();
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 FragmentedMp4SampleList(long track, Container topLevel, IsoFile... fragments) { this.topLevel = topLevel; this.fragments = fragments; List<TrackBox> tbs = Path.getPaths(topLevel, "moov[0]/trak"); for (TrackBox tb : tbs) { if (tb.getTrackHeaderBox().getTrackId() == track) { trackBox = tb; } } if (trackBox == null) { throw new RuntimeException("This MP4 does not contain track " + track); } List<TrackExtendsBox> trexs = Path.getPaths(topLevel, "moov[0]/mvex[0]/trex"); for (TrackExtendsBox box : trexs) { if (box.getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { trex = box; } } sampleCache = (SoftReference<Sample>[]) Array.newInstance(SoftReference.class, size()); initAllFragments(); }
for (MovieFragmentBox moof : topLevel.getBoxes(MovieFragmentBox.class)) { for (TrackFragmentBox trackFragmentBox : moof.getBoxes(TrackFragmentBox.class)) { if (trackFragmentBox.getTrackFragmentHeaderBox().getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { trafs.add(trackFragmentBox); for (MovieFragmentBox moof : fragment.getBoxes(MovieFragmentBox.class)) { for (TrackFragmentBox trackFragmentBox : moof.getBoxes(TrackFragmentBox.class)) { if (trackFragmentBox.getTrackFragmentHeaderBox().getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { trafs.add(trackFragmentBox);
/** * Creates <code>Movie</code> object from a <code>ReadableByteChannel</code>. * * @param channel input channel * @return a representation of the movie * @throws IOException in case of I/O error during IsoFile creation */ public static Movie build(DataSource channel) throws IOException { IsoFile isoFile = new IsoFile(channel); Movie m = new Movie(); List<TrackBox> trackBoxes = isoFile.getMovieBox().getBoxes(TrackBox.class); for (TrackBox trackBox : trackBoxes) { SchemeTypeBox schm = Path.getPath(trackBox, "mdia[0]/minf[0]/stbl[0]/stsd[0]/enc.[0]/sinf[0]/schm[0]"); if (schm != null && (schm.getSchemeType().equals("cenc") || schm.getSchemeType().equals("cbc1"))) { m.addTrack(new CencMp4TrackImplImpl(channel.toString() + "[" + trackBox.getTrackHeaderBox().getTrackId() + "]", trackBox)); } else { m.addTrack(new Mp4TrackImpl(channel.toString() + "[" + trackBox.getTrackHeaderBox().getTrackId() + "]" , trackBox)); } } m.setMatrix(isoFile.getMovieBox().getMovieHeaderBox().getMatrix()); return m; } }
TrackHeaderBox thb = box.getTrackMetaData(trackid).getTrackBox().getTrackHeaderBox(); if (thb.getWidth() > 0)
if (trackBox.getMediaBox().getHandlerBox().getHandlerType().equals("vide")) { videoTrackFound = true; TrackHeaderBox trackHeaderBox = trackBox.getTrackHeaderBox();
@Override public int size() { if (size_ != -1) { return size_; } int i = 0; for (MovieFragmentBox moof : topLevel.getBoxes(MovieFragmentBox.class)) { for (TrackFragmentBox trackFragmentBox : moof.getBoxes(TrackFragmentBox.class)) { if (trackFragmentBox.getTrackFragmentHeaderBox().getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { for (TrackRunBox trackRunBox : trackFragmentBox.getBoxes(TrackRunBox.class)) { i += trackRunBox.getSampleCount(); } } } } for (IsoFile fragment : fragments) { for (MovieFragmentBox moof : fragment.getBoxes(MovieFragmentBox.class)) { for (TrackFragmentBox trackFragmentBox : moof.getBoxes(TrackFragmentBox.class)) { if (trackFragmentBox.getTrackFragmentHeaderBox().getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { for (TrackRunBox trackRunBox : trackFragmentBox.getBoxes(TrackRunBox.class)) { i += trackRunBox.getSampleCount(); } } } } } size_ = i; return i; }
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));
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));
if (tb.getTrackHeaderBox().getTrackId() == track) { trackBox = tb;
public Mp4TrackImpl(TrackBox trackBox) { final long trackId = trackBox.getTrackHeaderBox().getTrackId(); samples = new SampleList(trackBox); SampleTableBox stbl = trackBox.getMediaBox().getMediaInformationBox().getSampleTableBox(); TrackHeaderBox tkhd = trackBox.getTrackHeaderBox();
public Mp4TrackImpl(TrackBox trackBox) { final long trackId = trackBox.getTrackHeaderBox().getTrackId(); samples = new SampleList(trackBox); SampleTableBox stbl = trackBox.getMediaBox().getMediaInformationBox().getSampleTableBox(); TrackHeaderBox tkhd = trackBox.getTrackHeaderBox();
super(name); this.trackBox = trackBox; final long trackId = trackBox.getTrackHeaderBox().getTrackId(); samples = new SampleList(trackBox, fragments); SampleTableBox stbl = trackBox.getMediaBox().getMediaInformationBox().getSampleTableBox(); TrackHeaderBox tkhd = trackBox.getTrackHeaderBox();
long trackId = trackBox.getTrackHeaderBox().getTrackId(); if (trackBox.getParent().getBoxes(MovieExtendsBox.class).size() > 0) {
TrackBox track = tb.get(0); TrackHeaderBox header = track.getTrackHeaderBox();
TrackBox track = tb.get(0); TrackHeaderBox header = track.getTrackHeaderBox();