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

HLS fmp4 using CENC(CTR) with Playready DRM #283

Open
kamalonly opened this issue Nov 1, 2017 · 10 comments
Open

HLS fmp4 using CENC(CTR) with Playready DRM #283

kamalonly opened this issue Nov 1, 2017 · 10 comments
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this type: enhancement New feature or request
Milestone

Comments

@kamalonly
Copy link

Does Shaka packager support packaging hls fmp4 using CENC(CTR) with Playready DRM?

@kqyang
Copy link
Contributor

kqyang commented Nov 1, 2017

Not right now. I don't think there will be a lot of work to add support for it in Shaka packager, but we'll need to have a defined format first.

I am not aware of any public specification on carriage and signaling of Playready DRM in HLS playlist. Let us know if there is one.

@tinskip
Copy link
Contributor

tinskip commented Nov 1, 2017 via email

@universalarchi
Copy link

I don't know detail about DRM's specification. So I have a question.
I just wonder is this follow the standard of hls? same as supporting SAMPLE-AES-CENC widevine in m3u8+fmp4.
I think we don't need to follow hls standard. right? It is just for Apple's device. right?
ps. I don't want to make argument. I just wonder about drms in fmp4+m3u8.

@kqyang
Copy link
Contributor

kqyang commented Nov 28, 2017

No, HLS standard does not define anything on non-Apple DRM systems. A custom tag needs to be defined, similar to Widevine's SAMPLE-AES-CENC, possibly extend from SAMPLE-AES-CENC. The specification should be made public and implemented in various players as well.

@kqyang
Copy link
Contributor

kqyang commented Mar 8, 2018

Calls for contributions if you knows about Playready DRM signaling in HLS or if you have a copy of the specification. PR is always welcomed!

@kqyang kqyang added this to the Backlog milestone Mar 8, 2018
@kqyang kqyang added type: enhancement New feature or request flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this and removed need more info labels Mar 8, 2018
@modernletter
Copy link
Contributor

According to current Microsoft documentation com.microsoft.playready is recommended KEYFORMAT used to signal PlayReady in HLS (fMP4) using standard #EXT-X-KEY tag. URI contains base-64 encoded PlayreadyObject, and METHOD is SAMPLE-AES (cbcs) / SAMPLE-AES-CRT (cenc) like in Widevine. PlayReady should also be signalled at master playlist.

There is also test content using this KEYFORMTAT:
https://testweb.playready.microsoft.com/Content/Content4X

According to doc, this should work with CENC-CTR for Windows 10 and Xboxes and with CENC-CBCS for Xboses only.

@kqyang
Copy link
Contributor

kqyang commented May 9, 2019

@modernletter Nice! Thanks for the information.

@Able1991
Copy link

Any news? I want to try to encrypt playready with cbcs(playready+widevine+fairplay with my custom pssh from key servers), now the packer adds the necessary data to the dash manifest, but there is nothing in the hls playlist

@xusuona
Copy link

xusuona commented Jan 3, 2024

shaka-packager does not generate "ext-x-key" tag when encrypting hls with PlayReady, which obviously does not comply with Microsoft DRM standard, is there a way to solve this problem?

@Able1991
Copy link

Able1991 commented Jan 3, 2024

shaka-packager does not generate "ext-x-key" tag when encrypting hls with PlayReady, which obviously does not comply with Microsoft DRM standard, is there a way to solve this problem?

I have a temporary solution, I add the desired tag to the playlist, taking the data from the mpd manifest. I take the mspr:pro value and add the line to the playlist myself.

#EXT-X-KEY:METHOD=SAMPLE-AES,URI="data:text/plain;base64,${msProFromMpd}",KEYFORMAT="com.microsoft.playready",KEYFORMATVERSIONS="1"

Just for now I don’t have the opportunity to check the correctness of this encryption, since my Windows laptop does not support cbcs playready, need to find an Xbox for tests =(
If you have the opportunity to check, tell me if it works in the player

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

7 participants