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:
- Encrypted Media Extensions - a W3C specification.
- Common Encryption
- ISO/IEC 23001-7 - Common encryption in ISO base media file format files
- ISO/IEC 23001-9 - Common encryption of MPEG-2 transport streams
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 |
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
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