DASH Live: DefaultDashChunkSource incorrectly assumes that a period of known duration declares all segments
- Dominant language
- Java
- Stars
- 21.9k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
We have a leanback launcher which uses ExoPlayer. When pausing the live stream, we shift from the live stream to a timeshifted stream and then pause it. When the user presses resume, the time shifted stream resumes playback. This works fine with all our client video streams but with one particular client.
With this particular client, after the timeshifted stream is resumed, the player freezes at the end of the first audio/video segment. However this does not happen if the time shifted stream is resumed within a few seconds.
There are a few differences on where the content is originated from and how the manifest is built.
- For LIVE TV we use a dynamic manifest with 32 s of segments. Content is sourced from a circular buffer.
- For time-shift (pause live) the manifest is requested from the circular buffer with start and stop times. When the program reaches the stop time the manifest changes from dynamic to static. Until that point in time it is dynamic.
- For catch-up, start-over and N-PVR it depends if the program has finished recording and is moved to the SAN or not when the request hist the request router. If on SAN it is always gets a static manifest. If not finished it follows the same rules as time-shift.
I have tried to extract a timeshifted stream url and playing it on the ExoPlayer demo app. And I can reproduce this same freezing with the same error on logs (D/AudioTrack: stop() called with xxxxxx frames delivered) every time. I have tried on ExoPlayer demo versions 2.11.4 and 2.12.3, therefore think that this is a player/manifest incompatibility.
The same manifest is used for start over without any issues.
I have mailed the log files to dev.exoplayer@gmail.com
Thanks in Advance,
Anjello
Contributor guide
Assessment
This issue has not been assessed yet.