http-streaming
http-streaming copied to clipboard
DASH playlist cannot scrub forward in time
Description
Tags: timing, PTS, DTS, scrubbing, seeking, DASH manifest, byte offset After upgrading to version 8.12.0 of videojs I can no longer scrub to a future time in my dash manifest. Something changed in how videojs calculates which segment of video to download. I've noticed in the player stats, that when I scrub to a future time, one segment of video for a much earlier time, up to 60 seconds earlier is downloaded to the video buffer, and no further downloads are made.
The same DASH stream still works in the videojs-contrib-dash test player, which I suspect used to use the same approach to filling the video buffer as http-streaming. None of the available optional flags on the test player seem to fix the problem.
Sources
This test stream can be used https://mtonomy-dev.s3.amazonaws.com/622fe341ea9e4290e7c4c0f5/video_file2022-07-11-03-57-5262cb9fc094e14ab524cc0fb9/frag_3000/stream.mpd
Steps to reproduce
Explain in detail the exact steps necessary to reproduce the issue.
- Visit the http-streaming test player: https://videojs-http-streaming.netlify.app/
- Input this test url
- Visit the videojs-contrib-dash test player: https://videojs.github.io/videojs-contrib-dash/ and try the same stream
Results
Although the video stream starts correctly, scrubbing causes the video playlist to be removed
Additional Information
My hypothesis is that the issue is related to the difference in duration between segments of video. Since not all of my video segments are exactly the same duration (eg. 4 seconds). I noticed that HLS playlists define duration and byte ranges on a per segment level, but it seems DASH playlists can only define segments by byte range, or duration, not both.
I was previously on videojs version 8.10.0, which mostly worked, but for some of my streams I encountered segments being repetitively redownloaded. This issue was fixed in the upgrade to version, 8.12.0 and VHS 3.12.1.
Browsers
Chrome and Firefox DASH stream are affected. My HLS streams generated from the same source video are okay.