使用 nodejs ffmpeg 流式传输网络摄像头
stream webcam with nodejs ffmpeg
我正在尝试从本地网络摄像头生成 rtsp 流,
我一直在使用带有 fluent-ffmpeg 插件的 nodeJs,这是我的代码:
var ffmpeg = require('fluent-ffmpeg');
var proc = ffmpeg('/dev/video1')
//.format('h264')
.inputOptions([
'-f v4l2',
'-framerate 25',
'-video_size 640x480'
])
.outputOptions([
'-f rtsp',
'-rtsp_transport tcp',
'rtsp://localhost:7002/live.sdp'
])
//.output('rtsp://localhost:7002/live.sdp')
.on('end',function(msg){
console.log("finish ffmpeg command " + msg);
})
.on('err',function(err){
console.log("error found " + err);
});
在 localhost:7002 的另一边,我有一个 ffplay 主机,可以与这个 ffmpeg 命令完美配合:
ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video1 -f rtsp -rtsp_transport tcp rtsp://localhost:7002/live.sdp
(工作完美意味着主机服务,ffplay,从相机接收和播放流)
这是我的 ffplay 命令:
ffplay -rtsp_flags 听 rtsp://localhost:7002/live.sdp
我的 nodeJs 脚本有什么问题?
如何使用 fluent-ffmpeg 生成完全相同的 ffmpeg 命令?
已找到 work-around/different 解决此问题的方法:
我一直在使用这样的子进程:
child = exec("ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video1 -f rtsp -rtsp_transport tcp rtsp://localhost:7002/live.sdp",function(error,stdout,stderr){
sys.print('STDOUT: ',stdout);
sys.print('STDERR: ',stderr);
});
这应该可以,可惜没有人知道如何让 ffmpeg 工作
我正在尝试从本地网络摄像头生成 rtsp 流, 我一直在使用带有 fluent-ffmpeg 插件的 nodeJs,这是我的代码:
var ffmpeg = require('fluent-ffmpeg');
var proc = ffmpeg('/dev/video1')
//.format('h264')
.inputOptions([
'-f v4l2',
'-framerate 25',
'-video_size 640x480'
])
.outputOptions([
'-f rtsp',
'-rtsp_transport tcp',
'rtsp://localhost:7002/live.sdp'
])
//.output('rtsp://localhost:7002/live.sdp')
.on('end',function(msg){
console.log("finish ffmpeg command " + msg);
})
.on('err',function(err){
console.log("error found " + err);
});
在 localhost:7002 的另一边,我有一个 ffplay 主机,可以与这个 ffmpeg 命令完美配合:
ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video1 -f rtsp -rtsp_transport tcp rtsp://localhost:7002/live.sdp
(工作完美意味着主机服务,ffplay,从相机接收和播放流)
这是我的 ffplay 命令: ffplay -rtsp_flags 听 rtsp://localhost:7002/live.sdp
我的 nodeJs 脚本有什么问题? 如何使用 fluent-ffmpeg 生成完全相同的 ffmpeg 命令?
已找到 work-around/different 解决此问题的方法: 我一直在使用这样的子进程:
child = exec("ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video1 -f rtsp -rtsp_transport tcp rtsp://localhost:7002/live.sdp",function(error,stdout,stderr){
sys.print('STDOUT: ',stdout);
sys.print('STDERR: ',stderr);
});
这应该可以,可惜没有人知道如何让 ffmpeg 工作