You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
const Stream = require('node-rtsp-stream') const args = [] const requestManager = function () { } requestManager.prototype = { Open: function (arg) { let result = {} if (args.length == 0) { result = this._create(arg) result = this._openVideo(result) } else { args.forEach(a => { if (a.rtspUrl == arg.rtspUrl) { result = a } }) if (result.port === undefined || result.rtspUrl === undefined) { result = this._create(arg) result = this._openVideo(result) } }
return result; }, Close: function (arg) { let result = {} let idx = -1 idx = args.findIndex(a => a.rtspUrl == arg.rtspUrl) if (idx !== -1) { args[idx].stream.stop() result = args.splice(idx, 1) } else {
} console.log(args) return result }, _randomPort: function () { let port = Math.floor(Math.random() * (4001 - 3001) + 3001) return port }, _openVideo: function (arg) { arg.stream = new Stream({ name: 'name', //streamUrl: 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov',
streamUrl: arg.rtspUrl, wsPort: arg.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
'-s': arg.size, '-codec:a': 'mp2', '-ar': 44100, '-ac': 1, '-b:a': '128k' } }) return arg }, _create: function (arg) { let target = { rtspUrl: 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov', port: this._randomPort(), size: '1024*768', stream: null } let source = { rtspUrl: arg.rtspUrl, port: this._randomPort(), size: arg.size, stream: null } Object.assign(target, source) args.push(target) return target }
}
module.exports = requestManager
|