我已经使用库(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 上没有其他方法可以做到这一点。
关于ffmpeg - 是否有适用于 linux 的 MS-DRM 客户端库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4191618/