google / google/ExoPlayer

Automatically fallback to Widevine L3 in case there is a DRM error

Open
#8,108 14 comments 7 reactions 1 assignee Claimed by @icbaker View on GitHub
enhancement
Dominant language
Java
Stars
21.9k
Forks
6k
PR merge metrics
No merged PRs in 30d

Description

### [REQUIRED] Use case description
Recently some devices had their Widevine L1 license revoked (see #7986, #8075). This causes the affected devices to be unable to play DRM content by default, because ExoPlayer will attempt to use L1 (since the device claims to support it), which will fail (since the device had its license revoked).

### Proposed solution
ExoPlayer should have an option to automatically retry playback with L3 (if the DRM license allows it) instead of throwing a DRM-related exception. Only if playback was also unsuccessful with L3 should an error be thrown.

### Alternatives considered
* Implement this fallback mechanism directly in the app. It would be nice though if ExoPlayer offered this out of the box.
* Include the affected devices in [`needsForceWidevineL3Workaround()`](https://github.com/google/ExoPlayer/blob/59b34ede6165d029d86a677fea73a5dd0dd55c74/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java#L422-L429). However, this list would have to be manually kept up to date, and it would not cover devices with similar issues that have yet to be discovered.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.