-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Request to detect PlayReady Hardware DRM #818
Comments
@avelad, can you help us understand more specifically what you want in terms of behavior? Do you want us to add the .hardware variant to Do you want us to try Do you want some configuration for this? |
Yes, I want that you add com.microsoft.playready.hardware to probeSupport().With this I can set one or other url to the player (eg: 720p url or 2K/4K url). Add this to probeSupport should be easy, can you add it to 2.1.2 or 2.2.0? I think that second option it's better but it's require more work. In this case it's necessary active this with a parameter on the config. |
I will experiment with this a little and let you know what we can do. Adding to |
Here's one possible solution: To request that we use A better solution would be to use robustness settings in the advanced DRM config. But I am not familiar with the specific robustness values Microsoft Edge supports. I will experiment with this a little. |
Edge does not seem to support robustness correctly. I filed a bug about this: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12133118/ We could work around that bug, though. The bigger issue with using robustness is that I am unable to guess which robustness strings are valid for Edge/PlayReady. I tried these with no luck: 1000, 2000, 3000, SL1000, SL2000, SL3000. @avelad, do you know what Microsoft considers valid robustness values? I asked in the bug I filed, but it may be some time before I get a reply. |
I do not know what values are possible, in the past I could not find any value that works, and the documentation is not clear. I'm sure that Netflix knows the solution for this, because they have been implemented logic for 4K with high level of protection only on Edge, but I do not know the logic. I thought a possible solution was to use probeSupport() and check if there are compability with hvc1 and com.microsoft.playready.hardware. With this, we load a stream that use com.microsoft.playready |
I would like to request this feature as well, because the usage of PlayReady Hardware DRM is required for higher value content. It seems to me that there's no work happening on this feature, because there's no clear understanding how it must work. I'll try to clarify it. PlayReady Hardware DRM is another key system that Shaka Player must support, which is
Currently, it doesn't work. I get the following error in the console:
I guess it happens because Shaka Player doesn't know anything about the Robustness values in the advanced DRM configuration is not an option, because PlayReady doesn't use such concept. PlayReady clients have a security level property. Currently, there are 3 security levels defined: 150 (test clients), 2000 (clients that use software-based security; Software DRM) and 3000 (clients that use hardware-based security; Hardware DRM). It's possible to use security levels 150 and 2000 with the In order to be able to use PlayReady Hardware DRM (the In order to acquire a license, the client sends a license request to a license server. The client mentions its security level in the license request, so the security level is available to the license server. The license server uses this info to generate a license. The license has a "minimum security level" policy, which means that the client may use a license only if its security level is equal or higher than the minimum security level specified in the license. For example, if the license says that only clients with security level 2000 are allowed to use the license, then clients with security level 150 won't be able to use the license. In fact, the license server will even refuse to give such license to the client, because the client's security level is lower than what's required. This all means that since Shaka Player doesn't support the
Sending a license request from a PlayReady client that has security level 2000 will result in the following error:
Sending a license request from a client that has security level 3000 should result in a license response. That's a lot of reading, but hopefully it clarifies how things are expected to work. I guess, for Shaka Player all these details are not very important, and it all boils down to simply adding support for another key system, which is More info about PlayReady and EME can be found here. It's also worth mentioning that supporting PlayReady Hardware DRM is important not only because of movie studio requirements, but also because Hardware DRM is required in order to use licenses with AES CBC keys. Microsoft is going to add support for |
@joeyparrish is it possible add support to |
We will consider this in our next round of planning. Right now, v2.5 is quite full, and we will likely have to cut some features from that list to make our deadlines. |
In the mean time, we are happy to have someone in the community look into it and provide some suggestions on how it could be achieved, then work on a PR to that end. Thanks! |
FYI: When using the com.microsoft.playready.recommendation key system string, you can explicitly request hardware DRM by setting the MediaKeySystemMediaCapability's "robustness" string to "3000" for the corresponding contentType. Of note, only certain contentType values support Hardware DRM - e.g. hardware DRM is never supported for any audio content; hardware DRM is only supported for HEVC content when the corresponding hardware, codec, and drivers are available; etc. When "3000" is specified for the "robustness" string and Hardware DRM is not supported for the given contentType, requestMediaKeySystemAccess will behave as defined by the W3C Recommendation 18 September 2017 specification as linked here: Here is an example javascript code snippit that explicitly requests Hardware DRM for AVC1 video content. Only Software DRM is supported for audio streams, so the "robustness" string is not specified for the audio codec. (Obviously, because this code snippit only specifies a single MediaKeySystemConfiguration, the promise will be rejected if Hardware DRM is unavailable as per the EME specification.)
I hope this helps, |
I think that the issue can be closed and follow up #1495 |
Hi, Any help here is appreciable. Is there any way to detect playready hardware DRM ? |
Using com.microsoft.playready.recommendation is strongly recommended. To request Hardware DRM, use the robustness string as indicated in my July 17, 2018 comment. While com.microsoft.playready.hardware will technically request hardware DRM, it will also use the legacy EME implementation. That implementation is deprecated, and there are no plans to update it with bugfixes or feature improvements. I hope this helps, |
This is a enhancement request for detect PlayReady Hardware DRM. According to: http://playready.azurewebsites.net/Home/Hwdrm
The text was updated successfully, but these errors were encountered: