Momo707577045/m3u8-downloader:m3u8视频在线提取工具

m3u8-downloader在GitHub上已经拿到6,977 Star了。

这是一个在线m3u8视频提取工具,无需安装软件,打开网页即可使用,支持跨域处理、错误片段重下等功能,解决m3u8格式视频难以下载的问题。

项目介绍

正文顶部截图

m3u8是一种常见的视频格式,原理是将完整视频拆分成多个.ts视频碎片,用.m3u8文件记录每个片段的地址。播放时先读取m3u8文件,再逐个下载播放ts片段。这种格式常用于直播业务,也能规避视频直接被窃取的风险,但也导致用户无法简单通过链接下载完整视频。

传统的m3u8下载软件存在多个问题,下载过程繁琐,试错成本高。部分软件下载情况不稳定,常出现浏览器能正常播放,但软件下载速度慢,甚至无法下载的情况。软件被编译打包,用户无法了解内部运行机制,也不清楚处理过程。基于这些原因,开发者开发了这个在线工具。

核心功能

README区域截图

工具无需安装,打开网页即可使用,推荐使用chrome浏览器访问。核心功能包括:
解析下载:输入m3u8链接,点击即可下载视频。
跨域复制代码:当资源出现跨域限制时,点击复制页面代码,在视频页面的控制台输入,将工具注入到视频页面中,解决跨域问题。
重新下载错误片段:当部分视频片段下载失败时,点击该按钮,重新下载错误片段。
强制下载现有片段:将已经下载好的视频片段强制整合下载,用户可以提前观看已经下载的片段,该操作不影响当前下载进程。
片段状态显示:对应每一个.ts视频片段的下载情况,灰色表示待下载,绿色表示下载成功,红色表示下载失败,点击红色图标可重新下载对应错误片段。

使用方法

用户可按以下步骤操作:
打开视频目标网页,按下F12键打开开发者工具,找到network选项,输入m3u8过滤相关文件。刷新页面,监听m3u8文件。
找到目标m3u8文件,查看文件内容,内容包含许多ts字眼的文件即为需要的视频m3u8文件,拷贝这个文件的链接。
打开工具页面,输入链接,点击解析下载。出现片段图标,则证明操作成功,等待视频下载。
片段全部下载成功,将触发浏览器自动下载,下载整合后的完整视频。如果有片段下载失败,则点击对应片段,或点击重新下载错误片段按钮,重新下载错误片段。

技术实现

工具整体代码量较小,除了vue.js文件,其余代码均包含在index.html文件内,包括换行一共540行代码,其中css样式190行,html标签30行,JS逻辑代码300行。
核心实现流程分为四部分:下载并解析m3u8文件,通过ajax的get请求获取m3u8文件内容字符串并解析。队列下载ts视频片段,使用ajax的get请求视频碎片,设置responseType为arraybuffer,并发下载数设置为10。组合ts视频片段,使用Blob对象将多个ts文件整合成一个文件,设置正确的MIME类型。自动下载,通过URL.createObjectURL生成Blob文件链接,使用a标签的download属性触发自动下载。
工具还支持AES常规解密功能,借助aes-decryptor.js实现。支持MP4转码功能,借助mux.js实现,开发者已经修复了mux.js无法计算视频长度的bug。
工具还提供油猴插件版本,支持跳转下载和注入下载两种模式,进一步简化用户操作。

开源地址:https://github.com/Momo707577045/m3u8-downloader

hub.com/Momo707577045/m3u8-downloader

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