m3u8-down

m3u8 video download and merge

Usage no npm install needed!

<script type="module">
  import m3u8Down from 'https://cdn.skypack.dev/m3u8-down';
</script>

README

M3U8 视频并发下载, 并生成ffmpeg合并命令

start

npm run dev

开始使用

npm install -g m3u8-down

然后任意位置

m3u8 <url> p=6

url 必须要, p可选. p为并发下载文件数量

程序会自动解析m3u8文件并下载所有ts视频文件. 并生成一个sh脚本, 文件管理打开./temp/ ~ 下的一个.sh文件可自动合并视频, 依赖 ffmpeg

代码讲解

首先通过链家拆解获得地址携带的参数

const { origin, pathname } =  new URL(url)
const { originPath, fileName } = (url=>{
  const arr = url.split('/')
  return {
    "fileName": arr[arr.length - 1],
    "originPath": url.replace(arr[arr.length-1],'')
  }
})(pathname)

然后获取.m3u8文件, 对里面的内容进行分析

没行代码已#符号开头的代表一些协议注释, 过滤掉就是我们需要下载的视频断链接


const data = await $http.get(url)
const list = data.split('\n').filter(item=> !/^#\w+/.test(item) && item)

创建一个队列来下载任务, 通过Primise来控制下载文件, 成功一个任务就取下一个任务去下载