Tycho
Tycho

Reputation: 101

How to Implement a Custom Widevine License Server and Integrate with Shaka Packager?

I want to allow video players such as PRESTOplay, Bitmovin, TheoPlayer, ExoPlayer, and Shaka Player to play my own Widevine DRM-protected content.

My Setup: I plan to use Shaka Packager for packaging the content and creating the DASH manifest. I also want to use my own key server instead of relying on other DRM providers. Understanding the Packaging Process: I understand the basics of encrypting content using Shaka Packager. Specifically, I need to provide the signer, aes_signing_key, aes_signing_iv,key_server_url.

Once provided, Shaka Packager generates a response containing:

What I Don't Understand: The Player License Requests Each video player (e.g., Bitmovin, ExoPlayer, Shaka Player) allows specifying a custom license server URL.

When a player requests a license, it sends two requests to the license server. The request payloads are described in this Stack Overflow question (Widevine DRM - Body request payload). My Questions:

  1. What is inside the Widevine request payload? The first request contains a binary payload like 0x080x04.
  2. What should my Custom License Server return? How should I structure my first response (to the 0x080x04 request)? What should I return in the second response? What information does this payload contain? Can I decode it to understand its contents? How do I integrate the encryption metadata obtained from Shaka Packager into my license server’s responses?
  3. Do I need Widevine DRM Server SDK or Widevine Cloud License Server? Does my custom license server need to call Google's Widevine DRM Server SDK or Widevine Cloud License Server? If yes, do I need to become a Certified Widevine Implementation Partner (CWIP) (https://www.widevine.com/training) or a Widevine Provider (https://www.widevine.com/solutions/widevine-providers) to gain access? If no, how do I know what the responses should be?

Any help, including documentation references, example implementations, or explanations, would be greatly appreciated!

Upvotes: 0

Views: 45

Answers (0)

Related Questions