三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

开源免费的视频解密工具:三步搞定MPEG-DASH Widevine DRM加密视频下载

开源免费的视频解密工具:三步搞定MPEG-DASH Widevine DRM加密视频下载

开源免费的视频解密工具:三步搞定MPEG-DASH Widevine DRM加密视频下载

【免费下载链接】video_decrypterDecrypt video from a streaming site with MPEG-DASH Widevine DRM encryption.项目地址: https://gitcode.com/gh_mirrors/vi/video_decrypter

出门在外想看刚更新的剧集,却发现流媒体平台的"下载"按钮永远灰着;明明订阅了会员,视频却只能在线看、不能带走——这不是你的问题,而是平台用 DRM 加密给内容上了一把锁。Video Decrypter 就是那把钥匙:一款开源免费的视频解密工具,专门针对 MPEG-DASH 格式的 Widevine DRM 加密视频进行解密与下载,让已经付费的内容真正归你所有。接下来,我会从一次真实的"抓狂经历"讲起,带你零基础走完从网页链接到本地 MP4 的全过程。

一、一次"想存却存不了"的抓狂经历

去年冬天,一位朋友要坐 12 小时高铁回老家,提前一晚在流媒体平台下载了整季纪录片。结果到了车上打开一看:所有文件都打不开,App 提示"需要联网验证",而隧道里根本没有信号。他这才意识到,自己"下载"的从来不是视频文件,只是一堆需要授权才能解开的加密数据。

这恐怕是每个流媒体重度用户都踩过的坑:会员费照交,视频却始终不真正属于你。想离线观看?要么忍着黑屏,要么用录屏软件硬录,画质损失惨重还费电。而我当时给他的建议,就是今天要介绍的这款开源项目——Video Decrypter。

二、视频为什么会被"锁"住:聊聊DRM解密背后的原理

先别急着上手,花两分钟理解敌人长什么样。DRM(数字版权管理)说白了就是一套授权解锁机制:视频在上传前就被拆成无数个加密分片,播放器每次播放都要向授权服务器换取"临时钥匙",拿到钥匙才能实时解密渲染。

这套机制里有两个关键角色:

概念通俗解释
MPEG-DASH一种流媒体封装协议,视频被切成大量小分片,附一份描述文件(manifest.mpd)
Widevine DRM谷歌主导的加密方案,几乎所有主流流媒体平台都在用

传统下载工具面对这套机制基本束手无策——它们能下载文件,却拿不到"钥匙"。而 Video Decrypter 的聪明之处在于:它不绕开授权,而是模拟播放器走完整个授权流程,再用拿到的钥匙在本地把分片逐一解密,最后拼回完整的视频文件。听起来复杂,好在项目已经把这套流程封装成了傻瓜式操作。

三、一张表看懂:它和"录屏党"差在哪里

网上流传的"土办法"不少,我们直接拉一张对比表,看看 Video Decrypter 赢在哪里:

对比维度录屏 / 在线抓包Video Decrypter
面对 DRM 加密录屏可用但费电费时,抓包直接无解走正规授权流程,直接解密还原 ✅
画面质量受屏幕分辨率限制,画质打折保留原始码率,无损输出
音画处理经常需要手工对轨、转格式脚本自动合并音视频轨,一步到位
批量剧集一集一集手动折腾多线程批量处理,整季一次搞定
使用成本收费软件或来路不明的"破解版"完全开源免费,代码透明可查

一句话总结:它解决的问题不是"怎么偷视频",而是**"怎么把合法授权的内容转成真正属于你的本地文件"**。

四、解密流水线揭秘:四个脚本如何把视频"搬"回家

这是整个项目最巧妙的部分。python_scripts/目录下的四个脚本,正好对应一条完整的自动化流水线,每个脚本各司其职:

① 收集链接(1. script_liens.py)输入剧集页面地址,脚本自动解析页面,提取出三样关键东西:MPEG-DASH 清单文件manifest.mpd、Widevine 授权服务器地址、以及鉴权令牌,一并存入临时目录。

② 下载分片(2. script_download.py)根据清单里的分片列表,开启最多 50 个线程并发下载音、视频分片,并按顺序分别拼成两个大文件(音频轨 + 视频轨)。

③ 解密还原(3. script_decrypt.py)调用编译好的widevine_decrypter可执行程序,读取上一步下载的加密数据,结合授权信息逐个样本解密,输出纯净的解密轨道。

