-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Various issues with multi-period live streams #310
Comments
Since commenting on #285 I've realized that what I said about there being a difference between PTO and the first segment timestamp is quite probably wrong: DASH-IF Interoperability Points (http://dashif.org/w/2015/04/DASH-IF-IOP-v3.0.pdf) states, in section 4.4.3.3:
This means we should probably update our server to have the Period start and PTO to match the new first segment (e.g., instead of Period start PT0S, PTO 5000, first segment ts 10000 we should have Period start PT5S, PTO 10000, first segment ts 10000). However, I'm not sure this has any effect on shaka (note that the effective timestamp, availabilityStartTime + periodStart + ts - PTO, is the same). |
The stream in question is not treated as live because even though the duration grows, it has a finite duration. If streaming catches up to the current duration, we call |
@perses, if the format of this manifest is not in a stable state, I will stop work and wait for you to fix it. May I ask what product is generating this content? While you are working on your server, please test on the latest Shaka from the // Check if we've buffered to the end of the presentation.
if (timeNeeded >= timeline.getDuration()) { to this: // Check if we've buffered to the end of the presentation.
if (timeNeeded >= timeline.getDuration() && 0) { Once your server and manifest format are in a state you are happy with, please let us know and we will work to find a more permanent solution for this |
@perses, while you are making changes, you should add an AdaptationSet id. Without this, Shaka can't be certain that the AS from one manifest matches the other, and therefore can't merge the timelines correctly. |
Actually, on second look, Representation IDs are unique within the Period according to the spec. AdaptationSet IDs should not be required. We'll fix that. |
One more bug on our end: your presentation should not be considered to have a finite duration. We'll fix that as well. |
Lookup times when transitioning from one Period to another, need to be relative to the presentation, not the next period. I'm not sure when this broke. Relates to #310 Change-Id: I6e3f94bb9c6aad8c8f3ef73e73b0073e015f796e
When updating a DASH manifest, we can key off of Period and Representation only. The spec says that Representation IDs are unique within the Period, and that Period IDs are unique within the presentation. Therefore we do not need an AdaptationSet ID to merge on update. Relates to #310 Change-Id: I12b9f83c2bfda958a14e9ee31d459c04da8722e6
Multi-period live streams have no presentation duration and have no duration on the final period. In this case, we were setting the timeline duration to the start time of the final period, based on end = start + duration with duration == null. This fixes the situation so that timeline duration is infinite. Relates to #310 Change-Id: I8592318e3d4c5643fa1fcc03b34624957a2e974c
Thanks for looking into this! We've tried the player with these 3 commits but it seems it's not working anymore. Before it was playing about one minute (including proper period switching) and stopping. Not it's not playing at all. |
This allows for updates on SegmentTimelines where there is no startNumber. Issue #310 Change-Id: Ic3df664e5d2369d02166bf6584c341b401b1efd9
In the end we've decided not to implement the recommendation from DASH-IF Interoperability Points according to which we should update period start and PTO when segments are removed from the beginning. It doesn't sound like it's mandatory and it causes problems in both Shaka (we previously thought it didn't but there are apparently issues), and other players. It also seems more logical to keep them at their initial value as this provides more information. We've updated the server at http://31.14.160.192:8000/ah/manifest.mpd with a new version. The only real difference is that the availabilityStartTime has been fixed between updates (it used to drift by one or two seconds). Further updates to the way our manifests look will be minor, if any. We're happy to say that with #315 we have uninterrupted, smooth playback, for many hours (as long as we have tested). Thanks very much for your help! |
@perses added to #285 with a specific manifest that did not work. That manifest had three interesting features:
<Location>
to track sessions across manifest updates (Support <Location> for MPD updates #298)presentationTimeOffset
for the first period (Fix presentationTimeOffset handling in v2 #297)Period
during manifest updates to extend the timelineNow that 1 & 2 are solved, I have found that 3 does not work.
Technical details:
presentationTimeline.duration_
grows as the manifest is updated, butvideo.duration
does not.The text was updated successfully, but these errors were encountered: