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:
|
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:
|
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:
|
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:
|
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 |