We are developing an Android app for playing TV streams, both live while the program is running and then as VOD for 7 days after the program is finished
For several features we are relying on the fact that every position in each streams has an absolute timestamp associated with it. The most obvious of these is resuming playback at the last known position:
User is watching the live streams but stops in the middle of a program
We are storing the absolute timestamp of that position on the server
Program is finished and becomes available as VOD
When the user watches the VOD stream we can resume at the stored timestamp
For playback we are using Google's ExoPlayer
Until now, all of our streams were HLS and the playlist contained a #EXT-X-PROGRAM-DATE-TIME
We are now migrating some of the streams to DASH and want to find a way to continue using our existing logic
Our logic around ExoPlayer seems to work for our dynamic (live) MPDs as they are currently configured but not for our static (VOD) MPDs. I looked through the relevant ExoPlayer code and found that it relies on the availabilityStartTime and on the start of the first Period but we still cannot figure out the correct way to configure our static MPDs.
I found some discussions that seem to relate to absolute timestamp in a static MPD:
Does it even make sense (within DASH) to associate an absolute timestamp with the stream start in a static MPD?
If so, how should the information be transmitted correctly? What should the values of availabilityStartTime and Period.start be and what other values are needed?
I hope this is the right place to ask these questions and am very grateful for any advice!
Quick context:
#EXT-X-PROGRAM-DATE-TIME
Our logic around ExoPlayer seems to work for our dynamic (live) MPDs as they are currently configured but not for our static (VOD) MPDs. I looked through the relevant ExoPlayer code and found that it relies on the
availabilityStartTime
and on thestart
of the firstPeriod
but we still cannot figure out the correct way to configure our static MPDs.I found some discussions that seem to relate to absolute timestamp in a static MPD:
So, my questions:
availabilityStartTime
andPeriod.start
be and what other values are needed?I hope this is the right place to ask these questions and am very grateful for any advice!
(Finally, here's my issue at ExoPlayer which I opened a few weeks ago: https://github.com/google/ExoPlayer/issues/7911)