# m3u8-download-client
**Repository Path**: misland/m3u8-download-client
## Basic Information
- **Project Name**: m3u8-download-client
- **Description**: m3u8视频下载客户端
支持网站:优酷、爱奇艺、某1等使用m3u8作为视频播放方式的网站
github同步仓库:https://github.com/misland/m3u8-download-client
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-07-28
- **Last Updated**: 2025-04-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 为什么要重复造轮子
其实用ffmpeg根据m3u8文件可以直接下载,不过有的m3u8文件中没有完整url😑,这时如果要用ffmpeg进行下载,就比较麻烦了,需要手动编辑m3u8文件将所有片断的url补足,这是万万不能接受的,麻烦!!!
## 英语文档
[English doc](./README.md)
# 前提条件
+ 已安装nodejs并且版本大于v12
+ 已安装ffmpeg并正确配置环境变量
# 优势
运行时只依赖nodejs,没有任何第三方库,没有node_modules黑洞😃
# 用法
先在浏览器中找到m3u8文件url,如下图

右键复制完整url
引入index文件,构造客户端实例,调用`download`下载即可,下载成功后,当前文件夹下会有参数指定的mp4文件
构造函数目前接收五个参数,具体释义如下:
+ file:要下载的m3u8文件完整链接url
+ hasPrefix:有的m3u8文件url中只有ts文件名称(如某1),没有前缀url,此参数用于设置前缀url,若m3u8中包含完整的url,传递空字符串''
+ hasParam:有的m3u8文件中的url包含参数(如某酷),将些参数设置为true,可以正确解析ts片断文件名
+ deleteTemFile:文件下载成功后,是否删除中间文件
+ output:最终输出的mp4文件名,如保存为tem.mp4
以某迅视频为例(某讯的m3u8链接是包含在一个完整的url中的,需要自己动手解析出来🤨)
```
let target='https://apd-a3f81ff63432030f46a06614fdb6b814.v.smtcdns.com/omts.tc.qq.com/ANlUPJ9H51t0nqmjZjpT-is1DXJHilkCc6DEugGCyyNI/uwMROfz2r57IIaQXGdGnC2dXOm7hjGQsChse-qVxwu7rgi-F/svp_50069/Wv-CUToQnoWt0hIzlZ9ZRVkyKG2MHp9auhZXF7dwf89vvzaMnEt8Ev4ZnZydIEymuFbFc396gsg6dJlxe5SlMkBXS4qB5EQoMKoygN_kIp17tT1v72K91Id3YnpoxLoKHoiZhlGcWF04DcGiAxj8j1AIWfMMvFUKyinzrfB4DvXsbIfS9maQ-A/gzc_1000035_0b534uariaabpqaai4gmrzqzjzodctsqcfca.f304110.ts.m3u8?ver=4&v_idx=0&ctime=2022-01-05 11:40:15';
let client = new download(
target,
false,
true,
false,
'test.mp4');
await client.download();
```
以某酷为例
```
let target = 'https://valipl.cp31.ott.cibntv.net/69766128FD93F71AF54BA3347/03000900005FBB675CDDF956ECC37EBCA100AC-5E0D-4973-A5EA-696D9B9DB386.m3u8?ccode=0502&duration=31&expire=18000&psid=88ccb5b8fd2de8b9f187eacfb374907a43346&ups_client_netip=3af612e2&ups_ts=1641350726&ups_userid=&utid=tQzYGVKoyH8CATr2EuJJc5vH&vid=XNDk3NjUyMTg1Mg&vkey=B2906ab85b5ccebc12382768363cea216&sm=1&operate_type=1&dre=u37&si=73&eo=0&dst=1&iv=0&s=&type=mp4hd3v3&bc=2&t=f30015f5910a099&cug=1&rid=20000000CA6E79B664AED5FF7EC16111A5CD585B02000000';
let client = new download(
target,
true,
true,
false,
'test.mp4');
await client.download();
```
# 免责声明
此代码仅用于测试和分享,使用者请注意视频提供者版权问题,若使用此library进行非法操作侵犯他人权益,则使用者负全部责任,本人不负任何责任