-
Notifications
You must be signed in to change notification settings - Fork 506
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
Marlin DRM support #381
Comments
@jakubvojacek If you can generate your own PSSH seems like you should be able to do this now with DASH CENC with raw key. https://google.github.io/shaka-packager/html/tutorials/raw_key.html |
@zshenker thank you, I will look into that. |
Thanks, @zshenker. @jakubvojacek Let us know if you have any questions with using raw key. I am also curious what will be the use case for Marlin DRM. Is there any device supporting Marlin DRM only? |
@kqyang we are planning to use marlin for ios (using expressplay SDK). I have tried raw key before when testing clear key encryption and it worked. Not very experienced with DRM's, terminology and usage (pssh generation, etc, ...) but trying to learn it slowly |
@zshenker I started doing some testing and unfortunately it is not playing yet. Before I bring this to Expressplay support, can you please confirm whether I am packaging it correctly? I am using raw key with 2 pssh, one for widevine and one for marlin
I am generating pssh for widevine with
and for marlin with
the widevine seems to be working because I can play the content with expressplay widevine license server. But with Marlin, it is not. Testing marlin is a bit harder since its not supported in web browsers. I am therefore testing in their sample android app where I can supply the MPD and marlin license server. It is not playing but not displaying any error either. Any idea or should I get in touch with their support. Thank you for your support |
@jakubvojacek This does not generate a marlin PSSH.
You'll need to approach Marlin's support to have them generate Marlin PSSHs for you. Another option is to add Marlin pssh generation support to pssh-box.py tool or to Shaka Packager directly. We'll need someone, who is familiar with Marlin specification, help on this then. And FYI. Widevine actually has an iOS SDK as well. You can contact Widevine if you want to know more about it. |
@kqyang I tried updating pssh-box.py to support marlin according to their specs but I was just now in touch with their support and they're saying that their players do not support PSSH boxes and we shouldnt bother. Will keep this thread updated in case of any reply from their side. Thank you |
@jakubvojacek Thanks for the info! I don't know much about Marlin, but I thought they are "CENC" compatible - which means that PSSH is used to fetch the license. I am curious how their player work if PSSH is not used / supported. |
@kqyang as far as I have been told, they require that
is present in the MPD. Will keep you posted once i hear from them. Thank you |
@jakubvojacek If a Marlin PSSH is provided to Shaka Packager, right now packager will generate something like this in MPD: <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="{key id in GUID format}"/>
<ContentProtection schemeIdUri="urn:uuid:5E629AF5-38DA-4063-8977-97FFBD9902D4">
<cenc:pssh>{marlin pssh in base64}</cenc:pssh>
</ContentProtection>
{content protection element for other DRMs if provided} The mechanism of carrying PSSH in MPD follows DASH specification (23009-1:2014). It seems to carry the same amount of information as above. Is this not supported by Marlin player? |
Yes, I have already some content generated that has PSSH box looking just like that and I submitted a ticket to them and the response was
hoping to hear from them tomorrow so will get back to you, once again, thank you |
So after another talk with their support I got an answer
quite confused. becuase from what I understood from the message, to add support for marlin, we can ecrypt the content with widevine for example, add the marlin signaling in the MPD and it should work. |
@jakubvojacek Thanks for the info. Yes, it is confusing. Can you try adding a Marlin ContentProtection element manually to the DASH manifest generated by Shaka Packager, to see if it works?
We can then consider supporting it in our manifest generation code. |
@kqyang tested today and it really works, all I had to do was to add
I was able to replay the content using their app then (sample working MPD https://goo.gl/bs7Yz5). Could you please consider adding this to the mpd? Thank you |
@jakubvojacek Cool. I have one more question: Is the key id specified in "urn:marlin:kid:abba271e8bcf552bbd2e86a434a9a5d9" the same as the key id you provided to Shaka Packager in |
@kqyang yes, the packager command to generate this MPD before adding marlin stuff was
|
Thanks @jakubvojacek. Added to v2.3 milestone for now. You are welcome to contribute if you know C++ coding. Here is where you need to touch: https://github.com/google/shaka-packager/blob/37d4ff017f16163bbdd467a6b121968b5c40c97e/packager/mpd/base/mpd_utils.cc#L331 and https://github.com/google/shaka-packager/blob/37d4ff017f16163bbdd467a6b121968b5c40c97e/packager/mpd/base/xml/xml_node.cc#L220 if you are interested. |
had a class of C in the uni but never really did anything, more of a PHP developer here. But will take a look and see whether I could try something, thank you |
Hi guys, this is Nicolas from Intertrust. I'd like to add an (important) note here:
Yes, the same Key Id needs to be used here, For example, something like "urn:marlin:kid:ABBA271e8bcf552bbd2e86a434a9a5d9" is not conformant and will cause issue to the Marlin client. |
Thanks @jakubvojacek. @nibredy Thanks for the info! |
Any update on this? I am also looking for the marlin support in shaka packager. Currently intrust/expressplay(The creator of marlin) suggest to use bentoo4 tools for packaging content. MArlin content can be packaged together with widevine and playready. Shaka packager need to support packaging of marlin content together with widevine and playready @jakubvojacek @kqyang any update on this work? |
@sridhard We don't have resource to work on this right now. It is planned for milestone v2.3, i.e. in Q3 this year. You are also welcomed to contribute if you are interested. See my previous post for details. |
@nibredy Is there a public document on DASH MPD format for Marlin? Judging from the sample XML provided by @jakubvojacek, it seems like it supporting having multiple mas:MarlinContentId under mas:MarlinContentIds. Can you confirm?
Also, does Marlin support signaling in HLS? Thanks. |
@kqyang, you can access Marlin DRM docs at http://www.marlin-community.com. Registration is needed, but it's quick and free. Answers to your questions can be found in the "Marlin Adaptive Streaming Specification" (both Simple and Full profiles), which can be accessed through: (the website's main menu) Develop > Downloads > Specifications > Marlin Broadband. This specification explains how to use Marlin with DASH and HLS, and describes the format of the PSSH box (Marlin system ID (it differs from those that can be specified in MPD) and PSSH data). |
Thanks @vladimir-kazakov! |
@jakubvojacek @sridhard Marlin is now supported. Let us know if you see any problems. Thanks. |
Thank you, will test 👍 |
|
@kqyang As per the docs below is the command for multiple DRM system:
|
You can add Marlin to
Yes, you can use
Yes. Of course, you need a working Marlin client and Marlin license server.
PSSH generated with If your Widevine license server requires
It is optional. |
@kqyang thanks for explanation. I will test marlin in 2-3 days. Can you please tell me when is the planned next release of shaka packager which will include this feature(marlin)? |
Hi, Below is the entry added for marlin in the mpd file generated by shaka-packager:
As per @nibredy in the above comments
Below is the entry added for marlin in other tools:
@kqyang can you please check this. I think for marlin the keyid should be in lowercase. |
@sridhard Thanks for catching that! Will fix soon. v2.3 which includes this feature will be released at around December 1st 2018. |
This is required by Marlin specification. Also added unittests. Issue #381. Change-Id: Icae1213db4c0915720ed07e6b2bb768fa9156a5c
@kqyang thanks |
Hello,
are you planning to add support for Marlin DRM http://www.marlin-community.com? By my understanding, it should be somewhat similar to playready and widevine.
Thank you
The text was updated successfully, but these errors were encountered: