castlabs / electron-releases

castLabs Electron for Content Security
https://castlabs.com/resources/downstream/
MIT License
224 stars 42 forks source link

Unable to load shaka-player demo or any Widevine DRM protected content on v30.0.0 #182

Closed eXhumer closed 6 months ago

eXhumer commented 6 months ago

Hello. I was recently testing the newly released v30.0.0 and had issues playing Widevine protected content with shaka-player, where player would simply refuse to play any content. The playlist would load without issue, but it seemed like the player wasn't sending any Widevine license request and remaining in paused state. I wanted to check if the shaka-player demo page was working (https://nightly-dot-shaka-player-demo.appspot.com/demo/) and the page seems to not load correctly at all. There is no issue with Widevine playback or the page loading on v29.3.0, but upgrading to v30.0.0 seems to break it. I just wanted to check if there is any issue with the v30.0.0 release, or if the issue is on my end.

My current platform is darwin and arch is arm64. Thanks.

v30.0.0

Screenshot 2024-04-19 at 7 10 36 AM

v29.3.0

Screenshot 2024-04-19 at 7 12 56 AM
eXhumer commented 6 months ago

So, I used the BitMovin DRM Stream Test (https://bitmovin.com/demos/drm) and it seems like v30.0.0 doesn't seem to recognize the Widevine CDM loaded, even though it appears to be available based on components.status output.

{
  oimompecagnajdejgnnjijobebaeigek: {
    status: 'new',
    title: 'Widevine Content Decryption Module',
    version: '4.10.2710.0'
  }
}

v29.3.0

Screenshot 2024-04-19 at 10 36 34 AM

v30.0.0

Screenshot 2024-04-19 at 10 34 38 AM
khwaaj commented 6 months ago

Thanks for the report.

I can confirm this is an issue that appeared between 30.0.0-alpha.6 and 30.0.0-alpha.7 (and it also affects 31.0.0-alpha.1, albeit a bit differently). I'll be looking into the cause and provide an update once I know more.

khwaaj commented 6 months ago

I identified the issue in v30 so the next release will contain a fix. Turns out that an upstream Chromium change was incorrectly incorporated into Electron and slipped through when we merged it into ECS, which caused key system registration to fail (ultimately leading to EME failures).

I'm confident the issue in v31 is related, but I'm yet to test a fix there. There were some additional changes to this key system API in upstream after the change mentioned above, and it seems the Electron team decided to simply remove the key system registration API entirely on the v31 branch instead of supporting the API updates, so this is almost certainly the cause of the problem on that branch (and it explains the slight difference in behavior).

khwaaj commented 6 months ago

I just published new versions for v30 and v31 which fixes the issue:

v30.0.1+wvcus v31.0.0-alpha.2+wvcus

eXhumer commented 6 months ago

Just tested the newly released v30.0.1 and I am happy to report that I no longer have any issue with it. Thanks for the quick fix release.