使用 "pure" Java 播放 DRM 加密视频流

Play DRM encrypted video stream with "pure" Java

我正在调查是否有可能(我确定是,我的意思是简单的方法)构建一个基于 Java 的客户端桌面应用程序来播放受 DRM 保护的视频流。

DRM:DASH CENC DRM1、PlayReady、Widevine Classic\Modular、FairPlay。

VLCJ 支持从内存输入功能以实现自定义协议或 DRM,但深入研究 DRM 规范似乎很痛苦。

有一个 Node.js 开源项目 DOWNstream for Electron 可以帮助 Widevine DRM。 article describes Java and Electron integration (source) 但我想在这种情况下这是偶然的复杂性。

以前我没有面对视频流领域,我不想重新发明轮子所以我的问题是

谢谢。我很高兴听到你的想法。

我认为了解 DRM 是如何在平台上提供的可能有助于您理解这些选项并让您思考您希望如何处理您的解决方案。

DRM 客户端功能,即驻留在 phone 或平板电脑或笔记本电脑等设备上的 DRM 功能,与 DRM 服务器端功能相反,通常由设备内置或 OS设备或 OS 正在 produced/manufactured 时的供应商。对于某些设备上的某些 DRM,也可以通过 SDK 添加它。

大多数 DRM 是通过 'native' 播放器在移动设备和平板电脑上以及通过浏览器在 PC、笔记本电脑等上使用的,因此这是通常的默认设置,您通常可以依靠它来获得支持。智能电视和游戏机更加多样化,可以通过浏览器或本机,具体取决于设备。

最近,几乎所有的手机和平板电脑浏览器也都添加了对基于浏览器的 DRM 的支持,但是笔记本电脑上的许多 DRM 仅限于浏览器,或者更具体地说,CDM(内容解密模块)浏览器添加了特定的 DRM .

有些 DRM 在 PC 和笔记本电脑的浏览器之外受支持 - 例如,基于 Windows 的设备通常会以应用程序可以访问的方式支持 PlayReady DRM。 Microsoft 在此处提供了更多信息:

上面有一个很好的图表总结了不同的设备link,我在下面也复制了它,因为它有助于解释:

我不知道 PC 或笔记本电脑上有类似的 Widevine 或 FairPlay 支持,尽管可能存在或正在开发中。

因此,回到您的问题,大多数跨平台应用程序在笔记本电脑和 PC 上使用 Javascript 和浏览器技术进行 DRM 的原因并不是语言问题,而是因为通过浏览器是在某些笔记本电脑和 PC 上访问 DRM 功能的唯一方法。

对于 Windows,您可以选择使用通用 Windows 平台 API,但这仍然可能无法满足您的需求,并且 Windows 并且特定于 PlayReady。