我已经使用库(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。我的问题是从哪里得到 key ?它似乎使用 DRM key 对其进行解码。

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

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

请您参考如下方法:

原则上您可以许可 PlayReady Device Porting Kit来自微软,但它会让你回到 50,000 美元。它是标准的 ANSI C,可以为 Linux 编译,并且可以解密 Windows Media DRM 和 PlayReady ASF 流。我相信在 Linux 上没有其他方法可以做到这一点。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!