-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
stream.dash: fix dynamic timeline-less streams #5217
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
stream.dash: fix dynamic timeline-less streams #5217
Conversation
- Fix segment number iterator and segment availability-time iterator for dynamic timeline-less DASH streams by calculating the right segment number offset and basing the segment availability-time on the segment number, and not just on the current time alone - Set a default value of 0 seconds for presentationTimeOffset - Ensure that segment durations are known - Never calculate negative segment number offsets - Reduce unnecessary delay by starting with the upcoming segment in the generated timeline to be as close to the live-edge as possible (with minBufferTime and presentation offset+delay in mind) - Add debug log output - Update MPD manifest test fixture with better time data Next: - Consider removing the default value of suggestedPresentationDelay, as it seems to be a relict of Streamlink's initial DASH implementation - Also take a look at properly synchronizing the generated timeline between multiple substreams, so that the correct segment numbers always get calculated in all threads - Avoid interweaving debug log and make it flush per-thread
Example debug log from a random steamcommunity.com stream. No random failed segment requests anymore due to invalid segment numbers / availability times. Tested actual streams dozens of times. Default value of
|
Got confused for a sec. There's a different issue with the Steam plugin where I've tested the DASH streams for this issue here, but that's unrelated to DASH itself. |
Next:
Closes #4607
Not 100% sure whether this will fix #4607, but the data in that thread is not enough to confirm that, so let's close it. Since this PR adds more debug log messages with actual timestamps, new issue threads can be opened if there's still a problem with DASH streams of that particular kind.
At least this PR fixes all issues with DASH streams from the steam plugin, and the correct segment numbers at the correct times should be queued and requested by the worker and writer threads respectively.