/** * 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 ParsableBox createTkhd(Movie movie, Track track) { TrackHeaderBox tkhd = new TrackHeaderBox(); tkhd.setVersion(1); tkhd.setFlags(7); // enabled, in movie, in previe, in poster tkhd.setAlternateGroup(track.getTrackMetaData().getGroup()); tkhd.setCreationTime(track.getTrackMetaData().getCreationTime()); // We need to take edit list box into account in trackheader duration // but as long as I don't support edit list boxes it is sufficient to // just translate media duration to movie timescale tkhd.setDuration(0);//no duration in moov for fragmented movies tkhd.setHeight(track.getTrackMetaData().getHeight()); tkhd.setWidth(track.getTrackMetaData().getWidth()); tkhd.setLayer(track.getTrackMetaData().getLayer()); tkhd.setModificationTime(getDate()); tkhd.setTrackId(track.getTrackMetaData().getTrackId()); tkhd.setVolume(track.getTrackMetaData().getVolume()); return tkhd; }
public String toString() { StringBuilder result = new StringBuilder(); result.append("TrackHeaderBox["); result.append("creationTime=").append(getCreationTime()); result.append(";"); result.append("modificationTime=").append(getModificationTime()); result.append(";"); result.append("trackId=").append(getTrackId()); result.append(";"); result.append("duration=").append(getDuration()); result.append(";"); result.append("layer=").append(getLayer()); result.append(";"); result.append("alternateGroup=").append(getAlternateGroup()); result.append(";"); result.append("volume=").append(getVolume()); result.append(";"); result.append("matrix=").append(matrix); result.append(";"); result.append("width=").append(getWidth()); result.append(";"); result.append("height=").append(getHeight()); result.append("]"); return result.toString(); }
public AbstractStreamingTrack() { tkhd = new TrackHeaderBox(); tkhd.setTrackId(1); }
protected TrackBox createTrackBox(Track track, Movie movie, Map<Track, int[]> chunks) { TrackHeaderBox tkhd = new TrackHeaderBox(); tkhd.setEnabled(true); tkhd.setInMovie(true); tkhd.setMatrix(track.getTrackMetaData().getMatrix()); tkhd.setAlternateGroup(track.getTrackMetaData().getGroup()); tkhd.setCreationTime(track.getTrackMetaData().getCreationTime()); tkhd.setDuration(track.getDuration() * getTimescale(movie) / track.getTrackMetaData().getTimescale()); } else { long d = 0; d += (long) edit.getSegmentDuration(); tkhd.setDuration(d * track.getTrackMetaData().getTimescale()); tkhd.setHeight(track.getTrackMetaData().getHeight()); tkhd.setWidth(track.getTrackMetaData().getWidth()); tkhd.setLayer(track.getTrackMetaData().getLayer()); tkhd.setModificationTime(new Date()); tkhd.setTrackId(track.getTrackMetaData().getTrackId()); tkhd.setVolume(track.getTrackMetaData().getVolume());
TrackBox trackBox = null; for (TrackBox box : Path.<TrackBox>getPaths(isofile, "moov/trak")) { if (box.getTrackHeaderBox().getTrackId() == trackId) { trackBox = box; break; TrackHeaderBox tkhd = trackBox.getTrackHeaderBox(); trackMetaData.setTrackId(tkhd.getTrackId()); trackMetaData.setCreationTime(mdhd.getCreationTime()); trackMetaData.setLanguage(mdhd.getLanguage()); trackMetaData.setHeight(tkhd.getHeight()); trackMetaData.setWidth(tkhd.getWidth()); trackMetaData.setLayer(tkhd.getLayer()); trackMetaData.setMatrix(tkhd.getMatrix()); trackMetaData.setVolume(tkhd.getVolume()); EditListBox elst = Path.getPath(trackBox, "edts/elst"); MovieHeaderBox mvhd = Path.getPath(isofile, "moov/mvhd");
log.debug("Track id: {}", tkhd.getTrackId()); if (tkhd != null && tkhd.getWidth() > 0) { width = (int) tkhd.getWidth(); height = (int) tkhd.getHeight(); log.debug("Width {} x Height {}", width, height);
protected Box createTkhd(StreamingTrack streamingTrack) { TrackHeaderBox tkhd = new TrackHeaderBox(); tkhd.setTrackId(streamingTrack.getTrackExtension(TrackIdTrackExtension.class).getTrackId()); DimensionTrackExtension dte = streamingTrack.getTrackExtension(DimensionTrackExtension.class); if (dte != null) { tkhd.setHeight(dte.getHeight()); tkhd.setWidth(dte.getWidth()); } return tkhd; }
set = true; if (create) { ((TrackHeaderBox) header).setCreationTime(date); } else { ((TrackHeaderBox) header).setModificationTime(date);
public void setModificationTime(Date modificationTime) { this.modificationTime = modificationTime; if (DateHelper.convert(modificationTime) >= (1L << 32)) { setVersion(1); } }
public void setDuration(long duration) { this.duration = duration; if (duration >= (1L << 32)) { setFlags(1); } }
protected TrackBox createTrackBox(Track track, Movie movie, Map<Track, int[]> chunks) { TrackHeaderBox tkhd = new TrackHeaderBox(); tkhd.setEnabled(true); tkhd.setInMovie(true); tkhd.setMatrix(track.getTrackMetaData().getMatrix()); tkhd.setAlternateGroup(track.getTrackMetaData().getGroup()); tkhd.setCreationTime(track.getTrackMetaData().getCreationTime()); tkhd.setDuration(track.getDuration() * getTimescale(movie) / track.getTrackMetaData().getTimescale()); } else { long d = 0; d += (long) edit.getSegmentDuration(); tkhd.setDuration(d * track.getTrackMetaData().getTimescale()); tkhd.setHeight(track.getTrackMetaData().getHeight()); tkhd.setWidth(track.getTrackMetaData().getWidth()); tkhd.setLayer(track.getTrackMetaData().getLayer()); tkhd.setModificationTime(new Date()); tkhd.setTrackId(track.getTrackMetaData().getTrackId()); tkhd.setVolume(track.getTrackMetaData().getVolume());
TrackBox trackBox = null; for (TrackBox box : Path.<TrackBox>getPaths(isofile, "moov/trak")) { if (box.getTrackHeaderBox().getTrackId() == trackId) { trackBox = box; break; TrackHeaderBox tkhd = trackBox.getTrackHeaderBox(); trackMetaData.setTrackId(tkhd.getTrackId()); trackMetaData.setCreationTime(mdhd.getCreationTime()); trackMetaData.setLanguage(mdhd.getLanguage()); trackMetaData.setHeight(tkhd.getHeight()); trackMetaData.setWidth(tkhd.getWidth()); trackMetaData.setLayer(tkhd.getLayer()); trackMetaData.setMatrix(tkhd.getMatrix()); trackMetaData.setVolume(tkhd.getVolume()); EditListBox elst = Path.getPath(trackBox, "edts/elst"); MovieHeaderBox mvhd = Path.getPath(isofile, "moov/mvhd");
log.debug("Track id: {}", tkhd.getTrackId()); if (tkhd != null && tkhd.getWidth() > 0) { width = (int) tkhd.getWidth(); height = (int) tkhd.getHeight(); log.debug("Width {} x Height {}", width, height);
public void setCreationTime(Date creationTime) { this.creationTime = creationTime; if (DateHelper.convert(creationTime) >= (1L << 32)) { setVersion(1); } }
public void setDuration(long duration) { this.duration = duration; if (duration >= (1L << 32)) { setFlags(1); } }
protected ParsableBox createTkhd(Movie movie, Track track) { TrackHeaderBox tkhd = new TrackHeaderBox(); tkhd.setVersion(1); tkhd.setFlags(7); // enabled, in movie, in previe, in poster tkhd.setAlternateGroup(track.getTrackMetaData().getGroup()); tkhd.setCreationTime(track.getTrackMetaData().getCreationTime()); // We need to take edit list box into account in trackheader duration // but as long as I don't support edit list boxes it is sufficient to // just translate media duration to movie timescale tkhd.setDuration(0);//no duration in moov for fragmented movies tkhd.setHeight(track.getTrackMetaData().getHeight()); tkhd.setWidth(track.getTrackMetaData().getWidth()); tkhd.setLayer(track.getTrackMetaData().getLayer()); tkhd.setModificationTime(getDate()); tkhd.setTrackId(track.getTrackMetaData().getTrackId()); tkhd.setVolume(track.getTrackMetaData().getVolume()); return tkhd; }
TrackBox trackBox = trackBoxes.stream().filter(tb -> tb.getTrackHeaderBox().getTrackId() == trackId).findAny().get();