Microsoft PlayReady DRM

MICROSOFT_PLAYREADY LogoMicrosoft released PlayReady in 2008 and it’s one of major DRM systems out in the market with broad device support, sophisticated features and has been used at scale already by many events such as the Olympics in Sochi, Russia. The Bitmovin encoding service supports PlayReady encryption and packaging with MPEG-CENC. The Bitmovin player plays PlayReady encrypted videos on platforms that support the PlayReady DRM natively in HTML5 without plugins.

Encoding & Packaging

PlayReady encoding and packaging can be done through our REST API or one of our API Clients. We provide examples in different languages, e.g., PHP. You just need to add the PlayReadyDRMConfig to the encoding job as shown in the following PHP example:

$playreadyDRMConfig = new PlayReadyDRMConfig();
$playreadyDRMConfig->key = 'YOUR_KEY';
$playreadyDRMConfig->keySeed = 'YOUR_KEY_SEED';
$playreadyDRMConfig->kid = 'YOUR_KEY_ID';
$playreadyDRMConfig->laUrl = 'YOUR_LICENSE_SERVER_URL';
$playreadyDRMConfig->method =  DRMEncryptionMethods::MPEG_CENC;
/* Create Encoding Job */
$jobConfig = new JobConfig();
$jobConfig->manifestTypes[] = ManifestTypes::MPD;
$jobConfig->speed = JobSpeedTypes::STANDARD;
$jobConfig->drmConfig = $playreadyDRMConfig;
PHP PlayReady Encryption Example

The parameters of the PlayReady configuration have the following meaning:

  • key: You either have to provide the content encryption key directly or provide the keySeed
  • keySeed: By providing the keySeed (base64 encoded) with the kid a content encryption key will be generated for you
  • kid: This is the unique identifier for your content key in hex format
  • laUrl: This is the URL to the PlayReady license server
  • method: We only support MPEG-CENC


The Bitmovin Adaptive Streaming Player supports PlayReady DRM without plugins in HTML5. We are utilizing the Encrypted Media Extensions (EME) to enable PlayReady. Beside that we also support advanced configuration options for PlayReady DRM. Typically license servers need some additional information provided by the player. This can be configured with the Bitmovin player through the player configuration options.

For example custom data can be added to the license acquisition request, credentials can be added, custom HTTP headers can be added and you can configure the license retries if a license request was not successful. An example PlayReady configuration for the Bitmovin Player is shown in the following. The drm object is part of the player configuration.

drm: {
    playready               : {
      LA_URL                : '',
      customData            : 'myCustomData'
Back to Top
Simple Share Buttons