Skip to content

Seek Slider's "min" attribute value is not updating properly in the Livestream #8522

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

Open
Ravi-79 opened this issue Apr 28, 2025 · 2 comments
Labels
type: bug Something isn't working correctly
Milestone

Comments

@Ravi-79
Copy link

Ravi-79 commented Apr 28, 2025

Have you read the FAQ and checked for duplicate open issues?
Yes, and I couldn't find any duplicate issues.

If the problem is related to FairPlay, have you read the tutorial?

No, it's not related.

What version of Shaka Player are you using?

v4.10.12

Can you reproduce the issue with our latest release version?
Yes

Can you reproduce the issue with the latest code from main?
Yes

Are you using the demo app or your own custom app?
Custom app

If custom app, can you reproduce the issue using our demo app?
Yes

What browser and OS are you using?
OS:
Edition Windows 11 Enterprise
Version 22H2
Browser:
Microsoft Edge for Business
Version 135.0.3179.85 (Official build) (64-bit)

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
N/A

What are the manifest and license server URIs?

https://stream.event.microsoft.com/stagwe/Content/HLS/Live/channel(c6924a17-375c-476f-865c-1d56ca270545)/master.m3u8

What configuration are you using? What is the output of player.getNonDefaultConfiguration()?

{
"preferredAudioLanguage": "en-US",
"preferredTextLanguage": "en-US"
}

What did you do?

  1. Set Up an Livestream with 15 minutes(any duration) of presentation timeline.
  2. Load the shaka player with the live manifest created. Make sure to load the player as soon as the livestream channel started.
  3. Observe the element's min and max attribute values.

What did you expect to happen?
Although the live window is set to 15 minutes, as we are watching the video within the first 15 minutes, the min value should be always at 0 and the max value should be increasing until it reaches the live window DVR length here which is 15 minutes. Then only the min value should be increased respectively.

What actually happened?

In a most common scenario the livestream will be having less duration or the live channel will be started a long back. Whenever an user starts to watch the video, he may already have the full length content within the presentation timeline length which is 15 mins (900 seconds - live duration) of content in my scenario and the player will be on live Edge.
In this case the min and max values of seek range is properly updating like
from 0 to 900 , 1 to 901, 2 to 902 , ...

But when the user starts to watch the video as soon as the live stream channel started from any of the streaming provider tools, it won't have the full duration of content, which will be progressively updated in the Realtime.
So it should probably update in the seek range like,
0 to 1, 0 to 2, .... 0 to 899, 0 to 900 and then it should automatically update both min and max value like 1 to 901, 2 to 902...

Proper min and max value 15 mins after the stream started:

Image

Improper min value for the first 15 mins:

Image

Image

Are you planning to send a PR to fix it?
No,

@Ravi-79 Ravi-79 added the type: bug Something isn't working correctly label Apr 28, 2025
@shaka-bot shaka-bot added this to the v4.15 milestone Apr 28, 2025
@Ravi-79
Copy link
Author

Ravi-79 commented May 18, 2025

Hi @avelad , Could you please let me know is there something you can help me with this issue?

@Ravi-79
Copy link
Author

Ravi-79 commented May 31, 2025

Hi @avelad , @joeyparrish ,

After some investigation, I found that segmentAvailabilityDuration_ doesn't always reflect the final DVR value (e.g., 900 as shown in the example). It appears to be continuously updating, and at times, its value is lower than expected. This seems to be the root cause of the issue.

Interestingly, when I override the availability window via the player config, the problem no longer occurs. However, I'm wondering—could this approach potentially lead to any segment-related issues?

For reference, here's the relevant function:

getSegmentAvailabilityStart() {
  goog.asserts.assert(this.segmentAvailabilityDuration_ >= 0,
      'The availability duration should be positive');

  const end = this.getSegmentAvailabilityEnd();
  const start = end - this.segmentAvailabilityDuration_;
  return Math.max(this.userSeekStart_, start);
}

Let me know your thoughts. Thanks!

@avelad avelad modified the milestones: v4.15, v4.16 Jun 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

3 participants