2015-05-31 203 views
0

我正在使用node-rtsp-stream模块通过nodejs将RTSP流式传输到web。 我流与ffmpeg的RTSP源,例如RTSP SOURCE - EXAMPLEFFmpeg Stream RTSP输入并使用nodejs同时保存到文件

我知道我可以在一个或多个输入保存为多种输出,但我不知道是否有选项流输入并保存在同一时间到文件而不执行两个ffmpeg进程。
用下面的例子我能流的RTSP源

ffmpeg -i rtsp-url -rtsp_transport tcp -f mpeg1video -b:v 800k -r 30 

上的模块是看起来像:

this.stream = child_process.spawn("ffmpeg", [ "-i", this.url, "-rtsp_transport", "tcp",'-f', 'mpeg1video', '-b:v', '800k', '-r', '30', '-'], { 
     detached: false 
    }); 
    ff =child_process.spawn("ffmpeg", [ "-i", this.url, '-b:v', '800k', '-r', '30', '1.mp4'], { 
     detached: false 
    }); 
    this.inputStreamStarted = true; 
    this.stream.stdout.on('data', function(data) { 
     return self.emit('mpeg1data', data); 
    }); 
    this.stream.stderr.on('data', function(data) { 
     return self.emit('ffmpegError', data); 
    }); 

正如你可以看到我使用的两种工艺ffmpeg做我想做的事情,但 如果有人遇到这个问题并用一个命令(进程)解决它,我想得到一些建议。 如何流式传输RTSP源并将其同时保存到文件。

有关模块的详细信息,我用: node-rtsp-stream

回答

0

尝试代码:(它会读取RTSP并保存到一个jpg文件(覆盖它每3秒))

var fs = require('fs'); 
var spawn = require('child_process').spawn; 

var rtspURI = 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov'; 
var fps = 1/3; 
//avconv -i rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov \ 
// -r 1/3 -an -y -update 1 test.jpg 
var ffmpeg = spawn('avconv', ['-i',rtspURI,'-r',fps,'-an','-y','-update','1','test.jpg']); 
// var ffmpeg = spawn('avconv', 
// ['-i','rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov', 
// '-r','1/3','-an','-y','-update','1','test.jpg']); 

ffmpeg.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); 
}); 

ffmpeg.stderr.on('data', function (data) { 
    console.log('stderr: ' + data); 
}); 

ffmpeg.on('close', function (code) { 
    console.log('child process exited with code ' + code); 
}); 
+0

你上面的代码必须使用avconv而不是ffmepg,但也可以使用ffmpeg,并且需要更改参数。 – Xianlin