【发布时间】:2020-04-28 06:04:49
【问题描述】:
我正在使用来自 npm-module 的名为 ytdl-core 的库和用于 NodeJS 的 ffmpeg 这些模块有两个功能,一个是下载视频,另一个是从 Youtube 视频中获取音频。这两个函数都是异步的,但在我的算法中,一个依赖于另一个。 首先,我想下载音频,然后我想获取音频源的视频,我不想异步执行,我想同步操作
这是我的代码:
var stream = app.ytdl(req.body.linkYoutube,{quality: 18});
//First, download audio
app.ffmpeg(stream)
.audioBitrate(128)
.save(`${__dirname}/music.mp3`)
.on('progress', (p) => {
app.readline.cursorTo(process.stdout, 0);
process.stdout.write(`${p.targetSize}kb downloaded`);
})
.on('end', () => {
res.status(200).download('./controllers/music.mp3');
});
//Second, download video of that audio
app.ytdl(req.body.linkYoutube, { filter : (format) =>
format.container === 'mp4' &&
format.qualityLabel ==='720p'// &&
// format.itag === 18
})
.pipe(app.fs.createWriteStream('video.mp4'));
我知道这不好,但是学习异步是一个很好的练习,谢谢!
【问题讨论】:
-
@FZs 谢谢你的回答,我会认真检查帖子的。
标签: javascript node.js function asynchronous synchronous