Can/should we have an API for re-provisioning DRM certificates?
See original GitHub issue[REQUIRED] Searched documentation and issues
Indeed, I did.
[REQUIRED] Question
tl;dr what, if any, are the ill effects of “over-provisioning” DRM certificates? As an extreme example, if we were to provision each time the player started up, would we have any problems besides unnecessary resource usage and added latency?
We see a relatively constant low-level trickle of MediaDrmStateException
, and we’ve always chalked them up to hw vendor issues on odd devices, but recently somebody on our dev team ended up in a state where they were consistently getting MediaDrmStateException
caused by Failed to get key request: General DRM error
on their Pixel 4 after the Android 11 upgrade. It was consistently reproducible so we dove in.
We tried everything imaginable short of a factory reset, but the device was stuck, it just wouldn’t give us the key request. Other apps successfully played DRMed content, just not ours. Then we forced a re-provision in our own code (outside of Exo). Things got unstuck and magically started working.
Now we’re trying to figure out if this could help the handful of users who are getting this error on a regular basis, and if it might help the multiple handfuls of users who get other various DRM errors on a regular basis.
Our working plan is to trigger a re-provision based on an allow-list of DRM exceptions, and potentially give users a control “recalibrate their player” that they can use when support tells them to.
If this is something that might help other people and isn’t a “bad idea” for some opaque DRM-related reason it might be nice to have an API to perform the reprovision from inside of Exo, perhaps by allowing us to inject an overriden ProvisioningManagerImpl
.
Issue Analytics
- State:
- Created 3 years ago
- Comments:44 (11 by maintainers)
Any update on this issue? We discovered 3 devices that are completely unable to play any DRM content on Android 11.
We also faced problems with users not being able to playback widevine / drm protected content on our app. We’ve only been able to observe it happening via issues raised through our customer care team, and haven’t seen it on any dev devices.
The symptoms were the same - not being able to playback protected content in our app, other apps work fine, and all of the usual steps like reinstalling didn’t work for the users. Plenty of other users had identical devices with no playback issues as well.
Anyways, as a test, we built in the ability for us to remotely allow users with the problem to initiate DRM reprovisioning and it’s worked to resolve the issue for multiple users at this point.
It does feel like something that should be automatic though.