我已经使用了库(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是struct avformatContext。我的问题是从哪里获取钥匙?它似乎用DRM密钥对其进行了解码。


我看ASF规格,然后尝试 补丁ASFDEC.C. 。现在,我有了获得许可URL和密钥ID。问题可能会重写为“是否有MS-DRM客户端库?” (旧:如何用ffmpeg用DRM解码MMS流URL?)

是否可以使用许可URL和密钥ID获取内容密钥?

有帮助吗?

解决方案

原则上,您可以许可 Playready设备移植套件 来自微软,但它会让您退还50,000美元。它是标准的ANSI C,它将为Linux编译,并且可以解密Windows Media DRM和PlayReady ASF流。我相信没有其他方法可以在Linux上执行此操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top