diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java index 578c977b7a..8666628d7a 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java @@ -105,6 +105,7 @@ public final class FragmentedMp4Extractor implements Extractor { private ParsableByteArray atomData; private long endOfMdatPosition; + private long durationUs; private TrackBundle currentTrackBundle; private int sampleSize; private int sampleBytesWritten; @@ -230,7 +231,7 @@ public final class FragmentedMp4Extractor implements Extractor { currentTrackBundle = null; endOfMdatPosition = atomPosition + atomSize; if (!haveOutputSeekMap) { - extractorOutput.seekMap(new SeekMap.Unseekable(C.UNKNOWN_TIME_US)); + extractorOutput.seekMap(new SeekMap.Unseekable(durationUs)); haveOutputSeekMap = true; } parserState = STATE_READING_ENCRYPTION_DATA; @@ -336,6 +337,7 @@ public final class FragmentedMp4Extractor implements Extractor { } // Construction of Tracks and TrackOutputs. + durationUs = C.UNKNOWN_TIME_US; trackBundles.clear(); int moovContainerChildrenSize = moov.containerChildren.size(); int trackBundlesSize = 0; @@ -349,6 +351,7 @@ public final class FragmentedMp4Extractor implements Extractor { extractorOutput.track(trackBundlesSize++), defaultSampleValues); bundle.output.format(track.format); trackBundles.put(track.id, bundle); + durationUs = Math.max(track.durationUs, durationUs); } } } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java index b11e315e2e..f1aaba8ba1 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java @@ -997,7 +997,7 @@ public final class WebmExtractor implements Extractor { durationsUs[cuePointsSize - 1] = durationUs - timesUs[cuePointsSize - 1]; cueTimesUs = null; cueClusterPositions = null; - return new ChunkIndex(durationUs, sizes, offsets, durationsUs, timesUs); + return new ChunkIndex(sizes, offsets, durationsUs, timesUs); } /**