由于需要在web中播放摄像头视频, 源流是rtsp的。没用办法只有用ffmpeg来转一下码。服务端采用node + ffmpeg + nginx + nginx-http-flv-module
node写了一个接口,接收rtsp地址,然后运行ffmpeg命令将rtsp流转为rtmp流推给nginx。 然后网页就可以连接nginx的1935端口播放rtmp流。
nodejs中,我用child_process中的spawn来运行的命令,遇到的问题是刚运行命令后可以正常播放。 过一段时间后(几分钟)就不能播放了。用vlc播放器直接播放rtmp也不行,播放rtsp却可以。
我的代码是,没发现什么问题。
ps aux | grep ffmpeg 查看,进程都在。
var workerProcess = child_process.spawn('ffmpeg', ["你需要的参数"]);
workerProcess.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
workerProcess.on('close', function (code) {
console.log('子进程已退出,退出码 '+code);
});
然后抱着试一试的心态,把stderr加上的日志处理加上,播放视频就不会断了
workerProcess.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
真的是无语。不知道什么原因!!!