Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/avivharuzi/m3u8-dln

A complete m3u8 downloader ๐Ÿ“บ
https://github.com/avivharuzi/m3u8-dln

hls javascript m3u8 m3u8-downloader nodejs npm npm-package typescript

Last synced: 3 months ago
JSON representation

A complete m3u8 downloader ๐Ÿ“บ

Awesome Lists containing this project

README

        


m3u8-dln


A complete m3u8 downloader ๐Ÿ“บ


An npm package and CLI tool to download M3U8/HLS streams and merge all the chunks to a MP4 video.



NPM
GitHub



Report Bug
ยท
Request Feature


---

## ๐Ÿ“– Table of Contents

- [Features](#-Features)
- [Prerequisites](#-Prerequisites)
- [Installation](#-Installation)
- [Usage](#-Usage)
- [License](#-License)

## โœจ Features

โœ… Vey fast ๐ŸŽ๏ธ

โœ… Can be used via CLI or in code

โœ… Support http headers in case of authentication

โœ… Can download from m3u8 master playlist and all his videos inside or specific one

โœ… Can merge video and audio together (works only if the m3u8 master playlist was provided)

โœ… Preserve original quality (without encoding)

## ๐ŸŽฏ Prerequisites

- [ffmpeg](https://ffmpeg.org) (ffmpeg will be used as the last step to create the mp4 file)

## ๐Ÿ› ๏ธ Installation

Using via code (for CLI no need to install locally).

> NOTE: The package is using esm modules!

Install the package locally.

```
npm i m3u8-dln
```

Basic example.

```ts
import { m3u8DLN } from 'm3u8-dln';

await m3u8DLN('https://www.example.com/some-path/master.m3u8', './');
```

With options.

```ts
import { m3u8DLN } from 'm3u8-dln';

const response = await m3u8DLN(
'https://www.example.com/some-path/master.m3u8',
'./',
{
httpHeaders: {}, // HTTP headers that can be pass to the http calls.
segmentBatch: 8, // The number of segment files to download at the same time.
streamBatch: 4, // The number of streams to download at the same time.
streamSelection: {
// 'all' | 'first-one' | 'last-one' | 'highest-bandwidth' | 'highest-resolution'
strategy: 'highest-resolution', // Choose what streams to download.
},
}
);

console.log(response); // [{ outputFilePaths: ['ced0b1120d6954b6229bbbc12c162c6a_1920x1080_25.mp4'] }]
```

## โšก๏ธ Usage

Using via CLI.

```sh
npx m3u8-dln --help
```

Download example with input.

```sh
npx m3u8-dln -i https://www.example.com/some-path/master.m3u8
```

## ๐Ÿ“œ License

[MIT](LICENSE)