【发布时间】:2014-09-11 21:53:46
【问题描述】:
我指的是 Google 给出的这个例子(特别是 sender.js 文件)(https://github.com/googlecast/CastMediaPlayerStreamingDRM/blob/master/sender.js)。我正在尝试播放作为 DRM 的 http://storage.googleapis.com/wvmedia/cenc/tears.mpd 文件,并且我正在传递定义的许可证 URL http://widevine-proxy.appspot.com/proxy在示例中的 sender.js 文件中。
我的发件人是 Android(我正在使用 CastCompanionLibrary)。这就是我在 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
我将接收器临时托管在保管箱公用文件夹上。关于我做错了什么有什么想法吗?
【问题讨论】:
标签: javascript android chromecast