如何解决使用VideoJ,FairPlay无法进行HLS媒体文件解密
我尝试播放加密的HLS媒体文件,但未播放,并出现以下错误。
在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
以查看允许的来源。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。