Skip to content

Correct way to associate an absolute timestamp with stream start in static MPD? #57

@DavidMihola

Description

@DavidMihola

Quick context:

  • 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:

So, my questions:

  • 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!

(Finally, here's my issue at ExoPlayer which I opened a few weeks ago: google/ExoPlayer#7911)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions