Разбор вывода STDERR файла node.js child_process построчно - PullRequest
0 голосов
/ 21 декабря 2011

Я пишу простой онлайн-инструмент для конвертации с использованием FFMPEG и Node.js. Я пытаюсь выяснить, как анализировать каждую строку выходных данных преобразования, полученных от FFMPEG, и отображать только соответствующие результаты на стороне клиента в браузере. В моем случае мне нужен счетчик времени кодирования, который FFMPEG выдает в командной строке.

Моя функция до сих пор:

function metric(ffmpeg, res) { 

  ffmpeg.stdout.on('data', function(data) {
     res.writeHead(200, {'content-type': 'text/html'});
     res.write('received upload:\n\n');
     console.log(data);
  });

  ffmpeg.stderr.on('data', function (data) {
     var temp += data.toString();
            var lines = temp.split('\n');

            //for debugging purposes
            for(var i = 0;i<lines.length;i++) {
                console.log('this is line: ' + i + '----' + lines[i]);
            }
     res.write(lines);
  });

  ffmpeg.on('exit', function (code) {
     console.log('child process exited with code ' + code);
     res.end();
  });     
}

В результате возвращается несколько массивов, каждый из которых включает в себя данные из предыдущего массива, а также следующий блок данных. Например, функция возвращает массив 1: {0 => A, 1 => B}, массив 2: {0 => A, 1 => B, 2 => C}, массив 3: {0 => A, 1 => B, 2 => C, 3 => D} и так далее.

Я довольно новичок в Node, так что, возможно, мне не хватает чего-то простого. Любое руководство будет высоко ценится!

1 Ответ

0 голосов
/ 03 января 2012

Это должно сделать работу:

var buff = new Buffer(data);
console.log(buff.toString('utf8'));

Для получения дополнительной информации о буферах, вот ссылка на документ: http://nodejs.org/docs/v0.4.2/api/buffers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...