使用“纯”Java 播放 DRM 加密视频流

Posted

技术标签:

【中文标题】使用“纯”Java 播放 DRM 加密视频流【英文标题】:Play DRM encrypted video stream with "pure" Java 【发布时间】:2020-03-29 06:18:42 【问题描述】:

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

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

VLCJ 支持从内存输入功能来实现自定义协议或 DRM,但它看起来像一个痛苦的 DRM 规范挖掘。

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

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

似乎没有“纯”Java 实现。为什么?因为格式战?安全问题? 您是否知道任何简单的方法(DalvikVM 支持开箱即用的 Widevine)来创建应用程序而不涉及像 JS 这样的“浏览器技术”?

谢谢。很高兴听到您的想法。

【问题讨论】:

可能是因为过去几年对桌面 Java 的兴趣很少。所有的操作都是服务器端的(或者 android,如果你想把它算作 Java,但那里会使用本机媒体堆栈)。 @Thilo 感谢您的评论。由于Web,桌面用户界面将保持活力。实际上,Electron 就是一个很好的例子。您是否同意没有机会找到简单的解决方案? 问题 1 将吸引大多数固执己见的答案,这不符合 SO 政策。问题 2 也可能被视为推荐任何支持您需求的第三方工具的请求,这也是题外话,可能只会吸引固执己见的建议,这又不是 SO 想要的范围。 “感谢 Web,桌面 UI 将保持活力”。就Java而言,恰恰相反。小程序完全死了,现在 Web 浏览器中发生的一切都在使用 html5/javascript 技术。在浏览器之外,很多“桌面应用程序”实际上是重新打包的网络应用程序(例如 Electron),也使用 Javascript 堆栈而不是原生或 Java 工具。 @Thilo 有道理。泰。 【参考方案1】:

我认为查看平台上如何提供 DRM 可能会帮助您了解选项并让您考虑如何处理您的解决方案。

DRM 客户端功能,即驻留在手机、平板电脑或笔记本电脑等上的 DRM 功能,与 DRM 服务器端功能相反,通常由设备或操作系统供应商在生产设备或操作系统时内置/制造。对于某些设备上的某些 DRM,也可以通过 SDK 添加它。

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

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

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

https://docs.microsoft.com/en-us/playready/overview/developing-applications

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

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

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

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

【讨论】:

非常感谢。它帮助我提高了对问题的认识。 blog.samuelmaddock.com/posts/google-widevine-blocked-my-browser

以上是关于使用“纯”Java 播放 DRM 加密视频流的主要内容,如果未能解决你的问题,请参考以下文章

视频如何解除drm保护

如何破解DRM加密视频! 简单点的!录制不可以用视频打不开! 看个视频跟做任务是的,求高手! 成功可追分

html 播放器的 Widevine DRM 保护内容中的用户授权。

无法在 Android 中使用 React Native Video DRM Fork 播放 DRM 视频

iOS 和 AirPlay 上的 Widevine 视频流

Azure 媒体服务 Widevine 和 PlayReady DRM 错误:无法解密加密的视频源 0x20500004