The following tutorial will show you how to create a video distribution platform, ready to target multiple devices and browsers with a DRM system compatible with Apple’s FairPlay, Google’s Widevine, Microsoft’s PlayReady and the open-standards-based Marlin DRM.
This solution is an end-to-end solution that integrates the ExpressPlay Multi-DRM system with the Bitmovin Cloud Encoding system. By following this tutorial and using the supporting documents that you will find linked below, you can create a video on demand service with the same speed and quality as Netflix.
Multi-DRM System – High Level Architecture
- Use the Bitmovin Cloud Encoding Service to encode the content
- The client (HTML5 app or native app) requests the content from the service
- The service uses the ExpressPlay REST API to request a token for the DRM support by the client
- The token is passed back to the device
- Playback and / or download starts
Setup Bitmovin Cloud Encoding with DRM
The following code example shows the configuration required to encrypt your adaptive stream to use Playready, Widevine and Fairplay. You are not required to include all the DRM schemas. For example, you can leave out Fairplay if it is not required.
Create the combined Playready and Widevine config
Please see this tutorial, which explains how to create a combined Widevine and PlayReady DRM protected encoding. The following parameters are required in order to create a successful DRM protected encoding using the ExpressPlay Multi DRM service.articles/115001080133
$cencDrmKey = "0123456789abcdef0123456789abcdef"; $cencDrmKid = "0123456789abcdef0123456789abcdef"; $widevinePssh = "CAESEAABAgMEBQYHCAkKCwwNDg8aCmludGVydHJ1c3QiASo="; $playreadyLaUrl = "https://pr.test.expressplay.com/playready/RightsManager.asmx";
The parameters of the configuration have the following meaning:
- cencDrmKey: This is the common content encryption key in hex format of your choice
- cencDrmKid: This is the common unique identifier for your content key in hex format of your choice
- widevinePssh: This is the value for the Widevine pssh box, which is stays the same for the test and production environment offered by ExpressPlay
- playreadyLaUrl: This is the URL to the PlayReady license server. This example is using the LaUrl of the test environment offered by ExpressPlay. Please replace it with the production-use LaUrl, which is available in your expressplay backend at https://admin.expressplay.com
Create the Fairplay DRM config
Please see this tutorial, which explains how to create a Fairplay DRM protected encoding. The following parameters are required in order to create a successful DRM protected encoding using the ExpressPlay Multi DRM service.
$fairPlayKey = "0123456789abcdef0123456789abcdef"; $fairPlayIV = "0123456789abcdef0123456789abcdef"; $fairPlayUri = "skd://expressplay_token";
The parameters of the Fairplay DRM configuration have the following meaning:
- fairPlayKey: You need to provide a key that will be used to encrypt the content (16 byte; 32 hexadecimal characters)
- fairPlayIV: The initialization vector is optional. If it is not provided we will generate one for you. (16 byte; 32 hexadecimal characters)
- fairPlayUri: If provided, this URI will be used for license acquisition. Using Expressplay, you have to provide "skd://expressplay_token" as URI
Each tutorial provides a full example, which you can use in order to create your own DRM protected content using ExpressPlay MultiDRM Services.