GithubHelp home page GithubHelp logo

heisir2014 / m3u8-downloader Goto Github PK

View Code? Open in Web Editor NEW
3.2K 49.0 472.0 14.5 MB

M3U8-Downloader 支持多线程、断点续传、加密视频下载缓存。

Home Page: https://tools.heisir.cn/HLSDownload

JavaScript 98.03% HTML 1.38% CSS 0.58%
electron-application hls-downloader m3u8-downloader m3u8 hls video download download-videos

m3u8-downloader's Introduction

M3U8-Downloader-Build Release Download

M3U8-Downloader 直接下载

M3U8-Downloader是基于Electron框架开发的一款可以下载、播放HLS视频流的APP,功能特点如下:

功能 支持
HLS协议点播源
自定义Http协议头下载
自定义KEY和IV解密
本地M3U8文件下载
M3U8 直播源
标准 AES-128-CBC加密
标准 AES-196-CBC加密
标准 AES-256-CBC加密
非标准 AES-*-CBC加密 ㄨ(可定制)
网页嗅探视频源

M3U8-Downloader

功能规划

flowchart LR
    A1("M3U8-Downloader") ---> B1("MP4、M3U8、MPD下载")
    B1 ---> C1(自定义 文件名)
    B1 ---> C2(自定义 Http Header)
    C2 ---> D1("Referer、Cookies、User-Agent")
    B1 ---> C3(自定义 AES Key)
    B1 ---> C4(多码率选择)
    B1 ---> C5(HTTP代理)
    
    A1 ---> B2("MP4、M3U8、MPD批量下载")
    A1 ---> B3("TS文件合并")
    A1 ---> B4("浏览器资源嗅探")
    B4 ---> C6("FLV、MP4、MP3、WAV")
    B4 ---> C7("HLS(M3U8、TS)")
    B4 ---> C8("DASH(MPD)")
    B4 ---> C12(模拟多终端)
    A1 ---> B5("Settings")
    B5 ---> C9(存储路径)
    B5 ---> C10(设置代理)
    B5 ---> C11(日志查看)

mermaid-diagram-20210328004859


获取M3U8视频地址

在chrome浏览器打开视频网页,按下F12,页签点击到Network页面,在Filter框里输入"m3u8",然后按F5刷新页面,如果网页里的视频使用的是HLS源,就可以在这里捕获到视频流地址,然后选中右键 Copy -> Copy Link Address. 提供m3u8源地址,下载并无损转码Mp4文件

自定义头添加-视频教程

下载可执行包

前往百度网盘下载

链接:https://pan.baidu.com/s/14zaMkxgfTC0HSge-Ze6EpQ 
提取码:m3u8 
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V1的分享

Github 下载

运行源码

NodeJS开发环境搭建

安装NodeJs最新版,NodeJs Download

Clone 代码

在任意文件夹下新建一个文件夹存放代码,并执行以下命令

cd newdir

git clone https://github.com/HeiSir2014/M3U8-Downloader.git .

Yarn 环境安装

npm install yarn -g

Package 依赖安装

yarn

ffmpeg-static 安装超时,可以尝试使用镜像:

FFMPEG_BINARIES_URL=https://cdn.npmmirror.com/binaries/ffmpeg-static yarn

运行M3U8-Downloader

yarn start

打包发布

//windows 平台打包
yarn pack-win

//mac 平台打包
yarn pack-mac

Enjoy it

赞赏

赞赏链接

m3u8-downloader's People

Contributors

chiaweilee avatar dependabot[bot] avatar heisir2014 avatar nick22nd avatar yfdyh000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

m3u8-downloader's Issues

执行 yarn 之后,下载依赖失败

error /home/brown/code/github-projects/M3U8-Downloader/node_modules/electron: Command failed.
Exit code: 1
Command: node install.js
Arguments:
Directory: /home/brown/code/github-projects/M3U8-Downloader/node_modules/electron
Output:
RequestError: connect ETIMEDOUT 52.74.223.119:443
at ClientRequest. (/home/brown/code/github-projects/M3U8-Downloader/node_modules/@electron/get/node_modules/got/source/request-as-event-emitter.js:178:14)
at Object.onceWrapper (node:events:514:26)
at ClientRequest.emit (node:events:406:35)
at ClientRequest.origin.emit (/home/brown/code/github-projects/M3U8-Downloader/node_modules/@electron/get/node_modules/@szmarczak/http-timer/source/index.js:37:11)
at TLSSocket.socketErrorListener (node:_http_client:447:9)
at TLSSocket.emit (node:events:394:28)
at emitErrorNT (node:internal/streams/destroy:193:8)
at emitErrorCloseNT (node:internal/streams/destroy:158:3)

