我正在使用Videogular2进行天蓝色内容播放。在没有DRM的azure上托管的内容完美无缺。当我实现受DRM保护的内容时,具有令牌认证会产生CORS错误。从许可证服务器获取许可证时会引发错误。
以下是我的代码
stream = {
source: 'http://xxxxx.streaming.mediaservices.windows.net/xxxxxxx/abc512kb.ism/manifest(format=mpd-time-csf)',
licenseServers: {
'com.widevine.alpha': {
serverURL: 'https://xxxxxx.keydelivery.westindia.media.azure.net/Widevine/?KID=xxxxx-ef40-87ed-b348-xxxxxx'
}
},
token: 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
<video #media
[vgMedia]="media"
[vgDash]="stream.source"
[vgDRMLicenseServer]="stream.licenseServers"
[vgDRMToken]="stream.token"
id="singleVideo"
preload="auto" crossorigin
>
</video>
从许可证服务器获取许可证时出现以下错误。
对预检请求的响应没有通过访问控制检查: “访问控制 - 允许 - 来源”的价值&#39;响应中的标题必须 不是通配符&#39; *&#39;当请求的凭据模式是 &#39;包括&#39 ;.起源&#39; http://localhost:4300&#39;因此是不允许的 访问。由...发起的请求的凭据模式 XMLHttpRequest由withCredentials属性控制。
如果我使用chrome的disable-web-security运行它,那么我称之为完美无缺。
播放Azure Media中的内容时是否有人遇到此类问题。
答案 0 :(得分:0)
Mandar - Azure媒体服务(AMS)来源设置了“访问控制 - 允许 - 来源”的价值。预检响应中的标题为通配符&#39; &#39;。这适用于大多数播放器,包括我们的Azure媒体播放器,Roku和JW等。从错误来看,似乎Videogular2不能与AMS原点URL一起使用,因为凭证模式设置为“include”,其dashjs中的XMLHttpRequest不允许使用通配符“”作为“&#39; Access-的值”控制允许来源”。
您是从单个域运行播放器吗?如果是,我们可以将请求设置为包含您的传入源域而不是通配符。通过microsoft dot com的dwgeo联系我,我们可以在您的帐户中启用该功能。感谢。
答案 1 :(得分:0)
我遇到了同样的问题。这是Videogular2源https://github.com/videogular/videogular2/blob/master/src/streaming/vg-dash/vg-dash.ts#L70
它在同一个域上工作正常,但对于不同的域,缺少Credentials = true。在第70行创建玩家后
this.dash = dashjs.MediaPlayer().create();
应该去这个
this.dash.setXHRWithCredentials(true);
我希望它可以提供帮助