diff --git a/lib/modules/service-media.js b/lib/modules/service-media.js index de1a316..6fea61e 100644 --- a/lib/modules/service-media.js +++ b/lib/modules/service-media.js @@ -222,6 +222,65 @@ OnvifServiceMedia.prototype.getVideoEncoderConfiguration = function(params, call } }; +/* ------------------------------------------------------------------ +* Method: setVideoEncoderConfiguration(configuration, forcePersistence[callback]) +* - params: +* - configuration | Object | required | all camera configs +* - forcePersistence | Boolean | optional | deprecated - always considered to be true +* ---------------------------------------------------------------- */ +OnvifServiceMedia.prototype.setVideoEncoderConfiguration = function(configuration, forcePersistence, callback) { + let promise = new Promise((resolve, reject) => { + let soap_body = ''; + soap_body += ` + + ${configuration.Name} + ${configuration.UseCount} + ${configuration.Encoding} + + ${configuration.Resolution.Width} + ${configuration.Resolution.Height} + + ${configuration.Quality} + + ${configuration.RateControl.FrameRateLimit} + ${configuration.RateControl.EncodingInterval} + ${configuration.RateControl.BitrateLimit} + + + ${configuration.H264.GovLength} + ${configuration.H264.H264Profile} + + + + ${configuration.Multicast.Address.Type} + ${configuration.Multicast.Address.IPv4Address} + + ${configuration.Multicast.AutoStart} + ${configuration.Multicast.Port} + ${configuration.Multicast.TTL} + + ${configuration.SessionTimeout} + + ${forcePersistence !== undefined ? forcePersistence : true} + ` + let soap = this._createRequestSoap(soap_body); + mOnvifSoap.requestCommand(this.oxaddr, 'SetVideoEncoderConfiguration', soap).then((result) => { + resolve(result); + }).catch((error) => { + reject(error); + }); + }); + if(callback) { + promise.then((result) => { + callback(null, result); + }).catch((error) => { + callback(error); + }); + } else { + return promise; + } +}; + /* ------------------------------------------------------------------ * Method: getCompatibleVideoEncoderConfigurations(params[, callback]) * - params: @@ -1649,4 +1708,4 @@ OnvifServiceMedia.prototype.getSnapshotUri = function(params, callback) { } }; -module.exports = OnvifServiceMedia; \ No newline at end of file +module.exports = OnvifServiceMedia;