Warning! This is an implementation hint article. Read this first.
- Calls <device>GetCapabilities to obtain device capabilities and various endpoints
- Calls GetVideoSources to obtain a list of video sources. For one channel in Genius Vision NVR, only one video source will be used and it's determined by the Channel parameter (explained here) in NVR. Channel of value "1" designates the first video source, etc.
- Calls GetProfiles to obtain a list of media profiles. Each profile token will be listed in the available stream selection of Genius Vision NVR. Please note only those profiles matching the designated video source (as specified by Channel) will be used.
- Calls <ver20/imaging>GetOptions to obtain supported imaging options, if this call fails, the NVR will try to call <ver10/imaging>GetOptions instead. At this moment, an automatic protocol version detection of imaging service is performed and result is stored to an internal variable called ImagingVersion. The result of available imaging option will be listed on NVR.
- Compare NVR imaging settings against the camera settings (using the result of GetProfiles), the NVR will determine a list of imaging parameters that needs to be changed, and then calls <ver20/imaging>SetImagingSettings, or <ver10/imaging>SetImagingSettings, depend on ImagingVersion.
- Calls GetVideoEncoderConfigurationOptions for each stream configured. Available options will be listed on the NVR.
- Compare NVR video encoder settings against the camera settings (using the result of GetProfiles). NVR will then determine a list of video encoder settings that needs to be changed, and then calls SetVideoEncoderConfiguration.
- Calls GetStreamUri to obtain media URI, in order to get audio/video streaming, then use the designated parameter to invoke RTSP.
From the above we can understand that in order to properly support Genius Vision NVR, following ONVIF commands need to be implemented, but not all of them are mandatory. The mandatory commands are:
- <device>GetCapabilities - mandatory
- GetVideoSources - mandatory
- GetProfiles - mandatory
- GetStreamUri - mandatory
Lacking support of some commands will causes disabling of some NVR functions, but it can still work as a ordinary video camera:
- <ver20/imaging>GetOptions or <ver10/imaging>GetOptions - optional. Lacking support for this command causes NVR to disable all ImagingOptions functions.
- <ver20/imaging>SetImagingSettings or <ver10/imaging>SetImagingSettings - optional. Lacking support for this command causes NVR to disable all ImagingOptions functions.
- GetVideoEncoderConfigurationOptions - optional. Lacking support for this command causes NVR to disable all VideoEncoderOptions functions.
- SetVideoEncoderConfiguration - optional. Lacking support for this command causes NVR to disable all VideoEncoderOptions functions.