我正在集成一个播放器,该播放器必须在浏览器中播放受 Widevine DRM 保护的流。
我检查了一些知名玩家:
- 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 测试内容(现代)> 1080p,带有 PlayReady 和 Widevine DRM,单键"
- ShakaPlayer(https://shaka-player-demo.appspot.com/demo/):“Axinom > Multi-DRM”
在 Chrome (65.0.3325.181) 上,当我加载流时,我可以 2 XHR(让我们省略飞行前的“OPTIONS”xhr):
- 邮政
https://drm-widevine-licensing.axtest.net/AcquireLicense
X-AxDRM-Message
特定于 Axinom 的请求标头- 要求
Content-Length: 2
- 请求有效负载等于
\x08\x04
(右键单击 XHR,然后“复制为 cURL”并将其粘贴到任何文本编辑器中) - 回复
Content-Length: 706
- 邮政
https://drm-widevine-licensing.axtest.net/AcquireLicense
X-AxDRM-Message
特定于 Axinom 的请求标头- 要求
Content-Length: 3929
- 具有一定数据量的请求有效负载
- 回复
Content-Length: 426
我不明白为什么有 2 个 XHR?\x08\x04
此外,无论选择哪种流(在 Widevine DRM 流的情况下),总是发送带有两个字符的第一个 XHR ,是否有特定含义?