-
Notifications
You must be signed in to change notification settings - Fork 424
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
Fix live startup failures when play happens before playlist is downloaded #700
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…aded When joining a live stream, VHS starts playback at a time of 0, regardless of how long the stream has been playing. This means that the playlist will start with sync info of time 0 for the first media index. However, if the stream "played" (either via API, autoplay, etc.) before a playlist was downloaded, then after the playlist downloaded the loader would reset the sync info, erasing the assumed time 0 for first media index, and the player would request segments ad infinitum, never able to place them in the timeline and get a new sync point. This separates the notion of played between play initiation and playback of content (progress on the timeline), in order to ensure that the initial sync info is maintained.
gkatsev
approved these changes
Jan 3, 2020
While using hasPlayedContent helped to alleviate most issues around when to update the sync info in segment loader when updating a live playlist, there still remained potential issues when a segment was requested and the sync info was changed for the in-flight segment. This change uses the segment loader's INIT state to determine if the sync info should be updated, meaning in-flight segment requests keep their sync info fixed.
…le segment in-flight
gkatsev
approved these changes
Jan 8, 2020
@gesinger can you make a matching PR against master if it's applicable there still? |
This was referenced Jan 10, 2020
gesinger
added a commit
to gesinger/http-streaming
that referenced
this pull request
Jan 10, 2020
…oaded (videojs#700 from 1.x) When joining a live stream, VHS starts playback at a time of 0, regardless of how long the stream has been playing. This means that the playlist will start with sync info of time 0 for the first media index. However, if the stream "played" (either via API, autoplay, etc.) before a playlist was downloaded, then after the playlist downloaded the loader would reset the sync info, erasing the assumed time 0 for first media index, and the player would request segments ad infinitum, never able to place them in the timeline and get a new sync point. This separates the notion of played between play initiation and playback of content (progress on the timeline), in order to ensure that the initial sync info is maintained. * Use segment loader's state to determine when to update sync info While using hasPlayedContent helped to alleviate most issues around when to update the sync info in segment loader when updating a live playlist, there still remained potential issues when a segment was requested and the sync info was changed for the in-flight segment. This change uses the segment loader's INIT state to determine if the sync info should be updated, meaning in-flight segment requests keep their sync info fixed.
6 tasks
gesinger
added a commit
that referenced
this pull request
Jan 10, 2020
…oaded (#700 from 1.x) (#711) When joining a live stream, VHS starts playback at a time of 0, regardless of how long the stream has been playing. This means that the playlist will start with sync info of time 0 for the first media index. However, if the stream "played" (either via API, autoplay, etc.) before a playlist was downloaded, then after the playlist downloaded the loader would reset the sync info, erasing the assumed time 0 for first media index, and the player would request segments ad infinitum, never able to place them in the timeline and get a new sync point. This separates the notion of played between play initiation and playback of content (progress on the timeline), in order to ensure that the initial sync info is maintained. * Use segment loader's state to determine when to update sync info While using hasPlayedContent helped to alleviate most issues around when to update the sync info in segment loader when updating a live playlist, there still remained potential issues when a segment was requested and the sync info was changed for the in-flight segment. This change uses the segment loader's INIT state to determine if the sync info should be updated, meaning in-flight segment requests keep their sync info fixed.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When joining a live stream, VHS starts playback at a time of 0,
regardless of how long the stream has been playing. This means that the
playlist will start with sync info of time 0 for the first media index.
However, if the stream "played" (either via API, autoplay, etc.) before
a playlist was downloaded, then after the playlist downloaded the
loader would reset the sync info, erasing the assumed time 0 for first
media index, and the player would request segments ad infinitum, never
able to place them in the timeline and get a new sync point.
This separates the notion of played between play initiation and playback
of content (progress on the timeline), in order to ensure that the
initial sync info is maintained.
This continues the work done by @gkatsev in #496
Requirements Checklist