-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
Have you read the FAQ and checked for duplicate open issues?
Yes, there are duplicate issues, but they are closed and unresolved. Related issues: #3707, #4305, and #6321
If the problem is related to FairPlay, have you read the tutorial?
N/A
What version of Shaka Player are you using?
Tested on 4.10.0, 4.12.8 (currently used in prod) and 4.14.5
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?
Our own custom app.
If custom app, can you reproduce the issue using our demo app?
Yes
What browser and OS are you using?
LG webOS 4 / Chromium 53
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
LG OLED65B9PUA, OS version : 05.40.61. Reproductible on multiple other 2018-2019 webOS 4 TVs.
What are the manifest and license server URIs?
We'll send the URI privately if needed. The issue is reproductible with Sintel.
What configuration are you using? What is the output of player.getNonDefaultConfiguration()
?
{
"drm": {
"servers": {
"com.widevine.alpha": "",
"com.microsoft.playready": "",
"com.apple.fps.1_0": ""
}
},
"streaming": {
"retryParameters": {
"maxAttempts": 5
}
},
"abr": {
"useNetworkInformation": false,
"defaultBandwidthEstimate": 900000,
"minTimeToSwitch": 3
}
}
What did you do?
Started a VOD or live playback.
What did you expect to happen?
The content plays without any interruptions or issues.
What actually happened?
With Widevine DRM:
The content frequently stalls. This occurs by itself after a few minutes but can also be triggered by interacting with the UI, which consumes some of the processing resources.
For live playback, the content eventually falls outside the live window, causing an infinite loop:
- The player seeks back into the live window.
- Buffering.
- Falling out of the live window again due to the stream taking too long to load on slower devices.
- Repeating the loop.
With PlayReady:
- VOD: The content plays flawlessly!
- Live: The content never start...
More details
We've been dealing with a persistent issue in production where users with older LG TVs (2018-2019 models) report constant video buffering when using the app. Here's a breakdown of the investigations and findings so far:
-
Initial Hypothesis:
We initially suspected a performance issue with the 1080p 60fps low-latency live stream. As a mitigation, we locked targeted devices to 720p 30fps. While this slightly improved the situation, it did not resolve the problem. -
Further Investigations:
- We reproduced the stuttering issue even at 360p, regardless of whether it was a live stream or VOD.
- Upon further research, we found related issues (linked above) indicating others are experiencing similar problems on webOS 4. We tried the suggested fixes, such as disabling the stall detector and gap jumping, but these did not help.
-
Key Findings:
- The video element consistently fires
waiting
events, even with 10 seconds of buffered content available. - Testing with non-DRM content (e.g., Sintel) worked flawlessly, even in 4K.
- Testing Sintel with Widevine DRM enabled reproduced the issue, indicating the stuttering might be DRM-related.
- Switching to PlayReady DRM resolved the issue for VOD playback, but live streaming with PlayReady fails to start. Logs show the license server response is received, but the key status never becomes
usable
.
- The video element consistently fires
live-not-woking.log
vod-working.log
- The same code works without issue on webOS 22+ (we don't have a webOS 5 or 6 to test on) TVs either with Widevine or PlayReady.
Additional Context
We are reaching out to get your input on whether you think these issues are fixable. Before communicating to our client that this can't be resolved on our end, we would like your expertise to determine whether there's a workaround or a deeper issue we might have missed.
Thank you for your assistance.
Are you planning to send a PR to fix it?
If we find the issue, if it's fixable and if we have enough time to do it, maybe.