我正在使用 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();
});
}
这最终返回的是多个数组,每个数组都包含来自前一个数组的数据以及下一个数据 block 。例如,函数返回数组 1:{0=>A, 1=>B},数组 2:{0=>A, 1=>B, 2=>C},数组 3:{0=>A, 1=>B、2=>C、3=>D},以此类推。
我对 Node 很陌生,所以我可能遗漏了一些简单的东西。任何指导将不胜感激!
最佳答案
这应该做的工作:
var buff = new Buffer(data);
console.log(buff.toString('utf8'));
有关缓冲区的更多信息,这里是文档的链接:http://nodejs.org/docs/v0.4.2/api/buffers.html
关于node.js - 逐行解析node.js child_process的STDERR输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584171/