1

我必须开发一个使用 video.js lib 解密 DRM HLS 内容的函数。我已经检索到了这个问题并找到了它(https://docs.microsoft.com/ko-kr/azure/media-services/previous/media-services-protect-hls-with-fairplay)所以我已经像下面这样使用 playready

const setPlayerForDashHLS = (src, type, key, licenseURL) => {
                    const customData = DRM_TYPE + SITE_ID + key;

                    player.src({
                        src: src,
                        type: type,
                        keySystems: {
                            'com.microsoft.playready': {
                                url: licenseURL,
                                licenseHeaders: {
                                    'pallycon-customdata': customData
                                }
                            }
                        }
                    });
                }

但它无法播放 DRM HLS 视频并且不打印任何有关错误日志的内容。我想知道怎么玩。

4

3 回答 3

0

是否可以在 Windows 中解密DRM HLS 内容?

我必须开发一个功能来解密[...]

您的问题显示了对启用 DRM 的播放工作原理的误解。

在任何情况下,您都无法解密Windows 中受 DRM 保护的内容。您将需要一个解密密钥,并且在解密时,该密钥以一种已知的、明确定义的方式应用。然而,关键正是你从未得到过的。尤其是在 Windows 中,例如在 Microsoft PlayReady DRM 的情况下,兼容的浏览器通过实施 EME(加密媒体扩展)规范来提供解密服务。浏览器解密内容的条件是,在播放解密内容时受到额外的限制(相当严格,想想在物理电缆上保护的强制内容,以便在播放此类内容时进行监控!),而且你永远不会得到特别的解密数据。

通过协作和播放受保护的数据,您可以使用浏览器播放受 DRM 保护的内容。但是您永远不会自己解密内容,例如通过实现解密功能。

于 2020-11-15T18:25:21.610 回答
0

由于您使用的是 Azure 媒体服务,因此您已经拥有动态打包- 即,您可以从相同的底层视频资产获得 HLS 和 MPEG-DASH 输出。如果您尝试在浏览器中播放内容,我强烈建议您使用 MPEG-DASH。仅少数设备支持 HLS + PlayReady,而几乎所有支持 PlayReady 的地方都支持 MPEG-DASH + PlayReady。

此外,我假设您已经与 PlayReady DRM 的供应商合作,如果不是,PlayReady 和/或 Widevine网站列出了许多供应商。

此外,您可能还希望支持 Widevine,因为这是在 Google Chrome 和 Firefox 中播放所支持的。

于 2020-07-21T20:17:08.960 回答
0

VideoJS 有一个官方插件,支持 DRM 播放,利用 EME 标准。

EME(加密媒体标准)是一个 HTML5 扩展,支持以标准方式播放加密媒体- https://www.w3.org/TR/2017/REC-encrypted-media-20170918/

你可以在这里看到 VideoJS 插件:https ://github.com/videojs/videojs-contrib-eme

它包括使用 PlayReady DRM 进行配置和播放的说明。

查看您收到的错误消息:

在此处输入图像描述

这是由平台或浏览器生成的,表示:

不支持错误

平台或浏览器不支持指定的 keySystem,或者无法满足由 supportedConfigurations 指定的配置(例如,如果 contentType 中指定的编解码器都不可用)。

( https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess )

查看上面的配置,您可能会遇到此问题的一个原因可能是在不支持 PlayReady 的浏览器上播放视频。作为一般(非绝对)规则,浏览器和设备“本机”支持的 DRM 目前是:

  • Android 设备 - Widevine
  • Chrome 浏览器 - Widevine
  • 火狐 - Widevine
  • iOS 设备 - FairPlay
  • Safari 浏览器 - FairPlay
  • Internet Explorer 浏览器 - PlayReady

为了尽量减少视频流提供商的开销,CENC ( https://en.wikipedia.org/wiki/MPEG_Common_Encryption ) 允许您拥有一个受 PlayReady 或 Widevine 保护的流。

除此之外,CMAF 和所有主要设备和浏览器宣布的对 AES-CBC 模式加密的支持承诺能够为加密的 HLS 和 DASH 流提供单一媒体流,但可能需要一段时间才能宣布支持推出到所有设备,这意味着现在通常需要 HLS 和 DASH 流才能最大程度地覆盖流式视频。

于 2020-07-20T12:18:10.453 回答