<img src="https://img.shields.io/badge/%20-ENTERPRISE-%23B10031" style="float:left"/><br />

JWP provides a simplified approach to protecting your content with industry-standard Digital Rights Management (DRM). By enabling DRM on a property from your JW Player dashboard, the complex aspects of DRM management are managed by JW Player on your behalf:

  • <a href="/platform/docs/protection-studio-drm-with-jw-platform-policy-reference#default-drm-policies" target="_blank">Several configured DRM policies</a>

  • DRM license generation and management for Widevine, PlayReady, and Fairplay DRM solutions

  • License delivery services for content playback on any device

With JW Player managing the technical aspects of DRM, you can focus on the design and implementation of engaging content experiences.

ο»Ώ

If you have not enabled Studio DRM with JW Platform or for a live stream integration, you can use [Studio DRM Standalone](πŸ”—ο»Ώ) with your current streaming and hosting solution.

<br /> <hr />

## Compatibility

<br />

### Desktop

The two most recent stable versions of the following listed browsers are supported.

<table> <thead> <tr> <th> HTML5 Browsers </th> <th> FairPlay </th> <th> PlayReady </th> <th> Widevine </th> </tr> </thead> <tbody> <tr> <td width="55%"> <strong>Chrome</strong> </td> <td width="15%"> </td> <td width="15%"> </td> <td width="15%"> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Firefox</strong> </td> <td> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Internet Explorer 11</strong><br />(Windows <sup>8.1+</sup>) </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> </td> </tr> <tr> <td> <strong>Microsoft Edge</strong><br />(Windows <sup>10+</sup>) </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Opera</strong> </td> <td> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Safari</strong> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> </td> <td> </td> </tr> </tbody> </table>

<br />

### Mobile Phones and Tablets

<table> <thead> <tr> <th> Browsers & Phones </th> <th> FairPlay </th> <th> PlayReady </th> <th> Widevine </th> </tr> </thead> <tbody> <tr> <td width="55%"> <strong>Android</strong> <sup>5+</sup><br />(native) </td> <td width="15%"> </td> <td width="15%"> </td> <td width="15%"> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Chrome (Android)</strong><br /><em>3 most recent stable versions</em> </td> <td> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>iOS/iPadOS</strong> <sup>12+</sup><br />(native) </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> </td> <td> </td> </tr> <tr> <td> <strong>Safari (iOS)</strong><br /><em>2 most recent stable versions</em> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> </td> <td> </td> </tr> <tr> <td> <strong>Windows Phone</strong> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> </td> </tr> </tbody> </table>

<br />

### OTT

<table> <thead> <tr> <th> Device </th> <th> FairPlay </th> <th> PlayReady </th> <th> Widevine </th> </tr> </thead> <tbody> <tr> <td width="55%"> <strong>Android TV</strong> </td> <td width="15%"> </td> <td width="15%"> <div align="center"><strong>&check;</strong></div> </td> <td width="15%"> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Apple TV</strong> <sup>12.0+</sup> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> </td> <td> </td> </tr> <tr> <td> <strong>Chromecast</strong> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Fire TV</strong> <sup>6.0+</sup> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Roku</strong><br /><em>2 most recent versions</em> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Samsung Tizen</strong><br />(Models 2017+) </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> <tr> <td> <strong>Smart TV Alliance</strong> (webOS <sup>6.0+</sup>)<br /><em>LG, Panasonic, Philips, Toshiba</em> </td> <td> </td> <td> <div align="center"><strong>&check;</strong></div> </td> <td> <div align="center"><strong>&check;</strong></div> </td> </tr> </tbody> </table>

<br /> <hr />

## High-Level Workflow Overview

The following high-level workflow illustrates how to request and play DRM content.

ο»Ώ

ο»Ώ

**High-Level Workflow Explained**

  1. Create a new property in your JW Player account and enable Studio DRM on the property. Four predefined DRM policies (see the section later in this guide) are created in the property, and content URL signing is automatically enabled on the property.

  2. Upload content to the new Studio DRM-enabled property.

  3. The content is transcoded, and a unique mediaID and other metadata are created as with any media uploaded to JW Platform.<br /><br />

  4. Your application makes a signed API request to the <a href="https://developer.jwplayer.com/jwplayer/reference#media" target="_blank">JW Delivery API</a> to get a single-item playlist that contains Studio DRM media URLs and license acquisition URLs (LA\_URL) for a media ID.<br /><br /><em><strong>NOTE</strong>: All DRM API requests **must** use HTTPS. DRM is not supported over HTTP connections.</em><br /><br /><br />

  5. Pass the media URL and LA_URL (plus certificate URL if using FairPlay) to your player configuration.<br /><br /><em><strong>NOTE</strong>: If you are using a JW Player HTML5 player in your application, the whole response can be passed directly to the player's setup configuration. For other players, consult the player's DRM configuration documentation.</em><br /><br /><br />

  6. When playback is initiated, the player sends an encrypted DRM license request to the JW Delivery API.

  7. The JW Delivery API returns the DRM license to the player.

  8. If the device satisfies the policy restrictions in the license, playback begins. If the device does not satisfy the restrictions, the player reports <a href="/players/docs/jw8-player-errors-reference" target="_blank">an error</a>.

<br />


ο»Ώ

## Requirements

### General

<table> <thead> <tr> <th> Item </th> <th> Notes </th> </tr> </thead> <tbody> <tr> <td width="40%"> <strong>DRM entitlement</strong> </td> <td width="60"> Contact your JWP representative for more information. </td> </tr> </tbody> </table>

<br /><br />

### FairPlay

If you want to use the Apple FairPlay DRM, you must get a <a href="https://developer.apple.com/streaming/fps/" target="_blank">FairPlay Streaming Deployment package from Apple</a> and <a href="/platform/docs/protection-studio-drm-get-started#add-fairplay-credentials-to-a-property" target="_blank">upload the credentials</a> to each DRM-enabled property in your JW dashboard.

ο»Ώ

You can use the same FairPlay Deployment package on all your properties, but you must upload the credentials (ASK and .p12 keystore file) to **each property**, explicitly.

<br />

<table> <thead> <tr> <th> Item </th> <th> Notes </th> </tr> </thead> <tbody> <tr> <td width="40%"> <strong><a href="https://developer.apple.com/streaming/fps/" target="_blank">FairPlay Streaming Deployment package</a></strong> </td> <td width="60"> Set of resources and tools that help content providers implement FairPlay DRM protection for their streaming services </td> </tr> <tr> <td> <strong>ASK</strong> </td> <td> App secret key<br /><br />This is part of the FairPlay Streaming Deployment package </td> </tr> <tr> <td> <strong>Encoded *.p12 keystore file</strong> </td> <td> File containing your FPS Deployment certificate and private key<br /><br />This entire file must be password-protected, <strong>not just the private key</strong>. <a href="/platform/docs/protection-studio-drm-create-a-fairplay-p12-file">Create a FairPlay .p12 file</a> provides guidance on this topic.</td> </tr> </tbody> </table>

<br />