protected Box createMvhd() { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(creationTime); mvhd.setModificationTime(creationTime); mvhd.setDuration(0);//no duration in moov for fragmented movies long movieTimeScale = source.getTimescale(); mvhd.setTimescale(movieTimeScale); // find the next available trackId mvhd.setNextTrackId(2); return mvhd; }
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; }
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; }
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; }
protected Box createMvhd() { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(creationTime); mvhd.setModificationTime(creationTime); mvhd.setDuration(0);//no duration in moov for fragmented movies long[] timescales = new long[0]; for (StreamingTrack streamingTrack : source) { Mp4Arrays.copyOfAndAppend(timescales, streamingTrack.getTimescale()); } mvhd.setTimescale(lcm(timescales)); // find the next available trackId mvhd.setNextTrackId(2); return mvhd; }
/** * Creates a single 'mvhd' movie header box for a given movie. * * @param movie the concerned movie * @return an 'mvhd' box */ protected Box createMvhd(Movie movie) { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(new Date()); mvhd.setModificationTime(new Date()); long movieTimeScale = movie.getTimescale(); long duration = 0; for (Track track : movie.getTracks()) { long tracksDuration = getDuration(track) * movieTimeScale / track.getTrackMetaData().getTimescale(); if (tracksDuration > duration) { duration = tracksDuration; } } mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale); // find the next available trackId long nextTrackId = 0; for (Track track : movie.getTracks()) { nextTrackId = nextTrackId < track.getTrackMetaData().getTrackId() ? track.getTrackMetaData().getTrackId() : nextTrackId; } mvhd.setNextTrackId(++nextTrackId); return mvhd; }
/** * Creates a single 'mvhd' movie header box for a given movie. * * @param movie the concerned movie * @return an 'mvhd' box */ protected Box createMvhd(Movie movie) { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(new Date()); mvhd.setModificationTime(new Date()); long movieTimeScale = movie.getTimescale(); long duration = 0; for (Track track : movie.getTracks()) { long tracksDuration = getDuration(track) * movieTimeScale / track.getTrackMetaData().getTimescale(); if (tracksDuration > duration) { duration = tracksDuration; } } mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale); // find the next available trackId long nextTrackId = 0; for (Track track : movie.getTracks()) { nextTrackId = nextTrackId < track.getTrackMetaData().getTrackId() ? track.getTrackMetaData().getTrackId() : nextTrackId; } mvhd.setNextTrackId(++nextTrackId); return mvhd; }
/** * Creates a single 'mvhd' movie header box for a given movie. * * @param movie the concerned movie * @return an 'mvhd' box */ protected Box createMvhd(Movie movie) { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(getDate()); mvhd.setModificationTime(getDate()); mvhd.setDuration(0);//no duration in moov for fragmented movies long movieTimeScale = movie.getTimescale(); mvhd.setTimescale(movieTimeScale); // find the next available trackId long nextTrackId = 0; for (Track track : movie.getTracks()) { nextTrackId = nextTrackId < track.getTrackMetaData().getTrackId() ? track.getTrackMetaData().getTrackId() : nextTrackId; } mvhd.setNextTrackId(++nextTrackId); return mvhd; }
mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale);
mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale);
mvhd.setDuration(duration); mvhd.setTimescale(movieTimeScale);