ExoPlayer: DASH Live stream stops playing multiperiod manifest
Issue description
Playing a DASH Live stream with multiperiods. The player is stuck and stops playing when there is a new period. Sometimes the player continues after 30-60s and eventually the player also crashes with
07-10 11:52:25.114 9551 9551 D AndroidRuntime: Shutting down VM
07-10 11:52:25.133 9551 9551 E AndroidRuntime: FATAL EXCEPTION: main
07-10 11:52:25.133 9551 9551 E AndroidRuntime: Process: ---------, PID: 9551
07-10 11:52:25.133 9551 9551 E AndroidRuntime: java.lang.IndexOutOfBoundsException
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.util.Assertions.checkIndex(Assertions.java:68)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.source.dash.DashMediaSource$DashTimeline.getPeriod(DashMediaSource.java:1054)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.analytics.AnalyticsCollector$MediaPeriodQueueTracker.updateMediaPeriodToNewTimeline(AnalyticsCollector.java:778)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.analytics.AnalyticsCollector$MediaPeriodQueueTracker.onTimelineChanged(AnalyticsCollector.java:727)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.analytics.AnalyticsCollector.onTimelineChanged(AnalyticsCollector.java:424)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.ExoPlayerImpl$PlaybackInfoUpdate.notifyListeners(ExoPlayerImpl.java:746)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:681)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:622)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.ExoPlayerImpl.handleEvent(ExoPlayerImpl.java:567)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.google.android.exoplayer2.ExoPlayerImpl$1.handleMessage(ExoPlayerImpl.java:109)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6798)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
07-10 11:52:25.133 9551 9551 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Using an older version of ExoPlayer works fine (2.6.1).
Reproduction steps
See the provided DASH media presentation
Link to test content
Unfortunately no link but the manifest file that cases the issue: manifest_period.mpd.txt
Version of ExoPlayer being used
Non-working version: 2.8.2 Working fine in: 2.6.1
Device(s) and version(s) of Android being used
Emulator Android 7.1.1 and OnePlus3T Android 8.0
Link
The following issue seem to be similar use case: https://github.com/google/ExoPlayer/issues/3431
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 27 (13 by maintainers)
Commits related to this issue
- Update period index in DashMediaPeriod event dispatcher after manifest update. Issue:#4492 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=205636634 — committed to google/ExoPlayer by tonihei 6 years ago
- Update period index in DashMediaPeriod event dispatcher after manifest update. Issue:#4492 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=205636634 — committed to google/ExoPlayer by tonihei 6 years ago
- Fix freezing playing multi-period DASH with EventStreams EventSampleStream.readData required eventStreamUpdatable to be false for END_OF_STREAM to be returned, but it was only being set to false when... — committed to google/ExoPlayer by ojw28 6 years ago
- Fix freezing playing multi-period DASH with EventStreams EventSampleStream.readData required eventStreamUpdatable to be false for END_OF_STREAM to be returned, but it was only being set to false when... — committed to google/ExoPlayer by ojw28 6 years ago
- Restructure media period queue tracker in AnalyticsCollector. The current structure tries to associate events to media periods and windows based on the reported values and the current timeline. Howev... — committed to google/ExoPlayer by tonihei 6 years ago
Yes, it has been cherry picked already: https://github.com/google/ExoPlayer/commit/e92d65533f8720793d186b81c4c50aedb7411395