-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Cannot cast widevine-encrypted vorbis content #7546
Comments
From this detail, it sounds like you had a license server failure. Does it work with https://proxy.uat.widevine.com/proxy as the license server? |
I see the same results with https://proxy.uat.widevine.com/proxy: playback works fine on the shaka demo website, but not on the cast device. Sorry, I should have included this info in the original bug report, but the webpage shows "Shaka Error 6007". But again, only when casting (playing the content on the shaka demo site works fine). |
Do you have the |
Specifically the error data from proxy.uat.widevine.com/proxy, since we already saw an HTTP 500 error from the other license server. |
How can I access error.data? Isn't that from shaka code? I'm just casting. |
If you can't access the Shaka error object directly in your cast receiver, can you send us the logs? In the first version, you said:
These logs for the UAT proxy would be helpful. In fact, full logs would be ideal if you have them. Thanks! |
Okay, so HTTP 400 is the status from the UAT proxy. Widevine's UAT proxy is rejecting the request for a license for this content, but it's not clear why. If you can capture the actual request from the dev console's network tab, and send a base64-encoded or hex-encoded version of it here, I should be able to decode it and use Widevine's partner tools to parse it. Understanding what's in the request should help. If you can do the same for the license request from the browser, we can parse both and compare. Finally, we can start a support request with Widevine armed with this information. Probably there is some older request format used by Cast devices, which Widevine's servers have stopped supporting. If we have details and can be specific, they may consider restoring compatibility with these older Widevine CDMs. |
@antoniori-eng what demo url are you using? |
I'm just casting from https://shaka-player-demo.appspot.com/ with the custom content mentioned in the first comment: Playback works in the browser, but fails when casting. Other codecs work fine when casting. |
What devices have you tried? |
I just reproduced the failure on an Android-based Chromecast, which is relatively recent. 😭 |
Interestingly, I did see it work on one cast device I tried just now: a Nest Hub Gen 2 (running Fuchsia). It fails on every other device I've tried, though: "Chromecast with Google TV," a third-party LG TV, and a third-party Vizio TV. I have access to cast's logs on the LG TV, and I don't see a CDM being constructed. |
I managed to capture a request from a failing device. The request payload that fails seems to be JSON, not a Widevine license request.
To do this, I had to work around a UI bug (the |
I think the player is selecting ClearKey, then sending a ClearKey request to a Widevine server. I'm not sure why this only happens while casting. |
The cast receiver attached to the demo is based on the nightly build. The nightly build plays this content just fine in the browser. Casting with the nightly build results in error 6012, no license server given. (Found a demo UI bug: if you specify an explicit key system ID in the asset config, it doesn't get saved.) The demo's "custom asset" feature has some limitations. You can only configure one license server URI. So if the player fails to negotiate for a Widevine CDM on the cast device, it will fall back to clear key, but that single server URI means it will then send a clearkey license request to the Widevine server, which results in HTTP 400. This weirdness is a limitation of the demo asset configuration AFAICT. If I cast a version where I have stripped out the ClearKey parts of the MPD (https://storage.googleapis.com/shaka-demo-assets/_7546/wv-only.mpd), then I see error 6001, REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE. For some reason, the cast device rejects the Player's request for a Widevine CDM. |
If the remote player does not have getChapters(), the proxied call returns undefined. This led to exceptions when .length was accessed. Reported as part of issue shaka-project#7546
) If the remote player does not have getChapters(), the proxied call returns undefined. This led to exceptions when .length was accessed. Reported as part of issue #7546
) If the remote player does not have getChapters(), the proxied call returns undefined. This led to exceptions when .length was accessed. Reported as part of issue #7546
) If the remote player does not have getChapters(), the proxied call returns undefined. This led to exceptions when .length was accessed. Reported as part of issue #7546
Have you read the FAQ and checked for duplicate open issues?
Yes. I found no open issues involving Vorbis specifically. The same scenario with different codecs seems to work fine, so I suspect that this may be an issue related to Vorbis+Widevine specifically in the "Shaka Cast Demo Nightly" app (app ID 07AEE832).
If the problem is related to FairPlay, have you read the tutorial?
N/A
What version of Shaka Player are you using?
Shaka Demo Nightly Cast App, app ID 07AEE832
Can you reproduce the issue with our latest release version?
Yes
Can you reproduce the issue with the latest code from
main
?N/A
Are you using the demo app or your own custom app?
Demo cast app
If custom app, can you reproduce the issue using our demo app?
N/A
What browser and OS are you using?
Casting to a "Chromecast with Google TV" device, from a chrome browser on a variant of Debian Linux.
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
This seems to repro on any cast device. I tested on a production "Chromecast with Google TV" device.
What are the manifest and license server URIs?
Manifest URL: https://www.gstatic.com/cast_3p/wv/live/vorbis/vorbis_1100hz.mpd
License URL: https://cwip-shaka-proxy.appspot.com/no_auth
What configuration are you using? What is the output of
player.getNonDefaultConfiguration()
?N/A (it's the shaka demo cast app running)
What did you do?
What did you expect to happen?
Playback should work on the TV with the "Chromecast with Google TV" plugged into it.
What actually happened?
Playback works for a few seconds, then stops (once it reaches the encrypted content).
From debugging on a different cast device, it looks like the CDM is not being initialized. In the chromecast code, a CDM is never constructed.
In the JS logs, I see
Failed to load resource: the server responded with a status of 500 () cwip-shaka-proxy.appspot.com/no_auth:1
Are you planning send a PR to fix it?
No
The text was updated successfully, but these errors were encountered: