HY!
我想创建一个接收器应用程序,它可以播放具有播放保护的流畅流文件。
var mediaElement = document.getElementById('media');
var url = "http://*******.ism/manifest";
var host = new cast.player.api.Host({ 'mediaElement': mediaElement, 'url': url, 'licenseUrl' : 'http://sl.licensekeyserver.com/core/rightsmanager.asmx', licenseCustomData : **THE CONTENT OF AUTH.XAML*** });
host.updateSegmentRequestInfo = function (requestInfo) {
requestInfo.withCredentials = true;
requestInfo.headers = {};
requestInfo.headers['content-type'] = 'text/xml;charset=utf-8'; // example of setting a header
}
host.onError = function (errorCode) {
console.log("Fatal Error - " + errorCode);
if (window.player) {
window.player.unload();
window.player = null;
}
};
window.player = new cast.player.api.Player(host);
protocol = cast.player.api.CreateSmoothStreamingProtocol(host);
var initStart = 0;
window.player.load(protocol, initStart);
但我有一个例外: 无法加载资源:请求的资源上没有“Access-Control-Allow-Origin”标头。因此不允许来源' .eu'访问。 http://sl.licensekeyserver.com/core/rightsmanager.asmx XMLHttpRequest无法加载http://sl.licensekeyserver.com/core/rightsmanager.asmx。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许来源'http:// .eu'访问。
http://sl.licensekeyserver.com/core/rightsmanager.asmx在根文件夹中包含cors.xml。
cors.xml的内容(如此处所述): https://developers.google.com/cast/docs/player
<?xml version="1.0" ?>
<CorsConfig>
<Cors>
<Origins>
<Origin>*</Origin>
</Origins>
<Methods>
<Method>GET</Method>
<Method>POST</Method>
</Methods>
<ResponseHeaders>
<ResponseHeader>Content-Type</ResponseHeader>
</ResponseHeaders>
</Cors>
更新#2 我们在服务器端设置了cors,现在我们得到了这个例外: 无法加载资源:Access-Control-Allow-Headers不允许使用请求标头字段content-type。 Access-Control-Allow-Headers不允许使用请求标头字段内容类型。
我们设置的host.updateSegmentRequestInfo是否正确?可能是什么问题?
更新#3
经过一些配置,我们可以播放视频......一次。
我们停止投射,我们想再次施放,但我们收到以下错误:
无法加载资源:服务器响应状态为500 (内部服务器错误)致命错误 - 2
如果我第二次演出,我们是否必须检查一下?我们重新启动了Google Cast设备并试图投射但没有任何反应。
更新4 一段时间后,使用PlayReady的SmoothStreaming工作正常,内部服务器错误已经消失。
感谢您的帮助!