var fp = 'ffprobe ' + fileName + ' -show_streams | grep '
var width = exec(fp+'width', function(err, stdout, stderr){
    return stdout;
});
alert(stdout + 'random example');

¿Cómo puedo sacar el stdout 'del proceso para poder usarlo más tarde?

3
ConfusedCoder 15 jul. 2011 a las 23:37

4 respuestas

La mejor respuesta

La función exec del nodo es asíncrona. Esto significa que no hay garantía de que el código debajo de la llamada exec espere hasta que el proceso secundario termine de ejecutarse. Para ejecutar el código una vez que se cierra el proceso, debe proporcionar una devolución de llamada que se ocupe de los resultados. Su código puede ramificarse desde allí:

var fp = 'ffprobe ' + fileName + ' -show_streams | grep ';
var width = exec(fp+'width', function(err, stdout, stderr){
    console.log(stdout);

    // ... process stdout a bit ...

    afterFFProbe(stdout);
});

function afterFFProbe(output) {
    // your program continues here
}
6
Jon Gauthier 2 ago. 2013 a las 02:34

Creo que esto podría funcionar:

var output = "";
var fp = 'ffprobe ' + fileName + ' -show_streams | grep '
var width = exec(fp+'width', function(err, stdout, stderr){
this.output = stdout;
});
alert(output + 'random example');
-1
George Korac 15 jul. 2011 a las 19:41

Si te estoy entendiendo correctamente:

var fp = 'ffprobe ' + fileName + ' -show_streams | grep ',
    value,
    width = exec(fp+'width', function(err, stdout, stderr) {
        value = stdout;
        return stdout;
    });
alert(value + 'random example');
-1
Jeremy 15 jul. 2011 a las 19:41

Ninguna de las respuestas anteriores funcionó para mí. Esto lo hizo sin embargo.

var probeCommand = 'rtsp://xx.xx.xx.xx/axis-media/media.3gp'
exec('ffprobe '+probeCommand+' | echo ',function(err,stdout,stderr){
    console.log(stdout+stderr)
})
0
moeiscool 20 nov. 2017 a las 06:41