2016-01-02 34 views
2
ytdl(url, { filter: function(format) { return format.container === 'mp4'; } }) 
    .pipe(fs.createWriteStream('./songs/Battle-Scars.mp4')); 

我是新來的node.js,我試圖實現一個youtube-mp3轉換器,並且我不知道如何使下面的代碼只在運行後運行上面的代碼完成運行。困惑於如何在node.js中實現異步回調

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'); 
    }); 

我很感謝所有的幫助和提前致謝。

回答

2

由於您正在使用流,您可能需要查看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); 
+0

它適用於所有幫助!謝謝,應該已經看了靠近文檔。 – beekeeper