【问题标题】:Google Cast CAF Receiver and DRM + Bearer TokenGoogle Cast CAF 接收器和 DRM + Bearer 令牌
【发布时间】:2019-04-11 09:37:17
【问题描述】:

我已经为 Azure 媒体服务器上的一些启用 DRM 的视频创建了一个自定义接收器应用程序,但我必须先获取一个不记名令牌。我这样做了,我已经在发件人请求中作为 customData 发送了。我还创建了一个类来处理 MPEG-DASH 清单并获取许可证获取 URL。这是我拥有的部分。

/** variable declaration, for
 * CastReceiverContext, PlaybackConfig, PlayerManager, etc....
 */

playerManager.setMediaPlaybackInfoHandler((loadRequest, playbackConfig) => {
    if (loadRequest.media.customData && loadRequest.media.customData.bearerToken {
        bearerToken = loadRequest.media.customData.bearerToken;
    }
});

playbackConfig.manifestHandler = (manifestString) => {
    const mh = DashManifestParser(manifestString);
    const licenseUrl = mh.licenseAcquisitionUrl();
    if (licenseUrl) {
        playbackConfig.licenseUrl = licenseUrl;
    }
};

playbackConfig.licenseRequestHandler = (request) => {
    console.log("I AM REQUESTING THE LICENSE NOW. WATCH THIS. NO, REALLY!");
};

如何将其作为 DRM 请求的一部分进行处理?我实际上找不到将不记名令牌注入许可证获取 URL 的正确位置。我了解此时,我需要使用不记名令牌向https://thestacks.keydelivery.eastus.media.azure.net/Widevine/?kid=28ab28d4-ecca-fake-ckid-801ba72c1fe8 发送请求。我假设这是由接收器应用程序自动完成的,但事实并非如此。甚至 playbackConfig.licenseRequestHandler 也从未被调用过。我假设即使我的函数没有完成它应该做的事情,我也会在调试器中看到一个令人讨厌的日志——但什么也没有显示,但在 40 秒左右出现最终错误:{"shakaErrorCode":6006,"shakaErrorData":["Generate request failed."]}

【问题讨论】:

  • 你能解决这个问题吗?

标签: chromecast google-cast bearer-token azure-media-services


【解决方案1】:

这通常取决于播放器框架供应商:是否以及如何提供 API 来插入不记名令牌字符串。在播放器框架内,它将不记名令牌转换为 DRM 许可证或 AES 解密密钥的 HTTPS 请求中的“授权”标头。我们不应该假设每个播放器框架都提供这个并且它有效。例如,以下播放器框架现在提供此功能并且可以正常工作:

  1. Azure 媒体播放器
  2. Akamai 媒体播放器
  3. JWPlayer
  4. ExoPlayer

问候, 威廉

【讨论】:

    【解决方案2】:

    我使用 Akamai 媒体播放器 (AMP) 让 DRM Widevine 在我的 CAF3 自定义接收器上工作

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 2020-09-06
      • 2018-09-14
      • 1970-01-01
      • 2016-12-02
      • 2014-03-02
      • 2018-05-26
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多