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

Fix: livestream timeout issues #469

Merged
merged 4 commits into from
May 13, 2019
Merged

Fix: livestream timeout issues #469

merged 4 commits into from
May 13, 2019

Conversation

brandonocasey
Copy link
Contributor

Description

This pull requests fixes some HLS livestream timeouts that were happing before playback would even begin. I will go over them in code comments.

// to prevent a playlist loader from being created so that we don't have
// both the main and audio segment loaders loading the same audio segments
// from the same playlist.
delete properties.resolvedUri;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing this, can cause two segments to be download for the first segment of audio only videos. I think that we should log that as an issue to fix. This makes it so that we do not timeout when a video has separate audio

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, the issue is that for an audio-only stream, the main segment loader and the audio segment loader would both download the audio segment. Previously, this delete statement would prevent the audio segment loader from being created. However, this causes issues when audio and video are unmuxed?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some regression testing should be done on playlists this affects as I believe there was another issue where one of the segment loaders were not calling end of stream

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes this causes issues with unmuxed audio/video. Yes we should do some regression testing, but I think that other endofstream fixes that have been done fixed those issues, at least for the streams that I have been testing with.

src/sync-controller.js Outdated Show resolved Hide resolved
src/playlist-loader.js Outdated Show resolved Hide resolved
@brandonocasey brandonocasey force-pushed the fix/livestream-timeout branch 4 times, most recently from ed8c4ce to c0d6852 Compare April 23, 2019 16:53
// currentTime and can stop looking for better candidates
if (lastDistance !== null && lastDistance < distance) {
if (lastDistance !== null && (distance === 0 || lastDistance < distance)) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a legitimate fix, the previous code assumed that if the currentTime started on the segmentStart that we should include that as a valid syncPoint. From my testing this is not the case. We should instead exclude syncPoints that would start exactly on currentTime.

EX: segment#16 at 170s and currentTime at 170s should choose segment#15 rather than segment#16 as currentTime may need data from segment#15 and segment#16 to play.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This explanation would be good to put in the commit body when we merge.

@@ -831,7 +831,7 @@ function(assert) {
'no playlist loader when misconfigured');
});

QUnit.test('initialize audio does not create playlist loader for alternate tracks with' +
QUnit.skip('initialize audio does not create playlist loader for alternate tracks with' +
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see a way around this test, since it is testing for something that we do not want to happen for now.

@brandonocasey brandonocasey changed the title Fix: livestream timeout Fix: livestream timeout issues Apr 25, 2019
Copy link
Member

@misteroneill misteroneill left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know the code very well, but these changes seem reasonable to me.

Copy link
Member

@gkatsev gkatsev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the code changes look good. Just needs testing and probably logging an issue for the unmuxed playlist so we don't forget to update it in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants