Widevine DRM - Body 请求负载
Widevine DRM - Body request payload
我正在集成一个播放器,该播放器必须在浏览器中播放受 Widevine DRM 保护的流。
我检查了一些 well-known 玩家 :
- DashJs - https://github.com/Dash-Industry-Forum/dash.js/wiki
- ShakaPlayer - https://github.com/google/shaka-player
幸运的是,这些播放器提供了一些使用 Widevine DRM 保护的流媒体样本。
我的问题涉及 XHR 执行以检索 DRM 密钥。在任何 Widevine 安全流中,我可以看到(在 devtools 中)至少 2 个针对许可证服务器的 XHR。
举个例子:https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p.mpd
此流可用于:
- DashJs (https://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html) : "Axinom Test Content (modern) > 1080p with PlayReady and Widevine DRM, single key"
- ShakaPlayer (https://shaka-player-demo.appspot.com/demo/) : "Axinom > Multi-DRM"
在 Chrome (65.0.3325.181) 上,当我加载流时,我可以 2 XHR(让我们省略 pre-flight "OPTIONS" xhr):
- POST
https://drm-widevine-licensing.axtest.net/AcquireLicense
- 请求
X-AxDRM-Message
header 特定于 Axinom
- 请求
Content-Length: 2
- 请求负载等于
\x08\x04
(右键单击 XHR,然后 "Copy as cURL" 并将其粘贴到任何文本编辑器中)
- 回应
Content-Length: 706
- POST
https://drm-widevine-licensing.axtest.net/AcquireLicense
- 请求
X-AxDRM-Message
header 特定于 Axinom
- 请求
Content-Length: 3929
- 具有一定数据量的请求负载
- 回应
Content-Length: 426
我不明白为什么会有 2 个 XHR?
此外,无论选择何种流(在 Widevine DRM 流的情况下),始终发送带有两个字符 \x08\x04
的第一个 XHR,是否有特定含义?
第一个请求确实有特定的含义。但是确切的意思不是public知识。它将要求您与 Widevine 取得联系并获得 CWIP 认证。
第一个请求是 Widevine 服务证书
第二个请求是实际的许可请求
您可以在 https://www.widevine.com/product_news.html
上阅读更多相关信息
参见Update - Chrome 59 and Service Certificates
部分
我正在集成一个播放器,该播放器必须在浏览器中播放受 Widevine DRM 保护的流。
我检查了一些 well-known 玩家 :
- DashJs - https://github.com/Dash-Industry-Forum/dash.js/wiki
- ShakaPlayer - https://github.com/google/shaka-player
幸运的是,这些播放器提供了一些使用 Widevine DRM 保护的流媒体样本。
我的问题涉及 XHR 执行以检索 DRM 密钥。在任何 Widevine 安全流中,我可以看到(在 devtools 中)至少 2 个针对许可证服务器的 XHR。
举个例子:https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p.mpd
此流可用于:
- DashJs (https://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html) : "Axinom Test Content (modern) > 1080p with PlayReady and Widevine DRM, single key"
- ShakaPlayer (https://shaka-player-demo.appspot.com/demo/) : "Axinom > Multi-DRM"
在 Chrome (65.0.3325.181) 上,当我加载流时,我可以 2 XHR(让我们省略 pre-flight "OPTIONS" xhr):
- POST
https://drm-widevine-licensing.axtest.net/AcquireLicense
- 请求
X-AxDRM-Message
header 特定于 Axinom - 请求
Content-Length: 2
- 请求负载等于
\x08\x04
(右键单击 XHR,然后 "Copy as cURL" 并将其粘贴到任何文本编辑器中) - 回应
Content-Length: 706
- 请求
- POST
https://drm-widevine-licensing.axtest.net/AcquireLicense
- 请求
X-AxDRM-Message
header 特定于 Axinom - 请求
Content-Length: 3929
- 具有一定数据量的请求负载
- 回应
Content-Length: 426
- 请求
我不明白为什么会有 2 个 XHR?
此外,无论选择何种流(在 Widevine DRM 流的情况下),始终发送带有两个字符 \x08\x04
的第一个 XHR,是否有特定含义?
第一个请求确实有特定的含义。但是确切的意思不是public知识。它将要求您与 Widevine 取得联系并获得 CWIP 认证。
第一个请求是 Widevine 服务证书
第二个请求是实际的许可请求
您可以在 https://www.widevine.com/product_news.html
上阅读更多相关信息参见Update - Chrome 59 and Service Certificates