所以我看到了很多关于FFMPeg的话题,这是我今天学到的一个很好的工具,但是我花了一整天完善命令,现在在NodeJS部分卡住了一点。
实质上,该命令执行以下操作:从Mac OSX摄像头输入,并将其流式传输到WebSocket。尽管我查看了很多NodeJS库,但我找不到符合我的需求的或者不理解如何使用。以下是我正在使用的命令示例:
我尝试过使用换行符、回车、空格和制表符进行分割,但似乎无法得到一个基本的比特数组,我可以用它来工作。
另一件需要注意的事情是,你会注意到日志通过stderr返回,我在网上看到过很多人这样做?所以我不确定这是怎么回事?但代码是在sdterr回调中的。
非常感谢任何帮助,因为我真的很困惑我做错了什么。
谢谢。
实质上,该命令执行以下操作:从Mac OSX摄像头输入,并将其流式传输到WebSocket。尽管我查看了很多NodeJS库,但我找不到符合我的需求的或者不理解如何使用。以下是我正在使用的命令示例:
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -pix_fmt uyvy422 -i "0:1" -f mpegts -codec:v mpeg1video -s 640x480 -b:v 1000k -bf 0 http://localhost:8081/stream
这个工具可以满足我在流媒体方面的需求,但是我希望能够通过NodeJS调用它,并且能够监视日志并解析返回的数据,例如:
frame= 4852 fps= 30 q=6.8 size= 30506kB time=00:02:41.74 bitrate=1545.1kbits/s speed= 1x \r
我希望你能为我拿到一个JSON数组,并将其输出到网页上。
目前,我正在研究解析数据的方法,我已经查看了很多其他答案,但似乎无法使用split/replace/regex等方法进行分割。我只能得到一个长字符串。
以下是我正在使用的代码(NodeJS):
var ffmpeg = require('child_process').spawn('/usr/local/Cellar/ffmpeg/3.3.1/bin/ffmpeg', ['-f', 'avfoundation', '-framerate', '30', '-video_size', '640x480', '-pix_fmt', 'uyvy422', '-i', '0:1', '-f', 'mpegts', '-codec:v', 'mpeg1video', '-s', '640x480', '-b:v', '1000k', '-bf', '0', 'http://localhost:8081/test']);
ffmpeg.on('error', function (err) {
console.log(err);
});
ffmpeg.on('close', function (code) {
console.log('ffmpeg exited with code ' + code);
});
ffmpeg.stderr.on('data', function (data) {
// console.log('stderr: ' + data);
var tData = data.toString('utf8');
// var a = tData.split('[\\s\\xA0]+');
var a = tData.split('\n');
console.log(a);
});
ffmpeg.stdout.on('data', function (data) {
var frame = new Buffer(data).toString('base64');
// console.log(frame);
});
我尝试过使用换行符、回车、空格和制表符进行分割,但似乎无法得到一个基本的比特数组,我可以用它来工作。
另一件需要注意的事情是,你会注意到日志通过stderr返回,我在网上看到过很多人这样做?所以我不确定这是怎么回事?但代码是在sdterr回调中的。
非常感谢任何帮助,因为我真的很困惑我做错了什么。
谢谢。