首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chromecast DRM示例

Chromecast DRM示例
EN

Stack Overflow用户
提问于 2014-09-12 05:53:46
回答 1查看 2.1K关注 0票数 1

我指的是谷歌给出的这个例子(特别是sender.js文件) (https://github.com/googlecast/CastMediaPlayerStreamingDRM/blob/master/sender.js)。我正在尝试播放http: //storage.googleapis.com/wvmedia/cenc/tears.mpd文件,它是DRM,并且我传入了许可URL http:// widevine proxy.apppot.com/proxy,正如示例中的sender.js文件中所定义的那样。

我的发送者是Android (我使用的是CastCompanionLibrary)。这就是我在Android中发送它的方式:

代码语言:javascript
复制
mCastManager.sendDataMessage("http://playready.directtaps.net/pr/svc/rightsmanager.asmx");
mCastManager.startCastControllerActivity(LocalPlayerActivity.this, media, 0, true);

这是我在我的自定义接收器中接收许可证URL的方式:

代码语言:javascript
复制
messageBus = castReceiverManager.getCastMessageBus(--NAME SPACE--);

messageBus.onMessage = function(event) {

        console.log(event['data']);
        licenseURL = event['data'];
        console.log(licenseURL);

    }

到目前为止,我已经调试过了,licenseURL被设置为Android发送者发送的license URL。它在接收器中正常接收licenseURL。然后,在我的onLoad方法中,我执行以下操作。

代码语言:javascript
复制
 mediaManager.onLoad = function(event) {

        if(mediaPlayer !== null) {
            mediaPlayer.unload(); // Ensure unload before loading again
        }

        if (event.data['media'] && event.data['media']['contentId']) {
            var url = event.data['media']['contentId'];

            mediaHost = new cast.player.api.Host({
                'mediaElement': mediaElement,
                'url': url
            });

            mediaHost.onError = function (errorCode) {
                console.error('### HOST ERROR - Fatal Error: code = ' + errorCode);

                if (mediaPlayer !== null) {
                    mediaPlayer.unload();
                }
            }

            if(licenseURL){

                console.log("##License URL is not null");
                mediaHost.licenseURL = licenseURL;
            }
            var initialTimeIndexSeconds = event.data['media']['currentTime'] || 0;

            var protocol = null;

            var parser = document.createElement('a');
            parser.href = url;

            var ext = ext = parser.pathname.split('.').pop();
            if (ext === 'm3u8') {
                protocol =  cast.player.api.CreateHlsStreamingProtocol(mediaHost);
            } else if (ext === 'mpd') {
                protocol = cast.player.api.CreateDashStreamingProtocol(mediaHost);
            } else if (ext === 'ism/') {
                protocol = cast.player.api.CreateSmoothStreamingProtocol(mediaHost);
            }
            console.log('### Media Protocol Identified as ' + ext);


            if (protocol === null) {

                mediaManager['onLoadOrig'](event); // Call on the original callback
            } else {

                mediaPlayer = new cast.player.api.Player(mediaHost);
                mediaPlayer.load(protocol, initialTimeIndexSeconds);
            }
        }
    }

但是当我这样做的时候,我得到了一个错误:

代码语言:javascript
复制
XMLHttpRequest cannot load http://storage.googleapis.com/wvmedia/cenc/tears.mpd. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://dl.dropboxusercontent.com' is therefore not allowed access.
### HOST ERROR - Fatal Error: code = 3 

我暂时在dropbox公共文件夹上托管接收器。你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-12 07:16:24

托管媒体的服务器没有发送所需的CORS标头。您需要添加这些,请参见此document使用跨域资源共享(CORS)一节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25797568

复制
相关文章

相似问题

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