Back to blog homepage

MPEG-CENC Widevine DRM in Bitmovin

CENC, DRM and Widevine

CENC DRM protection is now supported by Bitmovin for MPEG-DASH content by using MPEG Common Encryption (MPEG-CENC) and Widevine Modular. MPEG-CENC is an encryption standard that is independent from DRM providers and allows the decryption of the same media file (encoded and encrypted once) using multiple DRM systems (Widevine, PlayReady, etc.) to support various client devices.
Widevine DRM with CENC

Encrypt your Content

The easiest way to encrypt your content is to start with one of our API clients. Currently, encryption is only supported through the API and examples are only implemented for the PHP and Python API clients. We will add comprehensive examples for all other API clients in the next in a few days.

API Client Examples

Let’s look at the example using the PHP API client. The important part here is to set the WidevineDRMConfig object providing your Widevine data. For testing you can also use the Widevine testing keys which we have used in our example below:

$widevineDRMConfig = new WidevineDRMConfig();
$widevineDRMConfig->requestUrl = '';
$widevineDRMConfig->signingKey = '1ae8ccd0e7985cc0b6203a55855a1034afc252980e970ca90e5202689f947ab9';
$widevineDRMConfig->signingIV = 'd58ce954203b7c9a9a9d467f59839249';
$widevineDRMConfig->contentId = '746573745f69645f4639465043304e4f';
$widevineDRMConfig->provider = 'widevine_test';
$widevineDRMConfig->method = DRMEncryptionMethods::MPEG_CENC;
$jobConfig = new JobConfig();
$jobConfig->drmConfig = $widevineDRMConfig;
$job = Job::create($jobConfig);

The parameters of the Widevine configuration have the following meaning:

  • requestUrl: This is your private Widevine license server URL.
  • signingKey: Replace this with the signing key you received from Widevine.
  • signingIV: Replace this with the signing IV you received from Widevine.
  • contentId: This ID is used to link your content to the generated keys in the Widevine key managment system. This is up to you or your licensing provider. You can choose any value you like.
  • provider: Also known as portal, owner or organization. You will get this value from Widevine. For testing you can keep the current setting.
  • method: Currently we only support MPEG-CENC.

Playback your Widevine DRM Encrypted Content in HTML5

To test your content you can go to our Bitmovin Player DRM demo page and paste the link to your MPD from your encoding job. When using the Widevine test keys, the license server URL does not need to be changed. If you are using your own keys you will have to enter your private license server URL (LA URL).
We are happy to help you with MPEG-CENC and Widevine DRM. Just drop us a line on our contact page.

Spread the word!


Martin is responsible for Bitmovin Encoding product strategy, roadmap and development. His team works to enable complex video encoding workflows for global premium media and technology companies like Red Bull Media House or the New York Times. As one of the first employees, Martin led the development of Bitmovin encoding infrastructure, building the world's first commercial massively scalable encoding service, capable of achieving 100x speeds over realtime. Currently, Martin oversees further development of the Bitmovin Encoding solution, including integration of new technologies, like AV1.

Ready for the future of video streaming?

Contact us to see how we can optimize efficiency, decreasing time-to-market for your video needs