2014-05-08 3 views
2

J'essaie de générer un processus avconv à l'intérieur de node.js. Il doit recevoir des données sur stdin et de sortie données converties à stdoutprocessus spawned dans node.js qui se termine immédiatement

Alors que les travaux de commande dans la coquille, il ferme immédiatement Node.js et je ne sais pas pourquoi:

avconv -v quiet -i pipe:0 -vn -f s16le -acodec pcm_s16le pipe:1 

qui fonctionne et dans le noeud:

var a = spawn('avconv', ['-v quiet -i pipe:0 -vn -f s16le -acodec pcm_s16le pipe:1']); 

a.on('exit', function(code) { 
    pr(code, true); 
}) 

Je reçois immédiatement un code de sortie '1'. Quelqu'un peut-il dire ce qui ne va pas ici?

+0

Vos arguments de commande ne devraient-ils pas être des chaînes séparées? – Darkhogg

+0

Ne vous inquiétez pas, vous obtenez le même résultat – skerit

+0

Avez-vous essayé de rediriger stderr pour voir la description de l'erreur? – Darkhogg

Répondre

3

Vous devez séparer le tableau d'arguments vous:

var a = spawn('avconv', ['-v', 'quiet', '-i', 'pipe:0', '-vn', '-f', 's16le', '-acodec', 'pcm_s16le', 'pipe:1']); 

La délimitation de l'espace que vous êtes habitué à des travaux de ligne de commande est fournie par votre shell (bash, zsh ...). Le shell décompose votre commande en argument en utilisant des espaces et vous permet de dire "Je veux ceci comme un seul argument" en ajoutant des guillemets.

Questions connexes