-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Playback stalls when seeking near the end of a period with a gap #3713
Comments
@dsilhavy, do you remember the reason for changing these lines? |
I don't remember the exact reasons, I think there were some problems with track switches and/or invalid values fror |
Thanks for quick response! Sure. From my debugging I can see that the previously used value - |
@lkinasiewicz Thank you, happy to review your PR once it is done. As this is a critical part of the code we should carefully validate all changes. I think a PR from your side is a good start |
The seeking problem should be fixed in #3772. Note that it needs to be enabled in the settings: player.updateSettings({
streaming: {
buffer: {
seekGapFix: {
enabled: true
}
}
}
}) @lkinasiewicz Can you please confirm that #3772 solves your issue. |
Unfortunately, this does not fix the problem. Probably because the segment request can be generated, but playback cannot start because seek position is too close to the gap. GapController does not detect the gap when player is in seeking state. Please notice that the bug occurs when seeking near the gap, not to the gap. Logs from reproduction after changes from #3772:
|
@lkinasiewicz Thanks for checking this. You are right, the previous PR solved the issue when seeking into a gap but no the case in which the user seeks very close to a gap. I tried solving this in #3775. Can you please check the PR. Please note that you have to enable the fix via settings: player.updateSettings({
streaming: {
gaps: {
enableSeekFix: true
}
}}) Based on your feedback also in the upcoming weeks we can consider enabling this by default. |
This was fixed in version 4.1.0. Please comment if you encounter any issues. |
@dsilhavy please reopen. On development branch, with changes from #3775, when
|
@lkinasiewicz Thanks for testing, there was a mess up with the parenthesis in the function, sorry for that. It should be fixed with a2b9623 |
This fixed the issue. Thanks! 🎉 We can close this ticket. |
Environment
Steps to reproduce
Observed behavior
Playback stalls, no more data is being buffered. In the logs we can see that the player downloaded the last segment of the representation and does not switch to the next period. It keeps trying to generate a request for the next segment. Looks like the problem is in DashHandler -
isMediaFinished
keeps returningfalse
in this case.Maybe instead of this logic:
dash.js/src/dash/DashHandler.js
Lines 207 to 209 in b5f408b
it should check if there are more segments in current representation when streaming static manifest? I think it would be more obvious thing to do, but maybe there are some edge cases that I am not aware of?
Console output
Expected behavior
After seeking, the player keeps buffering and playing.
The text was updated successfully, but these errors were encountered: