问题描述
在this link中标识了可执行环境,但未播放
并在Pallycon的test page中进行了测试,但播放没有问题。
执行环境和源代码如下。
执行环境:
- 操作系统:macOS High Sierra 10.13.6
- Safari:13.1.2
使用库
- videojs:^ 7.8.4
- videojs-contrib-eme:^ 3.7.0
DRM供应商
- Pallycon
源代码
const playerConfig = {
src: "https://mz-cm-transcoding-output.s3.ap-northeast-2.amazonaws.com/mz-cm-v1/assets/1604917161khae8nfj/Beach+-+19987.m3u8",type: 'application/x-mpegurl',keySystems: {
'com.apple.fps.1_0': {
getCertificate: function (emeOptions,callback) {
videojs.xhr({
url: "https://license.pallycon.com/ri/fpsKeyManager.do?siteId=<SITE_ID>",method: 'GET',},(err,response,responseBody) => {
if (err) {
callback(err)
return
}
callback(null,base64DecodeUint8Array(responseBody));
})
},getContentId: function (emeOptions,initData) {
const contentId = arrayToString(initData);
return contentId.substring(contentId.indexOf('skd://') + 6);
},// return content ID
getLicense: function (emeOptions,contentId,keyMessage,callback) {
videojs.xhr({
url: <license_url>,method: 'POST',responseType: 'text',body: 'spc=' + base64EncodeUint8Array(keyMessage),headers: {
'Content-type': 'application/x-www-form-urlencoded','pallycon-customdata-v2': <token>
}
},base64DecodeUint8Array(responseBody))
})
}
}
}
};
player.src(playerConfig);
解决方法
当我尝试在 VideoJs 中实现 FairPlay 时遇到了同样的问题。就我而言,这是一个 CORS 问题,因为证书位于不同的域中,并且那里未启用 CORS。所以我在我的服务器中创建了一个 API 来返回证书并解决了这个问题。
如果在浏览器中加载您的获取证书 URL (https://license.pallycon.com/ri/fpsKeyManager.do?siteId=Access-Control-Allow-Origin
以查看允许的来源。