2017-08-18 59 views
2

我創建了一個簡單的視頻 - 音頻轉換器的ffmpeg我discord.js BOT:如何在使用Node.js中的ffmpeg轉換音頻文件時播放音頻文件?

let stream = //an mp4 stream 
ffmpeg(stream) 
    .toFormat("mp3") 
    .stream(fs.createWriteStream("./audio.mp3")) 
    .on("end",() => { 
    connection.playStream(fs.createReadStream("./audio.mp3")) 
    }); 

這一切工作正常,但使用。對()播放文件 - 它徹底完成轉換後,才 - 可能需要一段時間。

有沒有一種有效的方法來使用connection.playStream到播放音頻文件或流作爲ffmpeg轉換仍在發生?

回答

0

我最終看到this question,並使用growing-file module在轉換文件時對其進行流式處理。這裏的總體思路:

const writeStream = fs.createWriteStream("./audio.mp3"); 
const stream = //mp4 stream 
ffmpeg(stream) 
    .toFormat("mp3") 
    .pipe(writeStream); 
const file = GrowingFile.open("./audio.mp3"); 
connection.playStream(file); 

的唯一的缺點是,我仍然被迫流下載到MP3文件,而我寧願跳過這一步,只需使用connection.playStream發揮FFmpeg的pipe

如果任何人有一個想法如何跳過MP3下載,只需流/ pipe到connection.playStream,這將不勝感激!