对于受 Widevine DRM 保护的视频资产,我的 CDN 的许可证服务器以这种形式返回 base64 编码的许可证:
{
"getWidevineLicenseResponse": {
"license": "CAIS6AQ/KNAoQYNEgAOoX [snip] +0UWAE="
}
}
但是我的 Chromecast 自定义广播接收器似乎不喜欢这种格式。我试过只返回许可证字符串本身,我试过将它转换为 ascii 并返回字节缓冲区中的字符,但到目前为止视频无法播放(触发 Shaka 6008 错误说它不能更新媒体密钥)。
有人知道 Chromecast 播放器的 CDM 在播放受 Widevine 保护的 DASH 游戏时所期望的许可证密钥格式吗?
我已经构建了一个自定义 CAF 接收器,我可以播放大多数由我的 CDN 提供的标题,但受 DRM 保护的标题无法协商从我的许可证服务器收到的许可证。
我相信返回的响应是一个包装的 DRM 许可证。获取 getWidevineLicenseResponse.license 值并将其转换为 UInt8Array,Cast Application Framework 应该可以使用它。
就在最近,Web Receiver 在创建 PlaybackConfig 时有新的处理程序变量可以分配给这种情况,称为 licenseHandler。如果服务器无法返回非 JSON 响应,则需要执行此操作。
有关必须完成哪些转换的想法,请访问 https://shaka-player-demo.appspot.com/docs/api/tutorial-license-wrapping.html 在 Wrapping License Response 下谈论 6008错误。