-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Shaka release 4.9.2-caf2
isn't playing our HLS streams anymore
#7600
Shaka release 4.9.2-caf2
isn't playing our HLS streams anymore
#7600
Comments
4.9.2-caf2
release isn't playing our HLS streams anymore4.9.2-caf2
isn't playing our HLS streams anymore
Can you please try the latest in each branch? If we've fixed it in a more recent release, it would be great to be able to roll you forward instead of backward. For now, you can continue to use
If none of these work, we would ask you to help us find the first branch that broke it (v4.4.0 - v4.9.0). Ultimately, we would ask you to work with us on a Thanks! |
Hi @joeyparrish, thanks! I have tested all versions using our stream and here are the results:
So, I went back in versions: Versions
From version |
I will attempt to bisect through these versions in a custom app with your content. Thanks for the info! |
On the main branch the stream works perfectly |
@avelad have you tested the main branch on a Chromecast receiver? I was only able to reproduce this issue on a Cast receiver. |
Sorry, the holidays were crazy. I promised to bisect this, and I'm doing so now. Each step of bisecting Shaka, I'm uploading that build to cloud storage with a custom receiver to test with your content. It definitely plays at 4.3.5 and not at 4.3.6. I should have it pinned down later today. |
This is the first bad commit: https://github.com/shaka-project/shaka-player/pull/5180/files |
This made changes to the same file: https://github.com/shaka-project/shaka-player/pull/6653/files With both reverted, I can play your content on Chromecast up to v4.10.0. Still exploring how far those changes will take us. Then I plan to look more closely into how these changes can explain the failure with your content. |
After analyzing the changes in #5180, it seems that we changed an output for HEAD requests. In the older Chromium (as present on Chromecast), the arrayBuffer for a HEAD request was an empty ArrayBuffer. After our change, we avoid calling for it, and we leave the local arrayBuffer variable undefined. This then becomes part of the It's not clear who would be accessing that, or why, but it should be easy enough to restore the old behavior and always have a defined ArrayBuffer (even an empty one). If it only fails on Chromecast, it's probably failing in the Cast SDK itself for some reason. Perhaps a filter inserted into the network stack of Shaka Player. With ArrayBuffer defined (a 1-line change), this is now working all the way up to today's I'll put that change up for review shortly, but I'll also continue to dig into the Cast SDK to see why that seems to trigger this. We should patch the SDK as well, if possible. |
The HLS parser makes a HEAD request with request type SEGMENT, to determine the MIME type of a segment when it can't otherwise guess from the URL. Your segment URLs don't have file extensions (which is fine, generally). The Cast SDK has response filters that assume SEGMENT responses always have data. (The SDK does not assume this about MANIFEST or KEY responses.) So I'll fix the SDK, too. |
The Cast SDK currently assumes that SEGMENT response objects always have data, however this stopped being true for HEAD requests in v4.3.6. This PR fixes the behavior of the Fetch plugin so that HEAD requests will at least have an empty ArrayBuffer for data, as they did in v4.3.5 and earlier. The Cast SDK will also receive a fix to stop assuming this, fixing compatibility with v4.3.6+ - v4.12.6. This incompatibility between the current Cast SDK and these versions of Shaka Player is only triggered by HLS content whose segment URLs have no recognizable extension. Affected Shaka Player versions: - v4.3.6 - v4.3.16 - v4.4.x - v4.8.x - v4.9.0 - v4.9.34 - v4.9.2-caf - v4.9.2-caf4 - v4.10.x - v4.11.0 - v4.11.18 - v4.12.0 - v4.12.6 Affected Cast Web Receiver SDK versions: - <= 3.0.0137 Fixes will be in: - v4.9.35+ - v4.9.2-caf5+ - v4.11.19+ - v4.12.7+ - v4.13.0+ Closes shaka-project#7600
Many thanks @joeyparrish! 💪 Kudos for the detailed explanation of the problem, I've seen the SEGMENT requests before and didn't know what it was for. I do now 😄 |
The Cast SDK currently assumes that SEGMENT response objects always have data, however this stopped being true for HEAD requests in v4.3.6. This PR fixes the behavior of the Fetch plugin so that HEAD requests will at least have an empty ArrayBuffer for data, as they did in v4.3.5 and earlier. The Cast SDK will also receive a fix to stop assuming this, fixing compatibility with v4.3.6+ - v4.12.6. This incompatibility between the current Cast SDK and these versions of Shaka Player is only triggered by HLS content whose segment URLs have no recognizable extension. Affected Shaka Player versions: - v4.3.6 - v4.3.16 - v4.4.x - v4.8.x - v4.9.0 - v4.9.34 - v4.9.2-caf - v4.9.2-caf4 - v4.10.x - v4.11.0 - v4.11.18 - v4.12.0 - v4.12.6 Affected Cast Web Receiver SDK versions: - <= 3.0.0137 Fixes will be in: - v4.9.35+ - v4.9.2-caf5+ - v4.11.19+ - v4.12.7+ - v4.13.0+ Closes #7600
The Cast SDK currently assumes that SEGMENT response objects always have data, however this stopped being true for HEAD requests in v4.3.6. This PR fixes the behavior of the Fetch plugin so that HEAD requests will at least have an empty ArrayBuffer for data, as they did in v4.3.5 and earlier. The Cast SDK will also receive a fix to stop assuming this, fixing compatibility with v4.3.6+ - v4.12.6. This incompatibility between the current Cast SDK and these versions of Shaka Player is only triggered by HLS content whose segment URLs have no recognizable extension. Affected Shaka Player versions: - v4.3.6 - v4.3.16 - v4.4.x - v4.8.x - v4.9.0 - v4.9.34 - v4.9.2-caf - v4.9.2-caf4 - v4.10.x - v4.11.0 - v4.11.18 - v4.12.0 - v4.12.6 Affected Cast Web Receiver SDK versions: - <= 3.0.0137 Fixes will be in: - v4.9.35+ - v4.9.2-caf5+ - v4.11.19+ - v4.12.7+ - v4.13.0+ Closes #7600
The Cast SDK currently assumes that SEGMENT response objects always have data, however this stopped being true for HEAD requests in v4.3.6. This PR fixes the behavior of the Fetch plugin so that HEAD requests will at least have an empty ArrayBuffer for data, as they did in v4.3.5 and earlier. The Cast SDK will also receive a fix to stop assuming this, fixing compatibility with v4.3.6+ - v4.12.6. This incompatibility between the current Cast SDK and these versions of Shaka Player is only triggered by HLS content whose segment URLs have no recognizable extension. Affected Shaka Player versions: - v4.3.6 - v4.3.16 - v4.4.x - v4.8.x - v4.9.0 - v4.9.34 - v4.9.2-caf - v4.9.2-caf4 - v4.10.x - v4.11.0 - v4.11.18 - v4.12.0 - v4.12.6 Affected Cast Web Receiver SDK versions: - <= 3.0.0137 Fixes will be in: - v4.9.35+ - v4.9.2-caf5+ - v4.11.19+ - v4.12.7+ - v4.13.0+ Closes #7600
The Cast SDK currently assumes that SEGMENT response objects always have data, however this stopped being true for HEAD requests in v4.3.6. This PR fixes the behavior of the Fetch plugin so that HEAD requests will at least have an empty ArrayBuffer for data, as they did in v4.3.5 and earlier. The Cast SDK will also receive a fix to stop assuming this, fixing compatibility with v4.3.6+ - v4.12.6. This incompatibility between the current Cast SDK and these versions of Shaka Player is only triggered by HLS content whose segment URLs have no recognizable extension. Affected Shaka Player versions: - v4.3.6 - v4.3.16 - v4.4.x - v4.8.x - v4.9.0 - v4.9.34 - v4.9.2-caf - v4.9.2-caf4 - v4.10.x - v4.11.0 - v4.11.18 - v4.12.0 - v4.12.6 Affected Cast Web Receiver SDK versions: - <= 3.0.0137 Fixes will be in: - v4.9.35+ - v4.9.2-caf5+ - v4.11.19+ - v4.12.7+ - v4.13.0+ Closes #7600 Release-As: 4.9.2-caf5
Have you read the FAQ and checked for duplicate open issues?
Yes
If the problem is related to FairPlay, have you read the tutorial?
Not related
What version of Shaka Player are you using?
4.9.2-caf2
Can you reproduce the issue with our latest release version?
No
Can you reproduce the issue with the latest code from
main
?No
Are you using the demo app or your own custom app?
Custom receiver
If custom app, can you reproduce the issue using our demo app?
No
What browser and OS are you using?
MacOS 15.0 - Google Chrome 130 - Google Chromecast 4K
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Google Chromecast 4K - Android TV 12
What are the manifest and license server URIs?
https://livestreaming.b67.tweedekamer.nl/2024-11-13/thorbeckezaal/index.m3u8?hd=1&sourcetimestamps=1&subtitles=vod&keyframes=1&start=2024-11-13T10%3A00%3A12%2B0100&end=2024-11-13T13%3A11%3A47%2B0100
What configuration are you using? What is the output of
player.getNonDefaultConfiguration()
?What did you do?
What did you expect to happen?
What actually happened?
Are you planning send a PR to fix it?
Uncertain at this moment
Additional information
We're receiving multiple reports of our users that casting is not working anymore. We're able to trace it down to the Shaka player upgrade done recently because it was working fine earlier this week. When we manually downgrade the Shaka version to
4.3.4
(the previous version used by the receiver) the issue is gone.The text was updated successfully, but these errors were encountered: