我想使用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,两者都有相同的问题(无效的文件格式)。 如果块文件大于源视频文件,则我可以看到完整的视频文件而没有声音。