AXIS S3008 Recorder currently works by fetching a media stream from the camera via RTSP. This media is then saved to the hard drive(s) in the same way as media is saved to an SD card on a camera. The configuration of this is similar to the configuration of SD card recording on a camera. The same APIs are used with the addition of the External IP Device API which is needed for the recorder to be able to connect to the camera.
Searching and exporting recordings is done via the same APIs as on a network camera.
Previous methods using CIFS/SMB will not be available on upcoming recorder products and will at some point be removed from AXIS S3008 Recorder firmware. Developers are advised to migrate to RTSP method instead.
The following is a list of some key APIs of AXIS S3008 Recorder. API documentation can be found in the Network Video section in the VAPIX Library. Most APIs are common with the camera platform, but not all. Especially note that AXIS S3008 Recorder does not support param.cgi.
APIs common with the camera platform
APIs unique to the recorder
Bonjour and UPnP are the same as Axis network cameras but with a different identifier. Bonjour: _axis-nvr._tcp (camera has _axis-video._tcp) UPnP: axis-com:service:BasicNvrService (camera has axis-com:service:BasicService)
When doing motion based recording the recorder is dependent on events coming from the camera itself. It does not implement its own motion detection algorithms or use any AXIS Camera Application Platform (ACAP) applications for this. The recorder needs to listen to the event stream coming from the camera to detect any Video Motion Detection (VMD) events generated by the camera. When seeing a VMD event in the event stream, the recorder generates its own event named 'UniversalMotionDetection'. It is similar to a camera VMD event, but it adds a device field so that is possible to see from which camera the motion event originated.
It is the responsibility of the video management software (VMS) to set correct stream options for the recorder to use when fetching media from a camera. Choosing, for example, an unsupported resolution option will cause the recording to fail. If a stream option for a given parameter is not set, the camera will choose its own default value. There are however a few stream options that are handled differently by the recorder since it needs to know them before requesting the stream. These streaming options are further described in the table below.
device | This option is special in that it is not intended for the camera, instead it tells the recorder which camera to connect to. It shall be set to an id of a previously created External IP Device Mandatory (has no default value) |
resolution | Default value set by recorder: 1920x1080 |
fps | Default value set by recorder: 30 |
videokeyframeinterval | Default value set by recorder: 64 |
audio | Tell the recorder if it shall fetch audio or not. If set to 1 an audio stream is fetched. If set to 0 audio is ignored. Default value set by recorder: 0 |
video | Same as audio but for video. Default value set by recorder: 1 |
Depending on the camera these default values might be invalid resulting in failure to retrieve the media. It is therefore recommended that the VMS always sets these stream options explicitly.
When configuring an event-based recording using a pre-buffer there are some restrictions on the use of certain Zipstream features. The reason is that for each pre-buffer the recorder needs to keep up to two entire GOP (Group of Pictures) segments in RAM. There is no exact upper limit since it depends on the bitrate, but it is recommended to not exceed 100 frames per GOP. The Zipstream parameters that are restricted are given by the following table with corresponding valid values:
Stream option | Valid values |
videozgopmode |
|
videozfpsmode |
|
It is possible to use GOP and FPS (Frames Per Second) mode simultaneously. The following is for example a valid combination videozgopmode=fixed&videokeyframeinterval=100&videozfpsmode=dynamic&videoframeskipmode=empty
The VMS should always set these stream options when configuring a recording rule using a pre-buffer.