我正在尝试使用ytdl-core模块(https://github.com/fent/node-ytdl-core)下载Youtube视频音频。
我使用Express编写了一个API,它允许我通过其URL下载音频:
app.get('/api/downloadYoutubeVideo', function (req, res) {
res.set('Content-Type', 'audio/mpeg');
var videoUrl = req.query.videoUrl;
var videoName;
ytdl.getInfo(videoUrl, function(err, info){
videoName = info.title.replace('|','').toString('ascii');
res.set('Content-Disposition', 'attachment; filename=' + videoName + '.mp3');
});
var videoWritableStream = fs.createWriteStream('C:\\test' + '\\' + videoName); // some path on my computer (exists!)
var videoReadableStream = ytdl(videoUrl, { filter: 'audioonly'});
var stream = videoReadableStream.pipe(videoWritableStream);
});问题是,当我调用这个API时,我从服务器上得到一个504错误。
我希望能够保存这个下载的音频在我的本地磁盘。
我会感谢你的帮助。谢谢
发布于 2016-12-12 14:27:42
由于某种原因,videoName没有定义,所以它扰乱了我的功能.以下是一些更改后的正确代码,并将目标路径添加为查询变量。
app.get('/api/downloadYoutubeVideo', function (req, res) {
var videoUrl = req.query.videoUrl;
var destDir = req.query.destDir;
var videoReadableStream = ytdl(videoUrl, { filter: 'audioonly'});
ytdl.getInfo(videoUrl, function(err, info){
var videoName = info.title.replace('|','').toString('ascii');
var videoWritableStream = fs.createWriteStream(destDir + '\\' + videoName + '.mp3');
var stream = videoReadableStream.pipe(videoWritableStream);
stream.on('finish', function() {
res.writeHead(204);
res.end();
});
});
});https://stackoverflow.com/questions/41092293
复制相似问题