Overview

Widevine DRM is Google’s content protection system for premium media. It is used by major partners around the world such as Google Play, YouTube, Netflix, Disney+, Amazon Prime Video, HBO Max, Hulu, Peacock, Discovery+, Paramount+ and many more. The focus of Widevine is to provide the best experience for viewing premium content over digital distribution.

Widevine DRM adopts the following standards:

Supported Platforms

The Widevine client is natively embedded into a device platform unless otherwise noted.

Device or Platform Supported ?
Android (Mobile, TV, Automotive) Yes
Android Open Source (AOSP) Yes
Apple iOS Yes [1]
Apple TV (tvOS) -
Chromecast (Cast) Yes
Google Home and Nest devices Yes
ChromeOS (Chromebook) Yes
Chrome Browser (Windows, Mac OS X, Linux) Yes
Chromium Browser Yes
Chromium Embedded Framework (CEF) / Electron Yes
Firefox Browser Yes
Edge Browser Yes
Opera (Browser and Embedded devices) Yes
Safari Browser (Desktop) -
Roku devices Yes
Amazon Echo devices Yes
Amazon Fire OS devices Yes
Amazon Fire TV devices Yes
Facebook Portal devices Yes
Nintendo Switch -
Sony Playstation Yes
Microsoft Xbox -
Smart TV and Blu-ray players (Tizen, WebOS) Yes

drawing

Supported Encryption Schemes

The table below provides a mapping of encryption schemes across Widevine integrated platforms.

Platform cenc cens cbc1 cbcs
Android 4.4 - 6.x (including Android TV) Y - - -
Android 7.x and later (including Android TV) Y - - Y
Chromecast (Cast) Y - Y Y
Google Home Y - - -
Smart TV and Blu-ray players Y - - Y
Widevine iOS Y - - Y
Chrome browser (desktop) and ChromeOS Y - - Y
Chrome browser (mobile) Y - - Y
Mozilla Firefox Y - - Y
Opera Y - - Y
NexPlayer SDK Y - - Y

Ecosystem

drawing

The diagram above illustrates the available Widevine components within the DRM ecosystem.

The Provisioning, Keybox and OEMCrypto components are specific to the device integration process. If you are interested in integrating Widevine into a device, please contact us.

A license request from the originating client device will be received by a partner-operated proxy mechanism (over HTTPS). This proxy mechanism will validate the request and append business rules before sending the payload to be fulfilled by the Widevine License Service.

The Widevine client device does not communicate directly with the Widevine License Service, under any circumstances.

Issuing Widevine Licenses

Widevine provides 2 methods to issue licenses to clients:

  • Cloud License Service
    • Globally-accessible service with no access or transaction fees.
    • Access is provided using per-organization credentials to Widevine licensees.
  • License Server SDK
    • Designed for hosting your own license service.

Using the Widevine Cloud License Service

The Cloud License Services has 2 environments - Test and Production. Access is provided with unique per-organization credentials to Widevine licensees.

The Cloud License Service provides 2 endpoints for:

  • Retrieving content keys for the purpose of encrypting content.
    • Content keys requested in this manner are stored by the Widevine Cloud License Service.
  • Issuing a license
    • Fulfills the license request generated by a Widevine client device.

All license requests from a client device must be processed by a license proxy mechanism.

  • Widevine provides a Proxy SDK to communicate with the Cloud License Service.
  • The license proxy validates and verifies the incoming client request and determines which business rules to apply.
  • Business rules are appended to the originating license request from the device and sent to the license service for fulfillment.
  • Once a license is generated, the contents of the license are no longer modifiable and are individualized to the requesting device.

Shaka Packager

The Shaka Packager (formerly known as the eDASH-Packager) from Widevine is an open-source reference implementation on how to generate DASH-compatible MP4 formats, perform encryption using a Widevine PSSH and create a DASH manifest. Please visit the github page to file bugs and feature requests.

Player - Android

The Google-maintained open-sourced ExoPlayer project is the recommended reference player library that demonstrates playback of Widevine CENC media. Building ExoPlayer, by default, will generate a demo app which contains a preset list of known-good CENC content from the Widevine team.

Player - Browser

The Shaka Player open-source project is Widevine’s initiative to provide a comprehensive cross-browser Javascript library framework to support CENC HTML5 playback using a CDM (preferably Widevine). Outside of github, a Shaka Player Users discussion group is available and monitored by the Shaka Player developer team from Widevine.

The Shaka Player offers:

  • Fully featured open source player framework
  • Configurable and customizable UI
  • Cross-platform and cross-browser capable
  • Support for HTML5, MSE, EME & DASH
  • Multi-DRM options