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

Dynamic manifest transition to static is not supported if the DVR window is sliding #3376

Closed
sky-hugolima opened this issue Apr 29, 2021 · 2 comments · Fixed by #3497
Closed
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@sky-hugolima
Copy link

sky-hugolima commented Apr 29, 2021

Hey !

It seems that currently Shaka doesn't support a scenario where it's playing a sliding window dynamic MPD with a timeShiftBufferDepth of 2 hours, and the stream ends after 4 hours by transitioning to static (e.g. the seek range should be [2hours..4hours]), because the presentation timeline uses the mediaPresentationDuration as the end of the seek range when the manifest is static.

I've made the following change to presentation_timeline that seem to work:

   getSegmentAvailabilityEnd() {
     if (!this.isLive() && !this.isInProgress()) {
-      return this.duration_;
+      // It's a static manifest (can also be a dynamic->static conversion)
+      return this.maxSegmentEndTime_ || this.duration_;
     }
+    // Can be either live or "in-progress recording" (live with known duration)
     return Math.min(this.getLiveEdge_(), this.duration_);
   }

Is this something that makes sense from your perspective ?

Links to dynamic and static snapshots of the same MPD:
Static MPD: https://drive.google.com/file/d/1kKhmPpdUxZBlYTM3Ra1L4a4VwlN-uJva/view?usp=sharing
Dynamic MPD: https://drive.google.com/file/d/1kMuJT67herziAZuHf1TVnbDL2CvQX4nS/view?usp=sharing

@sky-hugolima sky-hugolima added the type: question A question from the community label Apr 29, 2021
@OrenMe
Copy link
Contributor

OrenMe commented Jun 29, 2021

We at Kaltura are facing same issue now and seems like this is the correct fix.

According to spec
https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf
section :  3.10.2.2.2. MPD Information and  4.6.4. Transition Phase between Live and On-Demand the correct order of timing info should be first mediaPresentationDuration tag and only after that the period duration.

@OrenMe
Copy link
Contributor

OrenMe commented Jun 30, 2021

thanks for the quick turn around and thanks @sky-hugolima for opening this :-)

@joeyparrish joeyparrish added type: bug Something isn't working correctly and removed type: question A question from the community labels Jun 30, 2021
@shaka-bot shaka-bot added this to the v3.2 milestone Jun 30, 2021
@joeyparrish joeyparrish modified the milestones: v3.2, v3.3 Jul 7, 2021
@joeyparrish joeyparrish modified the milestones: v3.3, v3.2 Jul 9, 2021
joeyparrish pushed a commit that referenced this issue Jul 13, 2021
Close: #3376

Backported to v3.0.x

Change-Id: I2fa37d906e5275d38613e1a22208216d1f4283d6
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Sep 7, 2021
@shaka-project shaka-project locked and limited conversation to collaborators Sep 7, 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

Successfully merging a pull request may close this issue.

4 participants