Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SmartEDU VideoDownloader 使用说明

  • 组合说明:浏览器脚本 demo.js 负责捕获视频站点的参数与 M3U8;桌面程序 M3U8Downloader 负责下载、解密并可选用 ffmpeg 进行后处理输出 MP4
  • 代码参考:

环境要求

  • 操作系统:Windows 10/11(x64)
  • ffmpeg:后处理(转封装/转码)需要;可在「后处理」开关开启后指定 ffmpeg.exe 路径
  • .NET:运行已发布的单文件不需要 .NET 运行时;如需自行构建,需安装 .NET SDK 8

安装与准备

  • 安装 Tampermonkey 浏览器扩展
  • demo.js 安装为用户脚本(自动捕捉课程名与 M3U8,全屏授课窗口抓取不支持捕捉课程名)
    • 已启用跨域网络能力(GM_xmlhttpRequest)并允许连接本地 127.0.0.1/localhost
    • 脚本面板提供「复制最新Key」「复制最新M3U8」「发送到程序」按钮
  • 启动桌面程序 M3U8Downloader(单文件发布或调试运行均可)

程序界面与字段

  • nonce:来自站点的请求参数
  • sign(16字符):来自站点的请求体/参数,长度必须为 16
  • 密文(Base64):站点返回的 key 字段(Base64 格式),程序会用 sign 解密得到 16 字节 AES 密钥
  • M3U8链接:媒体播放列表地址
  • 输出目录:所有下载与后处理输出均写入该目录
  • 最终文件名:保存文件的基名(不含扩展名);脚本会捕捉课程名并自动填入,可手动修改
  • IV模式:
    • 解析/默认:若播放列表提供 IV 则使用;否则按全零 IV
    • 全零IV:使用 16 字节 0
    • 序列IV:按分片序列号生成 IV
  • 并发:下载分片并行度
  • 后处理开关:开启后显示 FFMPEG路径 与后处理选项
    • 转封装为MP4:视频/音频流直接复制,速度快
    • 转码为MP4(1080p/30fps/H.264/10Mbps):重新编码输出

使用流程

  • 在目标视频页面进行播放,demo.js 会捕获参数与 M3U8
  • 在脚本面板点击「发送到程序」,程序将自动填充 nonce、sign、密文、M3U8 与课程名(用于“最终文件名”)
  • 在程序中设置「输出目录」
  • 若需要 MP4,开启「后处理」并选择「转封装」或「转码」,并设置 ffmpeg.exe 路径
  • 点击「开始下载」
    • 过程中界面显示「正在下载,请耐心等待…」
    • 完成后弹窗提示最终输出文件
    • 若已进行后处理且成功生成 MP4,将尝试删除临时 TS 文件;成功/失败会写入日志窗口

常见问题

  • 发送到程序失败:
    • 浏览器脚本已尝试端点:127.0.0.1:5000 与 18080 的 /send-data
    • 程序优先启动 HTTP 监听(5000),失败时启动 TCP 备用(5000/18080/28080)
    • 检查防火墙或杀毒软件是否拦截本地端口
    • 确保 demo.js 中存在 @grant GM_xmlhttpRequest 与 @connect 127.0.0.1/localhost
  • sign 校验失败或长度非 16:程序会提示「sign 需要16字符」
  • M3U8 解析失败或无分片:程序会提示错误并停止
  • ffmpeg 路径无效:后处理会失败,最终保留 TS
  • TS 删除失败:程序日志会提示,并在弹窗中提醒手动删除(可能因文件锁或杀毒占用)
  • 页面出现两个面板:脚本已加入单实例守卫与仅在顶层窗口创建 UI;若页面含 iframe,面板只显示一次
  • M3U8 链接缺少查询参数导致 401:脚本已在 fetch/XHR 网络层捕获完整 URL,并将 iframe 中捕获的事件统一转发到顶层面板显示
  • 仍然 401:站点若使用请求头授权(非查询参数),需要在程序端增加请求头支持;可以提出需要的 Header 名称与示例值
  • 课程名未捕捉到:可手动填写“最终文件名”;如站点使用自定义选择器,请告知以补充匹配规则

构建与发布

  • 调试构建:
dotnet build -c Release
  • 单文件发布(自包含):
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true -p:SelfContained=true
  • 发布产物位置:
    • M3U8Downloader/bin/Release/net8.0-windows/win-x64/publish/M3U8Downloader.exe

目录与版本控制

  • 已配置忽略常见产物与编辑器文件,参考:.gitignore
  • 建议将下载/后处理产物集中到同一个输出目录(例如 outputs/),并在 .gitignore 中忽略该目录,避免误提交大文件

代码参考定位

  • 下载流程与后处理入口:MainForm.cs
  • TS 删除可靠性与权限设置:MainForm.cs
  • 自定义最终文件名输入与自动填充:MainForm.cs
  • 浏览器脚本的课程名捕捉与发送逻辑:demo.js

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages