我正在使用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 =&gt; A,1 =&gt; B},数组2:{0 =&gt; A,1 =&gt; B,2 =&gt; C},数组3:{ 0 =&gt; A,1 =&gt; B,2 =&gt; C,3 =&gt; D},依此类推。
我对Node很陌生,所以我可能会错过一些简单的东西。任何指导都将非常感谢!
答案 0 :(得分:0)
这应该做的工作:
var buff = new Buffer(data);
console.log(buff.toString('utf8'));
有关缓冲区的更多信息,请参阅doc:http://nodejs.org/docs/v0.4.2/api/buffers.html
的链接