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

+ Recent posts