我已经为Azure Media Server上的一些启用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
被调用。我假设即使我的函数无法完成应有的工作,我也会在调试器中看到令人讨厌的日志-但什么都没有出现,但最终错误出现在{"shakaErrorCode":6006,"shakaErrorData":["Generate request failed."]}
答案 0 :(得分:0)
这通常取决于播放器框架供应商:是否以及如何提供API来插入承载令牌字符串。在播放器框架内部,它将承载令牌转换为DRM许可证或AES解密密钥的HTTPS请求中的“授权”标头。我们不应该假定每个播放器框架都可以提供此功能并且可以正常工作。例如,以下播放器框架现在可以提供此功能并起作用:
关于, 威廉
答案 1 :(得分:0)
我通过使用Akamai Media Player(AMP)在我的CAF3自定义接收器上使用了DRM Widevine