Skip to content
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

Add the possibility to set a new keySystems option on the reload API #1308

Merged
merged 1 commit into from
Nov 14, 2023

Conversation

peaBerberian
Copy link
Collaborator

A majority of the bigger issues we encounter in production is DRM-related, leading us to either work-around those in the RxPlayer, or to facilitate a work-around on the application-side through a better DRM-related API.

Recently, we've seen that many Windows/Edge users (but still a minority of them) could encounter an issue on the generateRequest EME call when relying on PlayReady SL3000 (hardware-backed decryption and playback, seen as one the most secure DRM mechanism for OTT contents) which would lead to a failure to play the content.

When this happens, fallbacking to a different key system like PlayReady SL2000 (where decryption happens in software) or Widevine usually (though not always) seems to avoid the issue, even if it might lead to less protection and thus might lead generally to only lower video qualities (as higher security requirements are in practice generally just enforced for the higher video qualities, depending on license policies).

After brainstorming whether this fallback should be done on the RxPlayer-side, or on the application-side, we're for now implementing the easier way (for us :p) of just providing here an API allowing to just let the application replay the last loaded content (whose loading may have failed due to the aforementioned generateRequest error) with a different keySystems configuration, thus allowing an application to reload the last loaded content after blacklisting the current key system if the error appears to be linked to that issue.

@peaBerberian peaBerberian added DRM Relative to DRM (EncryptedMediaExtensions) API Relative to the RxPlayer's API Priority: 1 (High) This issue or PR has a high priority. labels Nov 2, 2023
@peaBerberian peaBerberian added this to the 3.33.0 milestone Nov 2, 2023
A majority of the bigger issues we encounter in production is
DRM-related, leading us to either work-around those in the RxPlayer, or
to facilitate a work-around on the application-side through a better
DRM-related API.

Recently, we've seen that many Windows/Edge users (but still a minority
of them) could encounter an issue on the `generateRequest` EME call when
relying on PlayReady SL3000 (hardware-backed decryption and playback,
seen as one the most secure DRM mechanism for OTT contents) which would
lead to a failure to play the content.

When this happens, fallbacking to a different key system like PlayReady
SL2000 (where decryption happens in software) or Widevine usually
(though not always) seems to avoid the issue, even if it might lead to less
protection and thus might lead generally to only lower video qualities (as
higher security requirements are in practice generally just enforced for
the higher video qualities, depending on license policies).

After brainstorming whether this fallback should be done on the
RxPlayer-side, or on the application-side, we're for now implementing the
easier way (for us :p) of just providing here an API allowing to just
let the application replay the last loaded content (whose loading may have
failed due to the aforementioned `generateRequest` error) with
a different `keySystems` configuration, thus allowing an application to
reload the last loaded content after blacklisting the current key system
if the error appears to be linked to that issue.
@peaBerberian peaBerberian changed the base branch from master to next November 14, 2023 13:23
@peaBerberian peaBerberian merged commit c3bac09 into next Nov 14, 2023
2 of 3 checks passed
peaBerberian added a commit that referenced this pull request Nov 14, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Nov 14, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Nov 23, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Nov 23, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Nov 23, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 4, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 4, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 4, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 5, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 5, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 5, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 5, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 7, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 7, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 19, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 19, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 20, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 20, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 22, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 22, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Dec 22, 2023
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 3, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 3, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 3, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 3, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 3, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
@peaBerberian peaBerberian deleted the feat/reload-keySystems branch January 5, 2024 13:56
@peaBerberian peaBerberian restored the feat/reload-keySystems branch January 5, 2024 13:57
peaBerberian added a commit that referenced this pull request Jan 11, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 11, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 11, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 11, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 15, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 15, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 15, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 15, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 23, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 23, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 23, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 23, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
peaBerberian added a commit that referenced this pull request Jan 23, 2024
Add the possibility to set a new `keySystems` option on the `reload` API
@peaBerberian peaBerberian mentioned this pull request Jan 24, 2024
@peaBerberian peaBerberian deleted the feat/reload-keySystems branch February 7, 2024 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API Relative to the RxPlayer's API DRM Relative to DRM (EncryptedMediaExtensions) Priority: 1 (High) This issue or PR has a high priority.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants