m3u8 视频在线提取 Web下载工具

m3u8 视频在线提取 Web下载工具

项目详情请见压缩包内的 HTML 文件。

工具简介

本工具是一个基于 Web 的 m3u8 视频在线提取与下载工具,

   支持直接在浏览器中解析 m3u8 链接、分片下载 ts 片段并合成为完整视频,
   推荐使用桌面浏览器(如 Chrome)访问。

m3u8 视频格式简要说明

m3u8 视频通常会将完整视频切分成多个 .ts 片段,
   由一个 .m3u8 文件记录这些片段的地址。
   播放时先读取 m3u8 文件,再按顺序请求和播放 ts 片段。
   该方式常用于直播或提高防盗难度,因此不能像普通视频一样直接下载整段文件。

常见问题包括:下载软件配置麻烦、试错成本高、下载速度不稳定、
   软件内部逻辑不透明等,为解决这些痛点,本工具以“网页版”“可见源码”的方式提供简单直观的解决方案。

工具特点

  • 无需安装,本地无需额外软件,打开网页即可使用。

  • 支持强制整合已下载片段,无需等待全部片段下载完成即可先行观看。

  • 操作粒度精确到每个 ts 片段,可重试下载失败片段。

  • 提供解决跨域限制的注入方式,在视频页面控制台注入工具代码后即可使用。

主要功能说明

  • 解析下载:输入 m3u8 链接,点击按钮即可开始下载视频。

  • 跨域复制代码:资源存在跨域限制时,复制工具给出的代码,在目标视频页面控制台粘贴执行,将工具注入页面解决跨域问题。

  • 重新下载错误片段:当部分 ts 片段下载失败时,一键重新下载这些片段。

  • 强制下载现有片段:根据当前已完成的 ts 片段强制整合并导出视频,不影响正在进行的下载进程。

  • 片段状态图标:每个图标对应一个 ts 片段的下载状态(灰色=待下载,绿色=成功,红色=失败),点击红色可重试对应片段。

使用流程概览

  1. 在目标视频页面打开开发者工具(右键检查 / F12)。

  2. 在 Network 面板中搜索 m3u8,刷新页面以捕获相关请求。

  3. 找到真实视频的 m3u8 文件(内容包含大量 ts 片段地址)。

  4. 复制该 m3u8 链接,粘贴到工具页面并点击解析下载。

  5. 观察片段图标状态,等待全部成功后自动触发整合视频下载;如有失败,可重试对应片段。

常见异常情况

无法下载,没有显示片段图标

多半是跨域限制导致。可以在工具中点击“跨域复制代码”,
   然后到视频页面的控制台粘贴执行,页面底部会注入工具界面,再通过注入的工具进行解析下载。

下载后的视频无法播放

说明视频源经过额外加密处理,不同网站使用的加密方式并不相同,无法统一通用解密。
   一般中小型站点不会启用复杂加密,大型平台(如主流长视频站)才会有此类安全策略。

实现思路简述

  • 解析 m3u8:通过异步请求获取 m3u8 文本,手动解析内容(m3u8 不是 JSON)。

  • 队列下载:使用并发队列按批次请求 ts 片段,响应类型设为二进制缓冲数据。

  • 片段合并:通过 Blob 对象将多个 ts 缓冲数据整合成一个完整文件,并指定正确的 MIME 类型。

  • 自动下载:使用 URL 对 Blob 生成临时链接,再用隐藏的 a 标签配合 download 属性触发浏览器下载。<br/><br/>

<br/>核心代码概览

整合片段并触发浏览器下载的大致逻辑如下:

// 下载整合后的 TS 文件
downloadFile(fileDataList, fileName, fileType) {
  this.tips = 'ts 碎片整合中,请留意浏览器下载'
  const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' })
  const a = document.createElement('a')
  a.download = fileName + '.' + fileType
  a.href = URL.createObjectURL(fileBlob)
  a.style.display = 'none'
  document.body.appendChild(a)
  a.click()
  a.remove()
}

除了这部分涉及 Blob 等新知识点外,其余大多属于常规 JavaScript 逻辑,
   工具整体代码量不大,适合阅读学习。

源码与扩展能力

  • 核心逻辑主要集中在单个 HTML 文件中,结构清晰,方便学习和二次修改。

  • 支持 AES 常规解密与 MP4 转码功能,借助第三方工具文件实现。

  • 修复并使用了某些开源转码库中关于视频时长计算的已知问题。

  • 支持通过 URL 参数传入 m3u8 下载地址,实现第三方页面一键跳转解析。

油猴插件支持

提供了 Tampermonkey 脚本,可在视频网站中直接使用“跳转下载”或“注入下载”方式。
   手动添加脚本的流程大致为:在油猴中新建脚本,粘贴脚本源码并保存,激活后即可在目标站点上使用。<br/><br/><br/><br/>