点击播放无反应

下载的是当前最新版v2.0.7

Model Name : MacBook Air
Chipset Model : Apple M1
System Version : macOS 12.3 (21E5222a)

能不能增加个调用外部播放器的功能啊?IINA 无需设置播放列表就能正常连续播放 TS 文件。

关于HTTPS链接不能下载的问题

老版本 electron 里面的 node-fetch 证书过期了,需要将 electron 升级到 12.2.1 / 13.5.1 / 14.1.0 / 15.1.0 / 16 及以上版本;
这里提供一个基于 v2.0.6 版本的修复 下载

哈喽

你好,
看了你写的软件,很厉害。我之前也有想法写一个M3U8 downloader, 但是因为工作繁忙一直没有时间。今天偶然发现你写的软件,顿觉眼前一亮。
我看了一下代码,逻辑清晰,功能强大。但是有一些瑕疵是目录结构不是很清晰。网上有很多 electron + vue 的开发脚手架。如:

1. https://github.com/SimulatedGREG/electron-vue
2. https://github.com/nklayman/vue-cli-plugin-electron-builder

我建议你可以尝试一下。我看你打包了 win,mac, 但是没有linux 的包。 其实这些可以使用 GitHub Actions 来实现全平台打包,并自动上传 release,以及实现软件自动更新。

如果可以的话, 我能参与你的这个项目么?

下载失败

最近无法下载,已下载就是 解析资源失败

解析#EXT-X-KEY

能否支持,自动解析 EXT-X-KEY 匹配加密算法,如

#EXT-X-KEY:METHOD=AES-128,URI="https://example.com/key",IV=0x637FE2E7CF1086D8033B56B65607DC41

这样不用手工去获取key值,这样太不方便

m3u8 文件中没有`#EXTINF:1.250000,`信息就不能下载吗?

m3u8 文件中没有#EXTINF:1.250000,信息就不能下载吗?
比如:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://cccc.xx/enc_2716143.key",IV=0xcfedd4aabf5dc8edcb6ce15660ac5b30
https://cccc.xx/2716143WVsAfvuS_i0.ts
https://cccc.xx/2716143WVsAfvuS_i1.ts
https://cccc.xx/2716143WVsAfvuS_i2.ts
https://cccc.xx/2716143WVsAfvuS_i3.ts
https://cccc.xx/2716143WVsAfvuS_i4.ts
https://cccc.xx/2716143WVsAfvuS_i5.ts

English please

Can you please add English? I don't understand anything at all, but sometimes I manage to download just by clicking random buttons :D

删除TS片段时,UI无法操作

具体操作:创建多个下载任务并勾选“删除TS片段”,当有任务完成合并,进行删除TS片段时,UI阻塞无法操作

建议处理 M3U8 中指向另一 M3U8 的情况

直接从页面上嗅探到的 A.m3u8 中内容是指向另一 B.m3u8 的地址,建议在这种情况下递归解析直到列表中不是仅有一个 m3u8、且递归层数未超过某限制值(可由用户指定)的情况。

一些功能建议

建议添加视频编码选项(部分视频体积过大,希望下载压缩一次性搞定)
合并手动视频时不创建文件夹 直接命名视频文件

一些功能建议

m3u8链接粘贴后会显示视频的时长视频的码率帧数这种的功能,希望可以添加

Mac Arm64「M3U8-Downloader」已損毀問題

筆電型號:MacBook Air (M1, 2020)
OS:macOS Monterey 12.3.1

安裝M3U8-Downloader-mac_arm64-2.0.7成功後,卻跳出 「M3U8-Downloader」已損毀,無法打開。 您應該將其丟到「垃圾桶」。的錯誤。

image

download stop while not finish

like file download a lot but not finish yet
then, stop as 400/500 410/440

时间:2020-29-08 01:06:13状态:下载中...402/505

删除TS片段时,UI无法操作

具体操作:创建多个下载任务并勾选“删除TS片段”,当有任务完成合并,进行删除TS片段时,UI阻塞无法操作

视频下载後没声音,原因是没有将 #EXT-X-MEDIA:TYPE=AUDIO 中的音讯部分合并到视频

您好,
某些m3u8视频下载後没声音,查看master.m3u8 档案发现"视频部分"与"音讯部分"是分开的,
视频部分是在 #EXT-X-STREAM-INF 中指定的,当中的 .ts 档是没音讯的,
而音讯部分是在 #EXT-X-MEDIA:TYPE=AUDIO 中指定的。

这类m3u8,如果下载master.m3u8 只会下载/合并 .ts档,并没有一并下载音讯部分,导致合并出来的档案是没有音讯。
建议程式可以在这方面作出改善,谢谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.