0

我正在尝试实现一个流系统,其中 DASH 内容使用多个密钥进行加密:一个用于 SD 和音频再现,一个用于 HD。我想限制对支持更高安全级别的客户端(L1 用于 Widevine,SL3000 用于 PlayReady)的高清再现

根据DASH 实施指南(以及PlayReady 文档等),我的理解是推荐的设置应如下所示:

  • 所有客户端都提供了一个 MPD 清单,包括 SD 和 HD 再现,以及 PSSH 标头,包括两者的内容密钥 ID。
  • 客户端从 DRM 服务器请求这两个许可证。
  • DRM 服务器:
    • 返回两个许可证,为每个许可证指定所需的安全级别;或者:
    • 标识客户端安全级别,并且只返回它应该能够使用的密钥。
  • 在任何一种情况下,客户端都会确定它可以使用哪些密钥,并仅使用它具有有效且可用的许可证密钥的那些再现开始播放,并忽略它没有有效许可证密钥的再现。

Q1:我对最佳实践实施的理解是否正确?

假设是:我试图根据上述内容创建一个概念验证,但它似乎不起作用。我用过:

  • Google Chrome(仅支持 Widevine L3 - 最低安全级别)
  • DASH 参考播放器、JWPlayer 流测试器和 Shaka 播放器演示
  • 使用两个密钥加密的资产
  • 我可以修改的 Widevine 许可证服务器代理

根据我配置 Widevine 代理返回的内容,我看到了以下内容:

  • L3 SD & HD 键:播放成功。
  • L3 上的 SD 键且没有 HD 键:播放失败并出现以下错误:
{
    "hasAppRestrictions": false,
    "missingKeys": [
        "6d76f25cb17f5e16b8eaef6bbf582d8e"
    ],
    "restrictedKeyStatuses": []
}
  • L3 的 SD 键和 L1 的 HD 键:播放失败并出现以下错误:
{
    "hasAppRestrictions": false,
    "missingKeys": [],
    "restrictedKeyStatuses": [
        "internal-error"
    ]
}
  • L3 的两个键,但 HDCP_V2 的 HD 键:播放失败并出现错误:
{
    "hasAppRestrictions": false,
    "missingKeys": [],
    "restrictedKeyStatuses": [
        "output-restricted"
    ]
}

Q2:以上是因为我测试过的播放器没有完全实现DASH规范吗?还是我的设置或假设有问题?

4

0 回答 0