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
http://127.0.0.1:1080"
--proxy="Specify the proxy to use
--suffix=".ts"
Specify the suffix name of the video fragment to download
https://abc.com/video28912030123/"
--root="Specify the URL Root address of the video fragment to download
https://abc.com"
--referrer="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);
});