Dash-Industry-Forum / dash.js

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.
http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html
Other
5.09k stars 1.67k forks source link

Should #t MPD Anchors on dynamic manifests not be modified by the availabilityStartTime? #3034

Closed robertbryer closed 3 years ago

robertbryer commented 5 years ago
Steps to reproduce

Get a unix epoch from within the last 5 minutes and use it as the #t= anchor in this link: http://reference.dashif.org/dash.js/v2.9.3/samples/dash-if-reference-player/index.html?url=http://smp-scratch.tools.bbc.co.uk/bob/samples/livesim-1-minute-availability.mpd#t=1563886800s

And then load the stream.

This is a modified version of the livesim MPD to change the availabilityStartTime to +1 minute.

Observed behaviour

The playback starts 1 minute prior to the value you chose for the #t anchor. This is the value of the availabilityStartTime. The original livesim MPD has a value of 0 for the availabilityStartTime, so you won't notice this using the normal livesim manifest.

You can see exactly where the start time is modified here: https://github.com/Dash-Industry-Forum/dash.js/blob/3549b41141c345172b51e1513530c23705151f6f/src/streaming/controllers/PlaybackController.js#L371

It doesn't appear to make that much sense to have time anchors like this reference against the availability timeline - but it's been about 5 years since this code was written. Is it just that this hasn't been noticed because all our samples don't have an availabilityStartTime or is there some use case here I don't understand? Also is there any apparent danger to changing this behaviour after so long?

sandersaares commented 5 years ago

MPD anchors of the form t=1234 are an offset from the start of the first period. Optionally a period parameter can be used to indicate which period is the base.

The syntax t=posix:123456 indicates an offset from the Unix epoch.

Note also, there should be no "s" at the end of the value.

Ref MPEGDASH C.4 and IOP v4.3 chapter 4.3.3.5.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 3 years ago

This issue has been automatically closed because no further activity occurred. If you think this issue is still relevant please reopen it. Thank you for your contributions.