6

我已经使用库(libavformat 和 libavcodec)来解码一些 MMS 流 url。但其中一些受DRM保护。当我尝试解码它们时,库会发出警告

在 libavformat/asfdec.c 中:

if (!s->keylen) {
    if (!guidcmp(&g, &ff_asf_content_encryption)) {
        av_log(s, AV_LOG_WARNING, "DRM protected stream detected, decoding will likely fail!\n");
    } else if (!guidcmp(&g, &ff_asf_ext_content_encryption)) {
        av_log(s, AV_LOG_WARNING, "Ext DRM protected stream detected, decoding will likely fail!\n");
    } else if (!guidcmp(&g, &ff_asf_digital_signature)) {
        av_log(s, AV_LOG_WARNING, "Digital signature detected, decoding will likely fail!\n");
    }
}

变量 s 是结构 AVFormatContext。我的问题是从哪里得到钥匙?它似乎使用 DRM 密钥对其进行解码。


我查看了 ASF 规范,并尝试修补 asfdec.c。现在,我有了获取许可证的 URL 和密钥 ID。问题可以重写为“是否有适用于 linux 的 MS-DRM 客户端库?” (旧:如何通过 ffmpeg 解码带有 DRM 的 MMS 流 url?)

是否可以使用许可证 url 和密钥 id 来获取内容密钥?

4

1 回答 1

6

原则上,您可以从 Microsoft 获得PlayReady Device Porting Kit的许可,但要花 50,000 美元。它是标准的 ANSI C,可以为 Linux 编译,并且可以解密 Windows Media DRM 和 PlayReady ASF 流。我相信在 Linux 上没有其他方法可以做到这一点。

于 2011-01-25T08:02:44.267 回答