首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取google cast中的widevine有效载荷(挑战)?

如何获取google cast中的widevine有效载荷(挑战)?
EN

Stack Overflow用户
提问于 2021-02-24 21:04:43
回答 1查看 158关注 0票数 3

我正在开发自己的自定义接收器应用程序,我想要播放的流是用widevine保护的,我需要从我自己的服务器获得许可证,我需要传递content_id和有效负载。这是我的代码:

代码语言:javascript
复制
playbackConfig.protectionSystem = cast.framework.ContentProtection.WIDEVINE;

playbackConfig.licenseRequestHandler = requestInfo => {

    requestInfo.headers["Authorization"] = token;
    requestInfo.headers["Content-Type"] = "application/json";

    requestInfo.content = JSON.stringify({ 
        type: "widevine", 
        type_request: "license",
        content_id: content_id, 
        payload: <<missing_data>>
    });

    return requestInfo
};

我在Android my上实现了它,实现了我自己的MediaDrmCallback,KeyRequest类包含了所需的信息,但是来自object requestInfo的参数内容没有提供这些信息

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-14 15:53:30

我通过做一些事情来让它工作

代码语言:javascript
复制
   playbackConfig.licenseRequestHandler = requestInfo => {

        requestInfo.headers["Authorization"] = token
        requestInfo.headers["Content-Type"] = "application/json"

        const wrapped = {}
        wrapped.payload = arrayBufferToBase64(requestInfo.content)
        wrapped.type = 'widevine'
        wrapped.type_request = "license"
        wrapped.content_id = content_id
        const wrappedJson = JSON.stringify(wrapped)
        requestInfo.content = shaka.util.StringUtils.toUTF8(wrappedJson)
        return requestInfo
    }

function arrayBufferToBase64(buffer) {
    var binary = '';
    var bytes = new Uint8Array( buffer );
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode( bytes[ i ] );
    }
    return window.btoa( binary );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66351516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档