diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index bb5ce6c509..0033fd6aee 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -536,7 +536,6 @@ public final class HlsMediaSource extends BaseMediaSource } else if (windowDefaultStartPositionUs == C.TIME_UNSET) { windowDefaultStartPositionUs = 0; } - timeline = new SinglePeriodTimeline( presentationStartTimeMs, diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java index 14c369c3e7..9b9082af9d 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java @@ -25,6 +25,7 @@ import com.google.android.exoplayer2.drm.DrmInitData; import com.google.android.exoplayer2.offline.StreamKey; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -475,9 +476,12 @@ public final class HlsMediaPlaylist extends HlsPlaylist { this.skippedSegmentCount = skippedSegmentCount; this.trailingParts = ImmutableList.copyOf(trailingParts); this.renditionReports = ImmutableMap.copyOf(renditionReports); - if (!segments.isEmpty()) { - Segment last = segments.get(segments.size() - 1); - durationUs = last.relativeStartTimeUs + last.durationUs; + if (!trailingParts.isEmpty()) { + Part lastPart = Iterables.getLast(trailingParts); + durationUs = lastPart.relativeStartTimeUs + lastPart.durationUs; + } else if (!segments.isEmpty()) { + Segment lastSegment = Iterables.getLast(segments); + durationUs = lastSegment.relativeStartTimeUs + lastSegment.durationUs; } else { durationUs = 0; }