逐块下载视频并使用Node.js Request保存

时间:2019-03-04 08:09:40

标签: node.js download request fetch

我想使用Nodejs“请求”逐块下载视频文件,并将其保存为单个视频文件。

我已经做了这个-

function IDMLoop() {
request
    .get(url, {
        headers: {
            'User-Agent': 'request',
            'Range': `bytes=${rangeStart}-${rangeEnd}`
        }
    })
    .on('response', function (response) {
        console.log()
        var body = '';
        response.on('data', function (chunk) {
            body += chunk;
        });
        response.on('end', function () {
            console.log('BODY: ' + body);
            // tried both one but getting invalid file format
            fs.writeFileSync('000000001.mp4', body);//---------------------------(1)
            fs.appendFileSync('00000000.mp4', Buffer.alloc(1024*11, body));
        });

    })
    // this method also showing invalid file format
    // .pipe(fs.createWriteStream(`doooodle.${contentType}`, { start: rangeStart })) //--------------------------------------(2)
    .on('finish', function () {
        console.log('err')
        rangeStart = rangeEnd + 1;
        rangeEnd = (rangeStart === totalFilesize) ? totalFilesize : rangeStart + diff;

        if (rangeStart <= totalFilesize) {
            IDMLoop()
        } else {
            console.log('finish download');
        }
    })
    .on('error', function (err) {
        console.log(err)
    })

} 
IDMLoop()

我尝试了方法1和2,两者都有相同的问题(无效的文件格式)。 如果块文件大于源视频文件,则我可以看到完整的视频文件而没有声音。

0 个答案:

没有答案