DRM


๐Ÿšง

If you are utilizing JWPโ€™s Studio DRM, please reference Apply Studio DRM with JW Platform.


Configuration options related to DRM for MPEG DASH (Playready, Widevine, Clearkey) and HLS streams (Fairplay).

JW Player includes the ability to add DRM to a specific playlist source. Using this method will allow your browser to choose the correct DRM method when multiple DRM types are configured. We highly suggest updating any configurations to use this new method.

๐Ÿ“˜

HTTPS is required for all DRM-protected content.

For more information regarding DRM, and for examples, please view our support article.



drm.playready

Playready DRM is specific to Internet Explorer 11 and Edge on Windows 8.1 or higher operating systems.

Property Description
url* string URL of the PlayReady license server
audioRobustness < 8.18.0+ string Sets the robustness level for audio

Possible values:
  • HW_SECURE_ALL
  • HW_SECURE_CRYPTO
  • HW_SECURE_DECODE
  • SW_SECURE_CRYPTO
  • SW_SECURE_DECODE
headers array Specifies the custom http headers to send to your playready license server

See headers for more information
licenseRequestFilter function Expects a function which takes a single request argument. License request filters intercept license requests before licenseRequestHeaders are added.
licenseResponseFilter function Expects a function which takes a single response argument. License response filters intercept license responses before updating the session with the license key.
videoRobustness < 8.18.0+ string Sets the robustness level for video

Possible values:
  • HW_SECURE_ALL
  • HW_SECURE_CRYPTO
  • HW_SECURE_DECODE
  • SW_SECURE_CRYPTO
  • SW_SECURE_DECODE


drm.widevine

Widevine DRM is specific to Google Chrome on non-iOS devices. Widevine will also function on Firefox browsers for desktop systems.

Property Description
url* string URL of the WideVine license server
audioRobustness < 8.18.0+ string Sets the robustness level for audio

Possible values:
  • HW_SECURE_ALL
  • HW_SECURE_CRYPTO
  • HW_SECURE_DECODE
  • SW_SECURE_CRYPTO
  • SW_SECURE_DECODE
headers array Specifies the custom http headers to send to your Widevine license server requests

See headers for more information.
licenseRequestFilter function Expects a function which takes a single request argument. License request filters intercept license requests before licenseRequestHeaders are added.
licenseResponseFilter function Expects a function which takes a single response argument. License response filters intercept license responses before updating the session with the license key.
serverCertificateUrl string URL of the WideVine service certificate
videoRobustness < 8.18.0+ string Sets the robustness level for video

Possible values:
  • HW_SECURE_ALL
  • HW_SECURE_CRYPTO
  • HW_SECURE_DECODE
  • SW_SECURE_CRYPTO
  • SW_SECURE_DECODE


drm.[widevine/playready].headers

Adding customized HTTP header data to license requests is possible with the "headers" configuration. This replaces the static "customData" configuration option in both widevine and playready scenarios. It is also possible to add multiple custom http headers by including multiple objects in the "headers" array.

DRM can be configured in the following way:

"drm": {
  "playready": {
    "url": "mydrmserver.com",
    "headers": [{
      "name": "customData",
      "value": "hereismycustomdatastring"
    }]
  }
}

In previous versions, adding "customData" would look like the following:

"drm": {
  "playready": {
    "url": "mydrmserver.com",
    "customData": "hereismycustomdatastring"
  }
}
Property Description
name string Name of the http header that will be included
value string Value of the http header that will be included


drm.fairplay

JW Player includes configuration options for custom Fairplay integrations. For more information and examples regarding custom Fairplay DRM integrations, please view our support article.

Property Description
certificateUrl* string The path to the certificate which is part of the session data used to initialize the keySession.certificateUrl
processSpcUrl* function | string The path to the license server (server playback context) which provides the ckc. Expects a direct url to the server. If the url needs to be constructed dynamically, a custom function can be passed to this configuration option which returns the URL
extractContentId function Expects a function that receives the initData uri (converted to a string) from the needkey event, and returns the contentId which is part of the session data used to initialize the keySession
extractKey function Expects a function that receives the ckc returned by the license server and returns the key used to update the active key session. If the key can only be extracted asynchronously (for example reading bytes from a โ€˜blobโ€™ response), this function can return a promise
licenseRequestFilter function Expects a function which takes a single request argument. License request filters intercept license requests before licenseRequestHeaders are added.
licenseRequestHeaders array Expects an Array of Objects containing header name and value properties to be included in the request to the license server
licenseRequestMessage function Expects a function that receives the license key message and returns the message to be sent to the license server. With the default licenseResponseType of ArrayBuffer this function passes through keymessage event message property without any changes
licenseResponseFilter function Expects a function which takes a single response argument. License response filters intercept license responses before updating the session with the license key.
licenseResponseType string Specifies the data type returned by the XHR request to the license server. The default value is arraybuffer. Other options include blob, json, and text. This option impacts how licenseRequestMessage will be processed


drm.clearkey

A basic form of DRM that lists a decryption key inside of your player configuration. This is the least secure form of DRM, though it is the simplest to implement across browsers. There are no additional server resources required to decrypt content with this method. Clearkey is supported in both Chrome and Firefox browsers.

Property Description
key* string Key required to decrypt DRM content
keyId* string key ID specified in the mpd's default_KID value