<img src="https://img.shields.io/badge/%20-ENTERPRISE-%23B10031" style="float:left"/><br /><img src="https://img.shields.io/badge/Android-V4-009727?logo=android" 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 JWP dashboard, you allow JWP to manage the complexities of digital rights on your behalf:

  • Several configured DRM Policies

  • DRM license generation and management for Widevine

  • License delivery services for content playback on any device

<br />

With JWP managing the technical aspects of DRM, you can focus on the design and implementation of engaging content experiences. For more information about the DRM workflow, please refer to the [High-Level Workflow Overview](πŸ”—ο»Ώ).

ο»Ώ

For the following use cases, use [Studio DRM Standalone](πŸ”—ο»Ώ) with your current streaming and hosting solution:

  • Choosing not to enable Studio DRM with JW Platform

  • Implementing live stream integrations

<br /> <hr />

## Compatibility

  • The Android SDK supports DRM technology for <strong>Android</strong> <sup>5+</sup> (native) using Widevine.

<br /> <hr />

## Requirements

<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> <tr> <td> <strong>DRM-enabled property</strong> </td> <td> See: <a href="/platform/docs/protection-studio-drm-get-started#enable-a-property" target="_blank">Enable a property</a></td> </tr> <tr> <td> <strong>Player in an Activity</strong> </td> <td> See: <a href="/players/docs/android-set-up-a-player" target="_blank">Set up a player (Android)</a></td> </tr> </tbody> </table>

<br /> <hr />

## Implementation

Use the following steps to set up DRM playback in your Android app:

  1. Generate a [signed URL for DRM playback.](πŸ”—ο»Ώ)ο»Ώ

  2. Make a `GET` call with the signed URL. The signed content URL returns a JSON object of the media metadata.

    ο»Ώ

    Both the media URL and its associated LAURLs are valid for only **10 minutes from when they are requested**.

    ο»Ώ

    <br />

    ο»Ώ

<br />

  1. From the signed content URL response, extract the file title (`title`), file URL (`playlist[].sources[].file`), and license URL (`playlist[].sources[].drm.widevine.url`).

    ο»Ώ

    The ordering of items within `playlist[].sources[]` is not static. Therefore, do not use a defined index (`playlist[].sources[0]`) as part of your extraction process.

<br />

  1. Define the `title`, `file`, and `mediaDrmCallback()` with the extracted title, file URL, and license URL.

    ο»Ώ

    ο»Ώ

    You may see a "Cannot resolve symbol" error on `new WidevineMediaDrmCallback();`. This error will be resolved once you have completed the following steps.

<br />

  1. Add a **Util.java** to your project. The `MediaDrmCallback` class employs this utility to download data.

    ο»Ώ

<br />

<!-- Removes the automatic page-to-page navigation at the bottom of the page -->

<style> .rm-Pagination { display: none; } </style>