2017-08-18 1 views
2

habe ich einen einfachen Video-to-Audio-Konverter mit ffmpeg für meine discord.js bietet:Wie kann ich eine Audiodatei während der Konvertierung mit ffmpeg in Node.js abspielen?

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

Das alles funktioniert gut, aber mit .on(), um die Datei zu spielen - erst nach Umwandlung vollständig abgeschlossen - kann eine Weile dauern.

Gibt es eine effiziente Möglichkeit, connection.playStream zu spielen Sie die Audiodatei oder Stream, wie die FFmpeg Konvertierung noch passiert?

Antwort

0

Ich sah this question und verwendete die growing-file module, um die Datei zu streamen, während sie konvertiert wurde. Hier ist die allgemeine Idee:

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

Der einzige Nachteil ist, dass ich immer noch den Strom in eine mp3-Datei zum Herunterladen gezwungen bin, während ich es vorziehen würde, diesen Schritt zu überspringen und einfach connection.playStream verwenden FFmpegs pipe zu spielen.

Wenn jemand eine Idee davon hat, wie man den mp3 Download überspringt und einfach stream/pipe zu connection.playStream, würde es geschätzt werden!

Verwandte Themen