[DRM] [PlayReady] HLS manifest creation fails when using PSSH

Product

Encoding - VOD

Question

Hey folks,

When supplying pssh parameter to CencPlayReady, the subsequent HLS manifest creation fails. Cannot see error details though. Here’s an exemplary encoding: 6b948dff-ef52-4f7e-9675-0abd64b08c2f

When I supply the LaUrl it works, however I have issues playing the content (both DASH and HLS) so I suspect it might have something to do with the pssh.

Cheers,
Łukasz

Hi Łukasz,

Thanks for posting.
From our internal error logs, I see that the encoding you provided failed with the following:

LaUrl of PlayReady CENC DRM must not be empty

So it appears that the re-encoding containing the LaUrl was successful.
We have the following documentation - How to create PlayReady DRM protected content
as well as this example - bitmovin-api-sdk-examples/java/src/main/java/CencDrmContentProtection.java at main · bitmovin/bitmovin-api-sdk-examples · GitHub

Please review this documentation to check if your configuration is correct.

Hi Neil,

Thanks for looking into this.

If I read the documentation of the API correctly, it states that both LaUrl and PSSH are optional and one can use either of them:

"
PlayReady DRM specific configuration options: You can either provide an pssh string or an laUrl in this configuration.

  • pssh: (optional) Base64 encoded String, PSSH payload Example: QWRvYmVhc2Rmc2FkZmFzZg==
  • laUrl: (optional) The License Aquistion URL that shall be used by the player.
    "

Indeed, providing the LaUrl parameter doesn’t create the error, but on the other hand I should be able to provide the PSSH parameter too, as an alternative to LaUrl.

And since there are issues playing the content with PlayReady, I suspected missing of the PSSH could be the cause.

Cheers,
Łukasz

Hi Łukasz,

Thanks for the update. I’ve been informed that the laURL is optional for Dash and Smooth but is required for HLS. Are you able to generate a Dash manifest only by supplying the pssh?

If you provide both parameters for HLS, do you run into any playback errors?

Hey Neil,

  • Dash

    • When generating only DASH and providing only PSSH parameter, the encoding finishes successfully, however the error with playing the manifest using PlayReady (Edge) persist
    • When generating only DASH and providing both LaUrl and PSSH parameters, the following exception is thrown:

      BitmovinApiException: Invalid 'CENC' DRM: In PlayReady object both pssh and LaUrl are set. You must only set ONE of them!

  • HLS

    • When generating only HLS and providing only PSSH parameter, the encoding fails during HLS manifest creation:

      'HLS manifest creation failed

    • When generating only HLS and providing both LaUrl and PSSH parameters, the following exception is thrown:

      BitmovinApiException: Invalid 'CENC' DRM: In PlayReady object both pssh and LaUrl are set. You must only set ONE of them!

and as mentioned before, providing only LaUrl for both DASH and HLS results in successful encoding but error during playout.

Just to add: the error with PlayReady might not be related to PSSH, it was just a guess. Here is the problem as seen by Axinom: