如何在浏览器外播放 Widevine 加密的内容?

How can I play Widevine-encrypted content out of the browser?

提问人:Luke 提问时间:7/14/2023 更新时间:7/17/2023 访问量:419

问:

我正在尝试在浏览器之外播放 Widevine 加密的内容。我正在尝试使用 Chrome 附带的内容解密模块,该模块会导出此 API。经过大量的反复试验和研究,我能够成功初始化 CDM 并从内容服务器获得 Widevine 许可证。问题是我不太确定如何调用 API 进行播放。我有一些带有加密样本的 DASH 段,并且我能够解析开箱即用的样本信息(样本数量、样本大小、样本 IV 和样本数据)。我以为我可以通过以下方式解密音频;调用返回,但给了我充满零的解密缓冲区。我的下一个尝试是尝试使用 CDM 音频解码器,但总是返回.所以我不太确定我哪里出了问题。我意识到我掩盖了很多细节,但如果有人熟悉这些,我可以提供更多的数据和代码。ContentDecryptionModule_10::Decrypt()kSuccessInitializeAudioDecoder()kInitializationError

DRM MPEG-DASH Widevine

评论


答:

1赞 Mick 7/17/2023 #1

在非常高的层面上,在不详细介绍代码等的情况下,如果您能够使用 CDM 解密内容并接收您或您的应用程序可以查看的未加密内容,那么这将是内容保护系统中的漏洞或错误,因为它不应该允许这样做。

这并不意味着这是不可能的,只是这不是意图,你不能依赖漏洞或错误随着时间的推移没有得到修复。

CDM 通常用于安全地解密和播放内容本身,或者将其传递回安全的媒体路径,该路径将在应用程序甚至操作系统都无法看到解密媒体的情况下播放内容。

这在下面的 EME 规范中显示在下图中 - 内容或框架永远不会返回到应用程序本身 (https://www.w3.org/TR/encrypted-media/):

enter image description here

但是,就您而言,我认为您只想播放内容,而不是尝试实际查看或访问解密的内容。如果是这样,跨平台的 Electron 框架有一个分支,它支持基于 CDM 的应用程序播放。这可能满足您的需求,尽管它仍在使用 chromium 和 Web 技术。即使它没有,它也可能让你对 Castlabs 的家伙,即创建分叉的人如何实现这一目标的有用见解。

评论

0赞 Luke 7/18/2023
我理解这一点,但是 CDM API 不提供任何播放接口,我想也许我至少能够获得音频。但是阅读链接的存储库,我想有一些数字签名验证正在进行中,如果 CDM 没有在正确签名的进程中运行,它将无法正常工作。所以这导致我改变方向并尝试不同的方法,所以我会接受这个答案。
0赞 Mick 7/19/2023
@Luke 请注意 - 如果这是您要播放的视频中的音频,您实际上可能会发现有时这没有加密,即使视频流是加密的。
0赞 Luke 7/19/2023
很高兴知道,但在我的特定情况下,音频实际上是加密的。