概览
Widevine DRM 是 Google 针对优质媒体内容的保护系统。Google Play、YouTube、Netflix、Disney+、Amazon Prime Video、HBO Max、Hulu、Peacock、Discovery+、Paramount+ 等全球主要合作伙伴都在使用此应用。 Widevine 的重点是通过数字分发方式提供最佳的优质内容观看体验。
Widevine 数字版权管理采用以下标准:
- Encrypted Media Extensions(加密媒体扩展)- 一种 W3C 规范。
- 常见加密
- ISO/IEC 23001-7 - ISO 基本媒体文件格式文件中的常见加密
- ISO/IEC 23001-9 - MPEG-2 传输流的通用加密
支持的平台
除非另有说明,否则 Widevine 客户端会原生嵌入到设备平台中。
设备或平台 | 是否受支持? |
Android(移动设备、TV、汽车) | 是 |
Android 开源 (AOSP) | 是 |
Apple iOS | 是 [1] |
Apple TV (tvOS) | - |
Chromecast(投放) | 是 |
Google Home 和 Nest 设备 | 是 |
ChromeOS (Chromebook) | 是 |
Chrome 浏览器(Windows、Mac OS X、Linux) | 是 |
Chromium 浏览器 | 是 |
Chromium Embedded Framework (CEF) / Electron | 是 |
Firefox 浏览器 | 是 |
Edge 浏览器 | 是 |
Opera(浏览器和嵌入式设备) | 是 |
Safari 浏览器(桌面版) | - |
Roku 设备 | 是 |
Amazon Echo 设备 | 是 |
Amazon Fire OS 设备 | 是 |
Amazon Fire TV 设备 | 是 |
Facebook Portal 设备 | 是 |
任天堂 Switch | - |
索尼 Playstation | 是 |
Microsoft Xbox | - |
智能电视和蓝光播放器(Tizen、WebOS) | 是 |
支持的加密方案
下表提供了 Widevine 集成平台的加密方案对应关系。
平台 | cenc | 审查 | cbc1 | cbcs |
Android 4.4 - 6.x(包括 Android TV) | 是 | - | - | - |
Android 7.x 及更高版本(包括 Android TV) | 是 | - | - | 是 |
Chromecast(投屏) | 是 | - | 是 | 是 |
Google Home | 是 | - | - | - |
智能电视和蓝光播放器 | 是 | - | - | 是 |
Widevine iOS | 是 | - | - | 是 |
Chrome 浏览器(桌面设备)和 ChromeOS | 是 | - | - | 是 |
Chrome 浏览器(移动版) | 是 | - | - | 是 |
Mozilla Firefox | 是 | - | - | 是 |
Opera | 是 | - | - | 是 |
NexPlayer SDK | 是 | - | - | 是 |
生态系统
上图展示了 DRM 生态系统中可用的 Widevine 组件。
配置、密钥箱和 OEMCrypto 组件特定于设备集成过程。如果您有兴趣将 Widevine 集成到设备中,请与我们联系。
来自发起客户端设备的许可请求将由合作伙伴运营的代理机制(通过 HTTPS)接收。此代理机制会先验证请求并附加业务规则,然后再发送要由 Widevine 许可服务执行的载荷。
在任何情况下,Widevine 客户端设备都不会直接与 Widevine 许可服务通信。
颁发 Widevine 许可
Widevine 提供了 2 种向客户颁发许可的方法:
- Cloud License Service
- 可全球访问的服务,无访问费用或交易费用。
- 系统会使用每个组织的凭据向 Widevine 许可证持有者提供访问权限。
- License Server SDK
- 专为托管您自己的许可服务而设计。
使用 Widevine Cloud License Service
Cloud License Services 有 2 个环境:测试环境和生产环境。系统会为 Widevine 许可证持有者提供每个组织的专属凭据,以便他们访问该平台。
Cloud License Service 提供了 2 个端点,分别用于:
- 检索内容密钥以加密内容。
- 以这种方式请求的内容密钥由 Widevine Cloud License Service 存储。
- 颁发许可
- 满足 Widevine 客户端设备生成的许可请求。
来自客户端设备的所有许可请求都必须由许可代理机制处理。
- Widevine 提供了一个 Proxy SDK 来与 Cloud License Service 通信。
- 许可代理会验证传入的客户端请求,并确定要应用哪些业务规则。
- 业务规则会附加到来自设备的原始许可请求,并发送到许可服务以进行执行。
- 许可生成后,您便无法再修改许可内容,而且许可内容会因发出请求的设备而异。
Shaka Packager
Widevine 的 Shaka Packager(以前称为 eDASH-Packager)是一个开源参考实现,介绍了如何生成与 DASH 兼容的 MP4 格式、使用 Widevine PSSH 执行加密以及创建 DASH 清单。请访问 GitHub 页面提交 bug 和功能请求。
播放器 - Android
由 Google 维护的开源 ExoPlayer 项目是推荐的参考播放器库,可演示 Widevine CENC 媒体的播放。默认情况下,构建 ExoPlayer 会生成一个演示版应用,其中包含 Widevine 团队提供的已知良好 CENC 内容的预设列表。
播放器 - 浏览器
Shaka Player 开源项目是 Widevine 的一项计划,旨在提供全面的跨浏览器 JavaScript 库框架,以支持使用 CDM(最好是 Widevine)播放 CENC HTML5 内容。除了 GitHub 之外,我们还提供了 Shaka Player 用户讨论群组,由 Widevine 的 Shaka Player 开发者团队进行监控。
Shaka Player 提供以下功能:
- 功能齐全的开源播放器框架
- 可配置和自定义的界面
- 支持跨平台和跨浏览器
- 支持 HTML5、MSE、EME 和 DASH
- 多 DRM 选项