/m3u8-downloader

M3u8 downloader - Multi Thread/Auto Merge/Event Monitor/Custom HTTP Referrer

Primary LanguageJavaScriptMIT LicenseMIT

m3u8-downloader

M3u8 downloader - Multi Thread/Auto Merge/Event Monitor/Custom HTTP Referrer/Support HTTP Proxy

****Pure Javascript

How to use

Download m3u8 video files directly

npm install -g m3u8-downloader-concurrency 

m3u8-downloader --url="https://xxx/xxx.m3u8"
# or with proxy
m3u8-downloader --proxy="http://127.0.0.1:1080" --url="https://xxx/xxx.m3u8" --out tmpdir

options

--out=outputDir

Specify the download output directory

--proxy="http://127.0.0.1:1080"

Specify the proxy to use

--suffix=".ts"

Specify the suffix name of the video fragment to download

--root="https://abc.com/video28912030123/"

Specify the URL Root address of the video fragment to download

--referrer="https://abc.com"

HTTP Referrer

--threadCount=3

Thread Count

--debug=true

DEBUG false or true

Advanced usage

npm install --save m3u8-downloader-concurrency 
let url = 'https://abc.com/video28912030123/index.m3u8'; //required
let outputDir = '/Users/xxxx/Downloads/tmp'; //required

// let outputFileName = 'output.ts'; //optional
// let threadCount = 5; //optional

// let videoUrlDirPath = 'https://abc.com/video28912030123/'; //optional
// let headerReferrer = 'https://abc.com'; //optional
// let videoSuffix = '.ts'; //optional

// let retryOnError = true; //optional

// let proxy = '127.0.0.1:1080'; //optional

let downloader = require('m3u8-downloader-concurrency')

let options = {
    url,
    outputDir, //optional
    proxy, //optional
    // outputFileName, //optional
    threadCount, //optional
    videoSuffix, //optional
    videoUrlDirPath, //optional
    headerReferrer, //optional
    retryOnError, //optional
    debug //optional
};

let listener = downloader.download(options)

listener.on('start', function (options) {
    console.log("started downloading", options);
});

listener.on('progress', function (percent) {
    console.log('progress', percent);
});


listener.on('downloaded', function (list) {
    console.log('downloaded', list);
});


listener.on('complete', function (outFile) {
  console.log("done", outFile);
});

listener.on('error', function (error) {
    console.error('error', error);
});