public MovieHeaderBox getMovieHeaderBox() { for (Box box : getBoxes()) { if (box instanceof MovieHeaderBox) { return (MovieHeaderBox) box; } } return null; }
/** * 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; } }
mBox.addBox(userDataBox); MetaBox metaBox = new MetaBox(); userDataBox.addBox(metaBox);
meta.setDuration(box.getMovieHeaderBox().getDuration() / box.getMovieHeaderBox().getTimescale()); meta.setFrameRate(box.getMovieHeaderBox().getRate()); for (long trackid : box.getTrackNumbers()) TrackHeaderBox thb = box.getTrackMetaData(trackid).getTrackBox().getTrackHeaderBox(); if (thb.getWidth() > 0)
SampleAuxiliaryInformationSizesBox saiz = saizSaioPair.saiz; Container topLevel = ((MovieBox) trackBox.getParent()).getParent();
public int getTrackCount() { return getBoxes(TrackBox.class).size(); }
/** * Creates a fully populated 'moov' box with all child boxes. Child boxes are: * <ul> * <li>{@link #createMvhd(com.googlecode.mp4parser.authoring.Movie) mvhd}</li> * <li>{@link #createMvex(com.googlecode.mp4parser.authoring.Movie) mvex}</li> * <li>a {@link #createTrak(com.googlecode.mp4parser.authoring.Track, com.googlecode.mp4parser.authoring.Movie) trak} for every track</li> * </ul> * * @param movie the concerned movie * @return fully populated 'moov' */ protected Box createMoov(Movie movie) { MovieBox movieBox = new MovieBox(); movieBox.addBox(createMvhd(movie)); movieBox.addBox(createMvex(movie)); for (Track track : movie.getTracks()) { movieBox.addBox(createTrak(track, movie)); } // metadata here return movieBox; }
public int getTrackCount() { return getBoxes(TrackBox.class).size(); }
/** * Creates a fully populated 'moov' box with all child boxes. Child boxes are: * <ul> * <li>{@link #createMvhd(com.googlecode.mp4parser.authoring.Movie) mvhd}</li> * <li>{@link #createMvex(com.googlecode.mp4parser.authoring.Movie) mvex}</li> * <li>a {@link #createTrak(com.googlecode.mp4parser.authoring.Track, com.googlecode.mp4parser.authoring.Movie) trak} for every track</li> * </ul> * * @param movie the concerned movie * @return fully populated 'moov' */ protected Box createMoov(Movie movie) { MovieBox movieBox = new MovieBox(); movieBox.addBox(createMvhd(movie)); movieBox.addBox(createMvex(movie)); for (Track track : movie.getTracks()) { movieBox.addBox(createTrak(track, movie)); } // metadata here return movieBox; }
public int getTrackCount() { return getBoxes(TrackBox.class).size(); }
/** * Creates a fully populated 'moov' box with all child boxes. Child boxes are: * <ul> * <li>{@link #createMvhd(com.googlecode.mp4parser.authoring.Movie) mvhd}</li> * <li>{@link #createMvex(com.googlecode.mp4parser.authoring.Movie) mvex}</li> * <li>a {@link #createTrak(com.googlecode.mp4parser.authoring.Track, com.googlecode.mp4parser.authoring.Movie) trak} for every track</li> * </ul> * * @param movie the concerned movie * @return fully populated 'moov' */ protected Box createMoov(Movie movie) { MovieBox movieBox = new MovieBox(); movieBox.addBox(createMvhd(movie)); for (Track track : movie.getTracks()) { movieBox.addBox(createTrak(track, movie)); } movieBox.addBox(createMvex(movie)); // metadata here return movieBox; }
/** * 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; }
protected MovieBox createMovieBox(Mp4Movie movie) { MovieBox movieBox = new MovieBox(); MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setCreationTime(new Date()); mvhd.setModificationTime(new Date()); mvhd.setMatrix(Matrix.ROTATE_0); long movieTimeScale = getTimescale(movie); long duration = 0; for (Track track : movie.getTracks()) { long tracksDuration = track.getDuration() * movieTimeScale / track.getTimeScale(); if (tracksDuration > duration) { duration = tracksDuration; } } mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale); mvhd.setNextTrackId(movie.getTracks().size() + 1); movieBox.addBox(mvhd); for (Track track : movie.getTracks()) { movieBox.addBox(createTrackBox(track, movie)); } return movieBox; }
/** * 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; }
protected MovieBox createMovieBox(Mp4Movie movie) { MovieBox movieBox = new MovieBox(); MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setCreationTime(new Date()); mvhd.setModificationTime(new Date()); mvhd.setMatrix(Matrix.ROTATE_0); long movieTimeScale = getTimescale(movie); long duration = 0; for (Track track : movie.getTracks()) { long tracksDuration = track.getDuration() * movieTimeScale / track.getTimeScale(); if (tracksDuration > duration) { duration = tracksDuration; } } mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale); mvhd.setNextTrackId(movie.getTracks().size() + 1); movieBox.addBox(mvhd); for (Track track : movie.getTracks()) { movieBox.addBox(createTrackBox(track, movie)); } return movieBox; }
/** * 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; }
protected MovieBox createMovieBox(Mp4Movie movie) { MovieBox movieBox = new MovieBox(); MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setCreationTime(new Date()); mvhd.setModificationTime(new Date()); mvhd.setMatrix(Matrix.ROTATE_0); long movieTimeScale = getTimescale(movie); long duration = 0; for (Track track : movie.getTracks()) { long tracksDuration = track.getDuration() * movieTimeScale / track.getTimeScale(); if (tracksDuration > duration) { duration = tracksDuration; } } mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale); mvhd.setNextTrackId(movie.getTracks().size() + 1); movieBox.addBox(mvhd); for (Track track : movie.getTracks()) { movieBox.addBox(createTrackBox(track, movie)); } return movieBox; }
List<TrackBox> tb = moov.getBoxes(TrackBox.class); if (tb.size() > 0) { TrackBox track = tb.get(0);