1. node.js rtsp 패키지 설치
npm install node-rtsp-stream
2. node_modules/node-rtsp-stream/mpeg1muxer.js 편집
var Mpeg1Muxer, child_process, events, util
child_process = require('child_process')
util = require('util')
events = require('events')
Mpeg1Muxer = function(options) {
...
this.spawnOptions = [
// "-i",
// this.url,
// '-f',
// 'mpegts',
// '-codec:v',
// 'mpeg1video',
// // additional ffmpeg options go here
// ...this.additionalFlags,
// '-'
"-rtsp_transport", "tcp", "-i",
this.url,
'-f',
'mpeg1video',
'-b:v', '1000k',
'-maxrate', '1000k',
'-bufsize', '1000k',
'-an', '-r', '24',
// additional ffmpeg options go here
...this.additionalFlags,
'-'
]
...
}
util.inherits(Mpeg1Muxer, events.EventEmitter)
module.exports = Mpeg1Muxer
3. iptime CCTV (rtsp 프로토콜) 웹소켓 node.js 서버 스크립트 작성
const Stream = require('node-rtsp-stream')
var rtspList = [
{"url":"rtsp://계정:패스워드@plugin.iptimecam.com:0000/stream_ch00_","port":웹소켓포트,"stream":null}
];
var rtspListLength = rtspList.length;
for(var i=0; i<rtspListLength; i++){
openStream(rtspList[i]);
}
function openStream(obj){
var stream = new Stream({
name: 'name',
streamUrl : obj.url,
wsPort: obj.port,
ffmpegOptions: { // options ffmpeg flags
'-stats': '', // an option with no neccessary value uses a blank string
'-r': 30, // options with required values specify the value after the key
}
});
stream.mpeg1Muxer.on('exitWithError',()=>{
stream.stop();
openStream(obj);
});
stream.mpeg1Muxer.on('ffmpegStderr', (data)=>{
data = data.toString();
if(data.includes('muxing overhead')){
stream.stop();
openStream(obj);
}
});
}
출처 : https://devshoveling.tistory.com/entry/npm-node-rtsp-stream
'Node.js' 카테고리의 다른 글
SSL인증서 + Proxy 설정 (포트 포워드) (0) | 2023.02.06 |
---|