ytdl(url, { filter: function(format) { return format.container === 'mp4'; } })
.pipe(fs.createWriteStream('./songs/Battle-Scars.mp4'));
我是node.js新手,正在尝试实现一个youtube-mp3转换器,但我不知道如何使以下代码仅在上面的代码完成运行后运行。
var proc = new ffmpeg({ source: './songs/Battle-Scars.mp4'})
.withAudioCodec('libmp3lame')
.toFormat('mp3')
.saveToFile('./songs/Battle-Scars.mp3', function(stdout, stderr) {
console.log('file has been converted succesfully');
});
提前感谢所有的帮助和感谢。
最佳答案
由于您正在使用流,因此您可能需要查看 finish event一旦写入流完成写入磁盘,您就可以触发它。
尝试如下:
var writeStream = fs.createWriteStream('./songs/Battle-Scars.mp4');
// Set up event listener
writeStream.on('finish', function () {
var proc = new ffmpeg({ source: './songs/Battle-Scars.mp4'})
.withAudioCodec('libmp3lame')
.toFormat('mp3')
.saveToFile('./songs/Battle-Scars.mp3', function(stdout, stderr) {
console.log('file has been converted succesfully');
});
});
ytdl(url, { filter: function(format) { return format.container === 'mp4'; } })
.pipe(writeStream);
关于javascript - 对如何在node.js中实现异步回调感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562798/