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