video.js Fairplay Widevine playready 直播 DRM 的多个来源

问题描述 投票:0回答:1

我想使用 video.js 来显示受 DRM 保护的直播,该直播可在主要浏览器中使用。我有一个 Fairplay 直播(适用于 Apple 设备)和一个 Widevine/Playready 直播(适用于其他设备)。我已经确认我的直播可以在适当的平台上作为独立播放器运行,但我不确定采取什么方法来动态地为 Apple 设备提供 Fairplay 直播/许可证,并为其他人提供 MPEG-DASH 流/许可证.

https://github.com/videojs/videojs-contrib-eme/ 中的 detectSupportedCDMs() 文档说“小心使用这个”,我已经看到它失败的注释?

这一切似乎都是

the 使用 video.js 进行 DRM 的用例,但我找不到任何示例代码。还有人设置过吗?

video.js drm widevine fairplay playready
1个回答
0
投票
这个问题的答案令人惊讶的是没有记录。 假设“dashsrc”是带有 Widevine/Playready DRM 的 MPEG-DASH 的 src,而“fairplaysrc”是带有 Fairplay DRM 的 HLS 的 src,我们可以使用 video.js 浏览器对象内容来决定使用哪个:

if (videojs.browser.IS_ANY_SAFARI){ // all versions of safari on all platforms require Fairplay DRM player.src(fairplaysrc); } else if(videojs.browser.IS_IOS && videojs.browser.IS_CHROMIUM) { // on iPhone/iPad Chrome uses Fairplay but doesn't use the Safari engine. Firefox and Edge use Widevine/Playready it seems (?). player.src(fairplaysrc); } else { player.src(dashsrc); }
上面的解决方案花了很多时间才弄清楚。

这里是使用 EZDRM 直播设置来组合 Widevine/Playready MPEG-DASH 和 HLS Fairplay 的完整代码:

<video-js id='vidjslivestream' controls preload='auto' class='vjs-16-9 vjs-big-play-centered' ></video-js> <link rel=stylesheet media='all' type='text/css' href='https://vjs.zencdn.net/8.6.1/video-js.css'/><style> .vjs-poster{ background-size: 100% !important; } </style><script src='https://vjs.zencdn.net/8.6.1/video.min.js'></script> <script src='https://cdn.jsdelivr.net/npm/[email protected]/dist/videojs-contrib-eme.min.js'></script> <script type='text/javascript'> (function() { var vid = document.getElementById('vidjslivestream'); var player = videojs(vid); player.eme(); player.on('ready', function() { var dashsrc = { src: 'REDACTED.mpd', type: 'application/dash+xml', keySystems: { 'com.widevine.alpha': 'https://widevine-dash.ezdrm.com/widevine-php/widevine-foreignkey.php?REDACTED', 'com.microsoft.playready': 'https://playready.ezdrm.com/cency/preauth.aspx?REDACTED' } }; var fairplaysrc = { src: 'REDACTED.m3u8', type: 'application/x-mpegURL', keySystems: { 'com.apple.fps.1_0': { certificateUri: 'REDACTED/fairplay.cer', licenseUri: 'https://fps.ezdrm.com/api/licenses/auth?REDACTED', options: { persistentState: 'required' } } } }; if (videojs.browser.IS_ANY_SAFARI){ player.src(fairplaysrc); } else if(videojs.browser.IS_IOS && videojs.browser.IS_CHROMIUM) { player.src(fairplaysrc); } else { player.src(dashsrc); } }); })(); </script>
    
© www.soinside.com 2019 - 2024. All rights reserved.