public long[] getSampleDurations() { long[] adoptedSampleDuration = new long[sampleDurations.length]; for (int i = 0; i < adoptedSampleDuration.length; i++) { adoptedSampleDuration[i] = sampleDurations[i] * trackMetaData.getTimescale() / 1000; } return adoptedSampleDuration; }
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 AC3TrackImpl(DataSource dataSource, String lang) throws IOException { super(dataSource.toString()); this.dataSource = dataSource; this.trackMetaData.setLanguage(lang); samples = readSamples(); audioSampleEntry = createAudioSampleEntry(); trackMetaData.setCreationTime(new Date()); trackMetaData.setModificationTime(new Date()); trackMetaData.setLanguage(lang); trackMetaData.setTimescale(audioSampleEntry.getSampleRate()); // Audio tracks always use samplerate as timescale trackMetaData.setVolume(1); }
public TrackMetaData getTrackMetaData() { TrackMetaData trackMetaData = (TrackMetaData) source.getTrackMetaData().clone(); trackMetaData.setTimescale(source.getTrackMetaData().getTimescale() / this.timeScaleDivisor); return trackMetaData; }
public void addTrack(Track nuTrack) { // do some checking // perhaps the movie needs to get longer! if (getTrackByTrackId(nuTrack.getTrackMetaData().getTrackId()) != null) { // We already have a track with that trackId. Create a new one nuTrack.getTrackMetaData().setTrackId(getNextTrackId()); } tracks.add(nuTrack); }
TrackHeaderBox tkhd = trackBox.getTrackHeaderBox(); trackMetaData.setTrackId(tkhd.getTrackId()); trackMetaData.setCreationTime(mdhd.getCreationTime()); trackMetaData.setLanguage(mdhd.getLanguage()); trackMetaData.setModificationTime(mdhd.getModificationTime()); trackMetaData.setTimescale(mdhd.getTimescale()); 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");
public long getNextTrackId() { long nextTrackId = 0; for (Track track : tracks) { nextTrackId = nextTrackId < track.getTrackMetaData().getTrackId() ? track.getTrackMetaData().getTrackId() : nextTrackId; } return ++nextTrackId; }
LOG.debug("Calculating chunk offsets for track_{}", targetTrack.getTrackMetaData().getTrackId()); for (int j = startSample; j < startSample + numberOfSampleInNextChunk; j++) { offset += track2SampleSizes.get(nextChunksTrack)[j]; time += (double) durs[j] / nextChunksTrack.getTrackMetaData().getTimescale();
protected ParsableBox createMdhd(Movie movie, Track track) { MediaHeaderBox mdhd = new MediaHeaderBox(); mdhd.setCreationTime(track.getTrackMetaData().getCreationTime()); mdhd.setModificationTime(getDate()); mdhd.setDuration(0);//no duration in moov for fragmented movies mdhd.setTimescale(track.getTrackMetaData().getTimescale()); mdhd.setLanguage(track.getTrackMetaData().getLanguage()); return mdhd; }
trackMetaData.setCreationTime(new Date()); trackMetaData.setModificationTime(new Date()); trackMetaData.setLanguage(lang); trackMetaData.setTimescale(timescale); trackMetaData.setWidth(width); trackMetaData.setHeight(height);
trackMetaData.setWidth(a.getWidth()); trackMetaData.setHeight(a.getHeight()); trackMetaData.setTimescale(alignTo.getTrackMetaData().getTimescale()); earliestTrackPresentationTime += (double) ptss[0] / alignTo.getTrackMetaData().getTimescale(); getEdits().add(new Edit((long) (-earliestTrackPresentationTime * getTrackMetaData().getTimescale()), getTrackMetaData().getTimescale(), 1.0, (double) getDuration() / getTrackMetaData().getTimescale())); } else if (earliestTrackPresentationTime > 0) { getEdits().add(new Edit(-1, getTrackMetaData().getTimescale(), 1.0, earliestTrackPresentationTime)); getEdits().add(new Edit(0, getTrackMetaData().getTimescale(), 1.0, (double) getDuration() / getTrackMetaData().getTimescale()));
ManifestCreation.updateDuration(periodType, (double) t.getDuration() / t.getTrackMetaData().getTimescale()); ManifestCreation.addSegmentBase(rb, representationType); totalSize += RepresentationBuilderToFile.writeOnDemand( if (outOptions.containsKey("lang")) { locale = Locale.forLanguageTag(outOptions.remove("lang")); t.getTrackMetaData().setLanguage(locale.getISO3Language()); } else { locale = Locale.forLanguageTag(t.getTrackMetaData().getLanguage()); ManifestCreation.updateDuration(periodType, (double) t.getDuration() / t.getTrackMetaData().getTimescale()); ManifestCreation.addSegmentBase(rb, representationType); totalSize += RepresentationBuilderToFile.writeOnDemand(
adaptationSetType.getRepresentation().add(representationType); representationType.setProfiles("urn:mpeg:dash:profile:isoff-on-demand:2011"); long videoHeight = (long) t.getTrackMetaData().getHeight(); long videoWidth = (long) t.getTrackMetaData().getWidth(); double framesPerSecond = (double) (t.getSamples().size() * t.getTrackMetaData().getTimescale()) / t.getDuration();
protected void extractLanguage(List<Document> ttmls) { String firstLang = null; for (Document ttml : ttmls) { String lang = getLanguage(ttml); if (firstLang == null) { firstLang = lang; trackMetaData.setLanguage(Locale.forLanguageTag(lang).getISO3Language()); } else if (!firstLang.equals(lang)) { throw new RuntimeException("Within one Track all sample documents need to have the same language"); } } }
public WebVttTrack(InputStream is, String trackName, Locale locale) throws IOException { super(trackName); trackMetaData.setTimescale(1000); trackMetaData.setLanguage(locale.getISO3Language()); long mediaTimestampUs = 0;
TrackHeaderBox tkhd = trackBox.getTrackHeaderBox(); trackMetaData.setTrackId(tkhd.getTrackId()); trackMetaData.setCreationTime(mdhd.getCreationTime()); trackMetaData.setLanguage(mdhd.getLanguage()); trackMetaData.setModificationTime(mdhd.getModificationTime()); trackMetaData.setTimescale(mdhd.getTimescale()); 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");
public Track getTrackByTrackId(long trackId) { for (Track track : tracks) { if (track.getTrackMetaData().getTrackId() == trackId) { return track; } } return null; }
for (long syncSample : syncSamples) { while (refIndex < syncSample - 1 && refIndex < refNumSamples) { refTime += (double) refSampleDuration[refIndex] / videoTrack.getTrackMetaData().getTimescale(); refIndex++; if (timeIndex >= syncSampleTimes.length) { chops.add(new ClippedTrack(track, lastStart, numSamples)); System.err.println("Added partial track for " + track.getTrackMetaData().getTrackId() + " from sample " + lastStart + " to " + numSamples); break; if (lastStart != index) { chops.add(new ClippedTrack(track, lastStart, index)); System.err.println("Added partial track for " + track.getTrackMetaData().getTrackId() + " from sample " + lastStart + " to " + index); lastStart = index; time += (double) durations[index] / track.getTrackMetaData().getTimescale(); index++;
protected ParsableBox createMdhd(Movie movie, Track track) { MediaHeaderBox mdhd = new MediaHeaderBox(); mdhd.setCreationTime(track.getTrackMetaData().getCreationTime()); mdhd.setModificationTime(getDate()); mdhd.setDuration(0);//no duration in moov for fragmented movies mdhd.setTimescale(track.getTrackMetaData().getTimescale()); mdhd.setLanguage(track.getTrackMetaData().getLanguage()); return mdhd; }
trackMetaData.setCreationTime(new Date()); trackMetaData.setModificationTime(new Date()); trackMetaData.setLanguage(lang); trackMetaData.setTimescale(timescale); trackMetaData.setWidth(width); trackMetaData.setHeight(height);