Javascript Chromecast DRM示例

Javascript Chromecast DRM示例,javascript,android,chromecast,Javascript,Android,Chromecast,我指的是Google给出的这个例子(尤其是sender.js文件)()。我正在尝试播放http://storage.googleapis.com/wvmedia/cenc/tears.mpd文件,该文件是DRM,我正在传递示例中sender.js文件中定义的许可证URL http://widevine-proxy.appspot.com/proxy 我的发件人是Android(我正在使用CastCompanyLibrary)。这是我在Android中发送的方式: mCastManager.sen

我指的是Google给出的这个例子(尤其是sender.js文件)()。我正在尝试播放http://storage.googleapis.com/wvmedia/cenc/tears.mpd文件,该文件是DRM,我正在传递示例中sender.js文件中定义的许可证URL http://widevine-proxy.appspot.com/proxy

我的发件人是Android(我正在使用CastCompanyLibrary)。这是我在Android中发送的方式:

mCastManager.sendDataMessage("http://playready.directtaps.net/pr/svc/rightsmanager.asmx");
mCastManager.startCastControllerActivity(LocalPlayerActivity.this, media, 0, true);
以下是我在“我的自定义接收器”中接收许可证URL的方式:

messageBus = castReceiverManager.getCastMessageBus(--NAME SPACE--);

messageBus.onMessage = function(event) {

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

    }
到目前为止,我已经调试并将licenseURL设置为Android发件人发送的许可证URL。它正在接收器中正确接收licenseURL。然后在我的onLoad方法中,我执行以下操作

 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);
            }
        }
    }
但当我这样做时,我得到了一个错误:

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公用文件夹上临时托管接收器。你知道我做错了什么吗?

承载媒体的服务器没有发送所需的CORS头。您需要添加这些,请参见本节,使用跨源资源共享(CORS)。

媒体是Google在github存储库中给出的一个示例。我没有访问权限?在没有CORS头的情况下,我们该如何运行该示例呢?我是说storage.googleapis.com正在托管我提到的示例中的媒体。(我想要这个,因为我需要媒体和许可证URL来测试DRM)。无论如何,我可以添加CORS头到这个?谷歌的云存储允许你轻松地将CORS头添加到你的bucket中(只要你有相关项目的权限)。以下是说明:谢谢你的链接。正如我在原始帖子中提到的,我正在使用给定的CastMediaPlayerStreamingDRM示例。我想用sender.js中的第三个mpd文件进行测试。由于CORS问题,我将视频链接发送为“”,并且没有在接收器的onLoad方法中设置任何凭据,但仍然设置licenseURL(在CastMediaPlayerStreamingDRM示例中给出)。这似乎有效(尽管流在5-10秒内崩溃)。但是,不管是否设置licenseURL,流似乎都能工作(5-10秒)。如果我不设置licenseURL,它不应该在这5-10秒内流吗?我们应该如何使用CastMediaPlayerStreamingDRM示例?