You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已获取ClearKey参数,Shaka Player播放加密MPD失败求助

排查Shaka Player ClearKey解密错误的实操步骤

1. 严格校验密钥与KID格式

ClearKey对格式要求苛刻,Kodi/Tivimate的兼容性更强,你要先确认:

  • k(密钥)和kid必须是base64url编码:把普通base64里的+换成-、/换成_,同时去掉末尾所有的填充字符=
  • 禁止直接使用十六进制字符串,必须转成二进制再转base64url格式

2. 检查DRM配置结构是否正确

Shaka的ClearKey配置必须是键值对严格匹配的对象,键是kid的base64url值,值是k的base64url值,示例代码如下:

player.configure({
  drm: {
    clearKeys: {
      "你的kid-base64url值": "你的k-base64url值"
    }
  }
});

注意:所有值必须是纯字符串,不能带多余引号、空格或其他格式转换。

3. 调整代码执行顺序

很多新手会先加载MPD再配置密钥,这会导致Shaka获取加密信息时无密钥可用,正确顺序是:

  1. 初始化Shaka Player实例
  2. 配置ClearKey密钥
  3. 调用player.load(mpdUrl)

完整示例代码:

<!DOCTYPE html>
<html>
<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/shaka-player/4.7.1/shaka-player.compiled.js"></script>
</head>
<body>
  <video id="video" controls width="640"></video>
  <script>
    document.addEventListener('DOMContentLoaded', async () => {
      const video = document.getElementById('video');
      const player = new shaka.Player(video);

      // 先配置DRM密钥,再加载流
      player.configure({
        drm: {
          clearKeys: {
            "abcdef1234567890abcdef1234567890": "abcdef1234567890abcdef1234567890"
          }
        }
      });

      try {
        await player.load('你的MPD文件URL');
        console.log('播放初始化成功');
      } catch (e) {
        console.error('加载失败:', e);
      }
    });
  </script>
</body>
</html>

4. 核对MPD中的加密信息

打开MPD文件,找到<ContentProtection>节点,解析其中的PSSH盒子提取KID,和你手里的KID做完全匹配(包括大小写、格式):

return (<ContentProtection schemeIdUri="urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e" value="ClearKey">
  <cenc:pssh>...</cenc:pssh>
</ContentProtection>
)

如果MPD里的KID和你使用的不一致,直接会导致解密失败。

5. 排查环境与兼容性问题

  • 必须使用支持EME(加密媒体扩展)的现代浏览器(Chrome、Firefox、Edge均可,IE完全不支持)
  • 禁止用file://协议直接打开本地HTML文件,部分浏览器会限制DRM功能,建议用本地服务器(比如python -m http.server)运行测试

6. 开启调试日志定位细节

启用Shaka的调试日志,能获取更具体的错误原因(比如“找不到对应KID的密钥”“密钥格式无效”等):

shaka.log.setLevel(shaka.log.Level.DEBUG);

根据控制台输出的日志,针对性调整配置或格式。


内容的提问来源于stack exchange,提问作者Piyush Adlakha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:03:27