Ich versuche einen Konverter zu programmieren, der jede Videoquelle aufnehmen und in mp3 konvertieren kann. Das MP3 sollte auf meiner Festplatte oder in einem Puffer gespeichert werden, um es per Telegramm zu senden.NodeJS - Piping mehrere FFMPEG Prozesse
Es funktioniert gut bis jetzt, das einzige Problem, mit dem ich konfrontiert bin, ist, dass es nur ein Video auf einmal aufnehmen kann, und ich weiß nicht warum.
// IMPORTS
var fs = require('fs');
var https = require('https');
var child_process = require('child_process');
// EVENTEMITER (Not used so far)
var util = require('util');
var EventEmitter = require('events').EventEmitter;
// STREAMHANDLER
var StreamHandler = function(url, name){
// VARIABLES
self = this;
this.url = url;
this.name = name;
// CREATE FFMPEG PROCESS
var spawn = child_process.spawn;
var args = ['-i', 'pipe:0', '-f', 'mp3', '-ac', '2', '-ab', '128k', '-acodec', 'libmp3lame', 'pipe:1'];
this.ffmpeg = spawn('ffmpeg', args);
// GRAB STREAM
https.get(url, function(res) {
res.pipe(self.ffmpeg.stdin);
});
// WRITE TO FILE
this.ffmpeg.stdout.pipe(fs.createWriteStream(name));
//DEBUG
this.ffmpeg.stdout.on("data", function (data) {
console.error(self.name);
});
}
util.inherits(StreamHandler, EventEmitter);
// TESTING
var test1 = new StreamHandler(vidUrl, "test1.mp3");
test1.ffmpeg.on("exit", function (code, name, signal) {
console.log("Finished: " + test1.name);
});
var test2 = new StreamHandler(vidUrl, "test2.mp3");
test2.ffmpeg.on("exit", function (code, name, signal) {
console.log("Finished: " + test2.name);
});
Es springt test1.mp3 und nur wandelt test2.mp3, aber 2 ffmpeg Prozesse wurden erstellt:
Nach test2.mp3 umgewandelt wird der andere ffmpeg Faden bleibt offen, aber tut nichts, und Das Knotenprogramm bleibt hängen (ich denke schon), damit es etwas sendet.
Ich hoffe, jemand kann mir helfen :)
Danke. Werde es später anschauen. Ich hoffe wirklich, dass jemand anderes weiß, warum es nicht auf meine Art funktioniert, also kann ich diesem Problem in Zukunft ausweichen – Alaska
@Alaska Siehe den obigen Beitrag. –
Danke. Es funktionierte! – Alaska