如何在JW Player中配置带DRM的播放列表?解决对象不可扩展报错
解决JW Player用
sources数组配置DRM时的报错问题 你碰到的Cannot add property default, object is not extensible错误,本质是JW Player处理sources数组时,要么没明确每个源的媒体类型,要么DRM配置结构不符合要求,导致内部无法正常扩展对象。下面是具体解决办法:
1. 给每个source添加type字段
JW Player必须明确知道每个流的媒体容器类型,比如HLS流要指定application/x-mpegURL,DASH流指定application/dash+xml,否则无法正确解析,触发对象扩展错误。
正确配置示例:
jwplayer.setup({ playlist: [{ sources: [ { file: '你的HLS流地址', type: 'application/x-mpegURL' }, { file: '你的DASH流地址', type: 'application/dash+xml' } ], drm: { widevine: { url: '你的Widevine DRM授权地址' }, playready: { url: '你的PlayReady DRM授权地址' }, fairplay: { url: '你的FairPlay DRM授权地址', certificateUrl: '你的FairPlay证书地址' } } }] });
2. 确保DRM配置位置正确
DRM配置必须放在播放列表的子对象中(即playlist[]的直接子对象里),不能嵌套到单个source内部,这是JW Player的标准结构要求,位置错误会导致解析异常。
3. 升级JW Player版本
如果使用的是较旧版本的播放器,可能存在sources数组处理的bug,建议升级到最新稳定版(比如JW Player 8.x及以上),新版本修复了不少这类对象扩展相关的问题。
4. 避免使用不可扩展的source对象
如果你的代码中对source对象执行了Object.freeze()这类锁定操作,会直接触发该错误,确保所有source都是普通的可扩展对象。
配置完成后,可右键播放器选择「开发者工具」查看媒体加载日志,确认DRM是否正常初始化、sources是否被正确识别。
内容的提问来源于stack exchange,提问作者webdif
相关产品推荐
相关产品推荐

