Skip to content
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

The player should always re-process the MPD when availabilityStartTime reached. #172

Closed
arikkrol1 opened this issue Sep 2, 2015 · 2 comments
Assignees
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@arikkrol1
Copy link

http://bitcdn-kronehit-live.bitmovin.com/mpds/stream.php?streamkey=bitcodin&segmenthost=bitcdn-kronehit-live.bitmovin.com&liveoffset=20

In the console the message 'The stream is not available yet' appears

@tdrews
Copy link
Contributor

tdrews commented Sep 2, 2015

Thanks for the report.

The server seems to set the MPD's @availabilityStartTime to the current time, and the client's clock may be slightly behind this value. The player has a clock sync mechanism but it does not work unless the server sets the Access-Control-Expose-Headers HTTP header. The player will also fetch another MPD, with the delay specified by @minUpdatePeriod, when the stream is not available (or appears not to be available), but the MPD's @minUpdatePeriod is quite large in this case (and the server may just reset @availabilityStartTime anyways).

We'll investigate a solution.

@joeyparrish
Copy link
Member

Here's what seems to be happening.

  1. Your server changes availabilityStartTime to the current time every time the manifest is accessed. This does not make sense, and as far as I can tell, does not represent a real use-case. The availabilityStartTime should not constantly change in a real stream.

  2. Your server doesn't allow us to access the Date header for clock synchronization. This means the availabilityStartTime may appear to be slightly in the future, which according to spec, means the stream is not yet available. Allowing cross-origin access to the Date header on your server would help.

  3. Because minUpdatePeriod is huge (595 hours), we don't fetch a new manifest for 24 days. If we did, thanks to your constantly-changing availabilityStartTime and clock desync, we would still see that it is in the future and the stream would still not be available according to the spec.

  4. The bug on our side is that we could wait for availabilityStartTime to pass and then reprocess the same manifest we already have. This would allow playback to continue once the delta between the client & server clocks has passed.

So we will add code to wait for availabilityStartTime to pass and reprocess the manifest, and we strongly recommend you both allow Date header access and do not constantly change availabilityStartTime.

Since this content does not appear to be realistic, I am pushing this out to a later milestone than the one we are currently working on.

@joeyparrish joeyparrish added this to the v1.6.0 milestone Sep 2, 2015
@joeyparrish joeyparrish added the type: bug Something isn't working correctly label Sep 2, 2015
@tdrews tdrews changed the title a stream that works on bitdash but not on shakaplayer Player should re-process MPD when availabilityStartTime reached (independent of minUpdatePeriod). Sep 11, 2015
@tdrews tdrews changed the title Player should re-process MPD when availabilityStartTime reached (independent of minUpdatePeriod). The player should always re-process the MPD when availabilityStartTime reached. Sep 11, 2015
@tdrews tdrews removed their assignment Sep 22, 2015
@TheModMaker TheModMaker self-assigned this Sep 28, 2015
TheModMaker added a commit that referenced this issue Oct 13, 2015
* Supports live streams of a fixed length.
* Live streams that stop now correctly end the video.
* Only uses local MPD when @availabilityStartTime is in the future.
* Added configuration option liveStreamEndTimeout.

A live stream is considered "ended" when the play-head moves past
the last segment for liveStreamEndTimeout amount of time.  This allows
the MPD to be updated with new segments.

Closes #139
Closes #140
Closes #145
Issue #172

Change-Id: I0675203931f35ca3e0dee60a87c54ba74cbdbaea
@shaka-project shaka-project locked and limited conversation to collaborators Mar 22, 2018
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

5 participants