④ 合成出片(4. script_video.py)先校验解密前后文件大小是否完全一致(防止漏片),再调用 ffmpeg 把音视频轨无损合并,最终产出一个可以直接播放的.mp4

整个过程环环相扣,你只需要按顺序运行四个脚本,中间几乎不需要手动干预。示例所需的清单与授权文件,项目里也附带了python_scripts/example/目录供你参考格式。

五、从零上手:安装编译与第一次解密实践

工程的核心解密器是 C++ 编写,编译方式非常简单,一共四步:

  1. 安装工具链:下载并安装 CMake 与 MinGW-w64(务必选择 POSIX 线程版本);
  2. 配置环境变量:把 MinGW 的bin目录添加到系统 PATH(用户变量和系统变量都要加);
  3. 生成构建文件:在widevine_decrypter/src/下新建build文件夹,进入后执行cmake .. -G "MinGW Makefiles"
  4. 编译出程序:接着执行make,片刻后就得到widevine_decrypter可执行文件。

编译完成后,把 Widevine 官方 CDM 模块widevinecdm.dll放到项目widevine_decrypter/lib/cdm/目录下,整个解密器就绪。之后按第四节的四个脚本顺序运行即可。若想快速测试,可以先跑 1 号脚本生成授权信息,再用 2、3、4 号脚本走完一遍全流程,第一次成功看到本地生成的 MP4,那种成就感相当上头。

六、想研究源码?十分钟看懂目录结构

如果你不满足于"能用",还想知道"为什么能",这个项目的源码结构非常友好:

  • widevine_decrypter/src/main.cpp:解密器主程序,基于 Bento4 库解析 MPEG-DASH 分片与加密样本;
  • widevine_decrypter/lib/inputstream.adaptive/:改编自 Kodi 的流媒体自适应适配层,负责清单与分片处理;
  • widevine_decrypter/lib/wvdecrypter/:Widevine CDM 的加载与调用封装,是解密的核心逻辑;
  • widevine_decrypter/lib/libbento4/:完整的 MP4 解析库,供解密器调用;
  • python_scripts/:四步自动化流程的 Python 脚本,逻辑清晰、注释到位。

从"调用链"的角度读代码会非常顺畅:主程序 → 适配层 → CDM 解密 → 写出文件,一条主线贯穿到底。工程还继承了 xbmc 与 inputstream.adaptive 两大成熟项目的经验,代码质量有保障,非常适合想深入学习流媒体解密原理的开发者。

七、新手最常问的 5 个问题

Q1:只能在 Windows 上运行吗?编译说明目前以 Windows + MinGW 为主,但底层大量代码继承自跨平台的 Kodi 生态,具备向其他系统扩展的潜力。

Q2:为什么必须要有 widevinecdm.dll?它是谷歌官方的 CDM 解密模块,Video Decrypter 扮演的是"调用者"角色,真正执行样本级解密的还是 CDM 本身。

Q3:解密出来的文件打不开?九成情况是跳过了第 4 步的音视频合并。单独的解密轨道只是"半成品",必须用 ffmpeg 合并后才是一个完整可播放的视频文件。

Q4:下载速度太慢怎么办?打开2. script_download.py,调整max_threads参数(默认 50),根据自己的带宽适当增大即可提速。

Q5:能解密其他 DRM 方案吗?当前项目聚焦 Widevine。DRM 世界各家壁垒分明,目前这是开源社区里最成熟、资料最全的一条路线。

八、写在最后:解锁你的视频,也别忘了边界

流媒体时代,"内容主权"成了一个尴尬的话题——我们付费购买了观看权,却拿不到文件本身。Video Decrypter 用开源、免费、透明的方式,把这份权利交还给了用户。它不靠黑科技取巧,而是老老实实走完授权流程,这本身就是对版权秩序的最大尊重。

最后一步,交给你了。打开终端,执行下面的命令把项目拉到本地,按第五节的方法编译一次,然后挑一集你合法订阅的内容练手:

git clone https://gitcode.com/gh_mirrors/vi/video_decrypter

顺便提醒一句:工具本身开源无害,但请务必把它用在个人合法备份、离线学习、内容研究等正当场景,遵守当地法律法规与平台服务条款。愿你从此告别"录屏画质",拥有一座真正属于自己的本地视频库。🎬

【免费下载链接】video_decrypterDecrypt video from a streaming site with MPEG-DASH Widevine DRM encryption.项目地址: https://gitcode.com/gh_mirrors/vi/video_decrypter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表