diff --git a/ONVIF IO/module.php b/ONVIF IO/module.php
index c159e44..0e1c157 100644
--- a/ONVIF IO/module.php
+++ b/ONVIF IO/module.php
@@ -600,11 +600,11 @@ protected function StartConnection()
//Fallback für reine Profile S Geräte
$VideoSources = $this->GetVideoSources($XAddr[\ONVIF\NS::Media], \ONVIF\WSDL::Media); // array of Token
if ($VideoSources) {
- $NbrOfVideoSources = count($VideoSources['VideoSources']);
+ $NbrOfVideoSources = count($VideoSources);
}
$AudioSources = $this->GetAudioSources($XAddr[\ONVIF\NS::Media], \ONVIF\WSDL::Media); // array of Token
if ($AudioSources) {
- $NbrOfAudioSources = count($AudioSources['AudioSources']);
+ $NbrOfAudioSources = count($AudioSources);
}
$DigitalInputs = $this->GetDigitalInputs($XAddr[\ONVIF\NS::Management], \ONVIF\WSDL::Management);
if (!$DigitalInputs) {
@@ -1669,11 +1669,11 @@ protected function GetVideoSources($Uri, $WSDL)
if (is_a($VideoSources, 'SoapFault')) {
return false;
}
- if (!is_array($VideoSources)) {
+ if (!is_array($VideoSources->VideoSources)) {
$Result = [];
- $Result[] = json_decode(json_encode($VideoSources), true);
+ $Result[] = json_decode(json_encode($VideoSources->VideoSources), true);
} else {
- $Result = json_decode(json_encode($VideoSources), true);
+ $Result = json_decode(json_encode($VideoSources->VideoSources), true);
}
return $Result;
}
@@ -1683,11 +1683,11 @@ protected function GetAudioSources($Uri, $WSDL)
if (is_a($AudioSources, 'SoapFault')) {
return false;
}
- if (!is_array($AudioSources)) {
+ if (!is_array($AudioSources->AudioSources)) {
$Result = [];
- $Result[] = json_decode(json_encode($AudioSources), true);
+ $Result[] = json_decode(json_encode($AudioSources->AudioSources), true);
} else {
- $Result = json_decode(json_encode($AudioSources), true);
+ $Result = json_decode(json_encode($AudioSources->AudioSources), true);
}
return $Result;
}
@@ -1775,12 +1775,14 @@ protected function GetServices(): bool
$xml = new DOMDocument();
$xml->loadXML($Response);
- $this->SendDebug('TEST', $Response, 0);
$xPath = new DOMXPath($xml);
foreach ($ServicesResult as $Service) {
$XAddr[$Service['Namespace']] = parse_url($Service['XAddr'], PHP_URL_PATH);
$NSKey = array_search($Service['Namespace'], \ONVIF\NS::Namespaces);
+ if (!$NSKey) {
+ continue;
+ }
$xPath->registerNamespace($NSKey, $Service['Namespace']);
switch ($Service['Namespace']) {
diff --git a/library.json b/library.json
index 8cebfed..33cc7b4 100644
--- a/library.json
+++ b/library.json
@@ -6,7 +6,7 @@
"compatibility": {
"version": "6.1"
},
- "version": "2.16",
- "build": 216,
- "date": 1706551768
+ "version": "2.17",
+ "build": 217,
+ "date": 1706078839
}
\ No newline at end of file
diff --git a/libs/WSDL/ver10/analyticsdevice.wsdl b/libs/WSDL/ver10/analyticsdevice.wsdl
new file mode 100644
index 0000000..898b767
--- /dev/null
+++ b/libs/WSDL/ver10/analyticsdevice.wsdl
@@ -0,0 +1,714 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The capabilities for the analytics device service is returned in the Capabilities element.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the Analytics Engine Control configuration to be deleted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Settings of the configurations to be created.
+
+
+
+
+
+
+
+
+
+
+
+ Configurations containing token generated.
+
+
+
+
+
+
+
+
+
+
+ Settings of the Analytics Engine Control configuration to be created. Mode shall be set to "idle".
+
+
+
+
+
+
+
+
+
+
+ Configuration containing token generated.
+
+
+
+
+
+
+
+
+
+
+ Contains the modified Analytics Engine Control configuration.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the requested AnalyticsEngineControl configuration.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the AnalyticsEngineControl.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ List of available AnalyticsEngineControl configurations.
+
+
+
+
+
+
+
+
+
+
+ Token of the requested AnalyticsEngine configuration.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the AnalyticsEngine.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ List of available AnalyticsEngine configurations.
+
+
+
+
+
+
+
+
+
+
+ Contains the modified video analytics configuration. The configuration shall exist in the device.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Contains the modified Analytics Engine Input configuration. The configuration shall exist in the device.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the requested AnalyticsEngineInput configuration.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the AnalyticsEngineInput.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ List of available AnalyticsEngineInput configurations.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the URI requested.
+
+
+
+
+ Token of the AnalyticsEngineControl whose URI is requested.
+
+
+
+
+
+
+
+
+
+
+ Streaming URI.
+
+
+
+
+
+
+
+
+
+
+ Token of the VideoAnalyticsConfiguration requested.
+
+
+
+
+
+
+
+
+
+
+ Settings of the VideoAnalyticsConfiguration.
+
+
+
+
+
+
+
+
+
+
+ LIst of tokens of Analytics Engine Input configurations to be deleted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the AnalyticsEngineControl whose state information is requested.
+
+
+
+
+
+
+
+
+
+
+ Current status information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the capabilities of the analytics device service. The result is returned in a typed answer.
+
+
+
+
+ DeleteAnalyticsEngineControl shall delete a control object .
+
+
+
+
+ CreateAnalyticsEngineControl shall create a new control object.
+
+
+
+
+ This command modifies the AnalyticsEngineControl configuration.
+
+
+
+
+ The GetAnalyticsEngineControl command fetches the analytics engine control if the analytics engine control token is known.
+
+
+
+
+ This operation lists all available analytics engine controls for the device.
+
+
+
+
+ The GetAnalyticsEngine command fetches the analytics engine configuration if the token is known.
+
+
+
+
+ This operation lists all available analytics engine configurations for the device.
+
+
+
+
+ A video analytics configuration is modified using this command.
+
+
+
+
+ This command modifies the analytics engine input configuration.
+
+
+
+
+ The GetAnalyticsEngineInput command fetches the input configuration if the analytics engine input configuration token is known.
+
+
+
+
+ This operation lists all available analytics engine input configurations for the device.
+
+
+
+
+ This operation requests a URI that can be used to initiate a live stream using RTSP as the control protocol if the token of the AnalyticsEngineControl is known.
+
+
+
+
+ The GetVideoAnalyticsConfiguration command fetches the video analytics configuration if the video analytics configuration token is known.
+
+
+
+
+ This command generates one or more analytics engine input configurations.
+
+
+
+
+ This command deletes analytics engine input configurations if the tokens are known.
+
+
+
+
+ GetAnalyticsState returns status information of the referenced AnalyticsEngineControl object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/WSDL/ver10/recording.wsdl b/libs/WSDL/ver10/recording.wsdl
new file mode 100644
index 0000000..c50193a
--- /dev/null
+++ b/libs/WSDL/ver10/recording.wsdl
@@ -0,0 +1,1174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The capabilities for the recording service is returned in the Capabilities element.
+
+
+
+
+
+
+
+
+
+
+
+
+ Indication if the device supports dynamic creation and deletion of recordings
+
+
+
+
+ Indication if the device supports dynamic creation and deletion of tracks
+
+
+
+
+ Indication which encodings are supported for recording. The list may contain one or more enumeration values of tt:VideoEncoding and tt:AudioEncoding. For encodings that are neither defined in tt:VideoEncoding nor tt:AudioEncoding the device shall use the IANA defintions. Note, that a device without audio support shall not return audio encodings.
+
+
+
+
+ Maximum supported bit rate for all tracks of a recording in kBit/s.
+
+
+
+
+ Maximum supported bit rate for all recordings in kBit/s.
+
+
+
+
+ Maximum number of recordings supported. (Integer values only.)
+
+
+
+
+ Maximum total number of supported recording jobs by the device.
+
+
+
+
+ Indication if the device supports the GetRecordingOptions command.
+
+
+
+
+ Indication if the device supports recording metadata.
+
+
+
+
+
+ Indication that the device supports ExportRecordedData command for the listed export file formats.
+ The list shall return at least one export file format value. The value of 'ONVIF' refers to
+ ONVIF Export File Format specification.
+
+
+
+
+
+ Indication that the device supports event triggered recording.
+
+
+
+
+
+ If present a device shall support configuring before event durations up to the given value.
+
+
+
+
+
+
+ If present a device shall support configuring after event durations up to the given value.
+
+
+
+
+
+
+ List of formats supported by the device for recording to an external target.
+ See tt:TargetFormat for a list of definitions.
+
+
+
+
+
+
+ Number of encryption entries supported per recording.
+ By specifying multiple encryption entries per recording, different tracks can be encrypted with different configurations.
+
+
+
+
+
+
+ Indicates supported encryption modes.
+ See tt:EncryptionMode for a list of definitions.
+
+
+
+
+
+
+
+
+
+
+
+
+ Initial configuration for the recording.
+
+
+
+
+
+
+
+
+
+
+ The reference to the created recording.
+
+
+
+
+
+
+
+
+
+
+ The reference of the recording to be deleted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ List of recording items.
+
+
+
+
+
+
+
+
+
+
+ Token of the recording that shall be changed.
+
+
+
+
+ The new configuration.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the configuration to be retrieved.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the recording.
+
+
+
+
+
+
+
+
+
+
+ Identifies the recording to which a track shall be added.
+
+
+
+
+ The configuration of the new track.
+
+
+
+
+
+
+
+
+
+
+ The TrackToken shall identify the newly created track. The
+ TrackToken shall be unique within the recoding to which
+ the new track belongs.
+
+
+
+
+
+
+
+
+
+
+ Token of the recording the track belongs to.
+
+
+
+
+ Token of the track to be deleted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the recording the track belongs to.
+
+
+
+
+ Token of the track.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the track.
+
+
+
+
+
+
+
+
+
+
+ Token of the recording the track belongs to.
+
+
+
+
+ Token of the track to be modified.
+
+
+
+
+ New configuration for the track.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The initial configuration of the new recording job.
+
+
+
+
+
+
+
+
+
+
+ The JobToken shall identify the created recording job.
+
+
+
+
+
+ The JobConfiguration structure shall be the configuration as it is used by the device. This may be different from the
+ JobConfiguration passed to CreateRecordingJob.
+
+
+
+
+
+
+
+
+
+
+ The token of the job to be deleted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ List of recording jobs.
+
+
+
+
+
+
+
+
+
+
+ Token of the job to be modified.
+
+
+
+
+ New configuration of the recording job.
+
+
+
+
+
+
+
+
+
+
+ The JobConfiguration structure shall be the configuration
+ as it is used by the device. This may be different from the JobConfiguration passed to SetRecordingJobConfiguration.
+
+
+
+
+
+
+
+
+
+
+ Token of the recording job.
+
+
+
+
+
+
+
+
+
+
+ Current configuration of the recording job.
+
+
+
+
+
+
+
+
+
+
+ Token of the recording job.
+
+
+
+
+ The new mode for the recording job.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token of the recording job.
+
+
+
+
+
+
+
+
+
+
+ The current state of the recording job.
+
+
+
+
+
+
+
+
+
+
+ Token of the recording.
+
+
+
+
+
+
+
+
+
+
+ Configuration of the recording.
+
+
+
+
+
+
+
+
+
+
+
+
+ Optional parameter that specifies start time for the exporting.
+
+
+
+
+ Optional parameter that specifies end time for the exporting.
+
+
+
+
+ Indicates the selection criterion on the existing recordings. .
+
+
+
+
+ Indicates which export file format to be used.
+
+
+
+
+ Indicates the target storage and relative directory path.
+
+
+
+
+
+
+
+
+
+
+ Unique operation token for client to associate the relevant events.
+
+
+
+
+ List of exported file names. The device can also use AsyncronousOperationStatus event to publish this list.
+
+
+
+
+
+
+
+ Extensibility point.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unique ExportRecordedData operation token
+
+
+
+
+
+
+
+
+
+
+ Progress percentage of ExportRecordedData operation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unique ExportRecordedData operation token
+
+
+
+
+
+
+
+
+
+
+ Progress percentage of ExportRecordedData operation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Number of spare jobs that can be created for the recording.
+
+
+
+
+ A device that supports recording of a restricted set of Media/Media2 Service Profiles returns the list of profiles that can be recorded on the given Recording.
+
+
+
+
+
+
+
+ Total spare number of tracks that can be added to this recording.
+
+
+
+
+ Number of spare Video tracks that can be added to this recording.
+
+
+
+
+ Number of spare Aduio tracks that can be added to this recording.
+
+
+
+
+ Number of spare Metadata tracks that can be added to this recording.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the capabilities of the recording service. The result is returned in a typed answer.
+
+
+
+
+ CreateRecording shall create a new recording. The new recording shall be created with a track
+ for each supported TrackType see Recording Control Spec.
+ This method is optional. It shall be available if the Recording/DynamicRecordings capability is TRUE.
+ When successfully completed, CreateRecording shall have created three tracks with the following configurations:
+ -
+ TrackToken TrackType
+ -
+ VIDEO001 Video
+ -
+ AUDIO001 Audio
+ -
+ META001 Metadata
+
+ All TrackConfigurations shall have the MaximumRetentionTime set to 0 (unlimited), and the
+ Description set to the empty string.
+
+
+
+
+
+ DeleteRecording shall delete a recording object. Whenever a recording is deleted, the device
+ shall delete all the tracks that are part of the recording, and it shall delete all the Recording
+ Jobs that record into the recording. For each deleted recording job, the device shall also
+ delete all the receiver objects associated with the recording job that are automatically created
+ using the AutoCreateReceiver field of the recording job configuration structure and are not
+ used in any other recording job.
+ This method is optional. It shall be available if the Recording/DynamicRecordings capability is TRUE.
+
+
+
+
+
+ GetRecordings shall return a description of all the recordings in the device. This description
+ shall include a list of all the tracks for each recording.
+
+
+
+
+ SetRecordingConfiguration shall change the configuration of a recording.
+
+
+
+
+ GetRecordingConfiguration shall retrieve the recording configuration for a recording.
+
+
+
+
+ GetRecordingOptions returns information for a recording identified by the RecordingToken. The information includes the number of additonal tracks as well as recording jobs that can be configured.
+
+
+
+
+ This method shall create a new track within a recording.
+ This method is optional. It shall be available if the Recording/DynamicTracks capability is TRUE.
+ A TrackToken in itself does not uniquely identify a specific track. Tracks within different
+ recordings may have the same TrackToken.
+
+
+
+
+
+ DeleteTrack shall remove a track from a recording. All the data in the track shall be deleted.
+ This method is optional. It shall be available if the Recording/DynamicTracks capability is
+ TRUE.
+
+
+
+
+ GetTrackConfiguration shall retrieve the configuration for a specific track.
+
+
+
+
+ SetTrackConfiguration shall change the configuration of a track.
+
+
+
+
+ CreateRecordingJob shall create a new recording job.
+ The JobConfiguration returned from CreateRecordingJob shall be identical to the
+ JobConfiguration passed into CreateRecordingJob, except for the ReceiverToken and the
+ AutoCreateReceiver. In the returned structure, the ReceiverToken shall be present and valid
+ and the AutoCreateReceiver field shall be omitted.
+
+
+
+
+
+ DeleteRecordingJob removes a recording job. It shall also implicitly delete all the receiver
+ objects associated with the recording job that are automatically created using the
+ AutoCreateReceiver field of the recording job configuration structure and are not used in any
+ other recording job.
+
+
+
+
+ GetRecordingJobs shall return a list of all the recording jobs in the device.
+
+
+
+
+ SetRecordingJobConfiguration shall change the configuration for a recording job.
+ SetRecordingJobConfiguration shall implicitly delete any receiver objects that were created
+ automatically if they are no longer used as a result of changing the recording job configuration.
+
+
+
+
+
+ GetRecordingJobConfiguration shall return the current configuration for a recording job.
+
+
+
+
+ SetRecordingJobMode shall change the mode of the recording job. Using this method shall be
+ equivalent to retrieving the recording job configuration, and writing it back with a different
+ mode.
+
+
+
+
+ GetRecordingJobState returns the state of a recording job. It includes an aggregated state,
+ and state for each track of the recording job.
+
+
+
+
+
+
+ Exports the selected recordings (from existing recorded data) to the given storage target based on the requested file format.
+
+
+
+
+
+
+ Stops the selected ExportRecordedData operation.
+
+
+
+
+
+
+ Retrieves the status of selected ExportRecordedData operation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/WSDL/ver10/replay.wsdl b/libs/WSDL/ver10/replay.wsdl
new file mode 100644
index 0000000..a537049
--- /dev/null
+++ b/libs/WSDL/ver10/replay.wsdl
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The capabilities for the replay service is returned in the Capabilities element.
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicator that the Device supports reverse playback as defined in the ONVIF Streaming Specification.
+
+
+
+
+ The list contains two elements defining the minimum and maximum valid values supported as session timeout in seconds.
+
+
+
+
+ Indicates support for RTP/RTSP/TCP.
+
+
+
+
+ If playback streaming over WebSocket is supported, this shall return the RTSP WebSocket URI as described in Streaming Specification Section 5.1.1.5.
+
+
+
+
+
+
+
+
+
+
+
+ Specifies the connection parameters to be used for the stream. The URI that is returned may depend on these parameters.
+
+
+
+
+ The identifier of the recording to be streamed.
+
+
+
+
+
+
+
+
+
+
+ The URI to which the client should connect in order to stream the recording.
+
+
+
+
+
+
+
+
+
+
+ Description of the new replay configuration parameters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The current replay configuration parameters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the capabilities of the replay service. The result is returned in a typed answer.
+
+
+
+
+
+ Requests a URI that can be used to initiate playback of a recorded stream
+ using RTSP as the control protocol. The URI is valid only as it is
+ specified in the response.
+ A device supporting the Replay Service shall support the GetReplayUri command.
+
+
+
+
+
+
+ Returns the current configuration of the replay service.
+ This operation is mandatory.
+
+
+
+
+
+
+ Changes the current configuration of the replay service.
+ This operation is mandatory.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/WSDL/ver10/search.wsdl b/libs/WSDL/ver10/search.wsdl
new file mode 100644
index 0000000..74d0361
--- /dev/null
+++ b/libs/WSDL/ver10/search.wsdl
@@ -0,0 +1,887 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The capabilities for the search service is returned in the Capabilities element.
+
+
+
+
+
+
+
+
+
+
+
+ Indicates support for general virtual property events in the FindEvents method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Scope defines the dataset to consider for this search.
+
+
+
+
+ The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires.
+
+
+
+
+ The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets results from a particular recording listingession.
+
+
+
+
+
+ The search session to get results from.
+
+
+
+
+ The minimum number of results to return in one response.
+
+
+
+
+ The maximum number of results to return in one response.
+
+
+
+
+ The maximum time before responding to the request, even if the MinResults parameter is not fulfilled.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Starts a search session and specifies the search parameters.
+
+
+
+
+
+ The point of time where the search will start.
+
+
+
+
+ The point of time where the search will stop. This can be a time before the StartPoint, in which case the search is performed backwards in time.
+
+
+
+
+
+
+ Setting IncludeStartState to true means that the server should return virtual events representing the start state for any recording included in the scope. Start state events are limited to the topics defined in the SearchFilter that have the IsProperty flag set to true.
+
+
+
+
+ The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires.
+
+
+
+
+ The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds.
+
+
+
+
+
+
+
+
+
+
+ A unique reference to the search session created by this request.
+
+
+
+
+
+
+
+
+ Gets results from a particular search session.
+
+
+
+
+
+ The search session to get results from.
+
+
+
+
+ The minimum number of results to return in one response.
+
+
+
+
+ The maximum number of results to return in one response.
+
+
+
+
+ The maximum time before responding to the request, even if the MinResults parameter is not fulfilled.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Starts a search session and specifies the search parameters.
+
+
+
+
+
+ The point of time where the search will start.
+
+
+
+
+ The point of time where the search will stop. This can be a time before the StartPoint, in which case the search is performed backwards in time.
+
+
+
+
+
+
+ The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires.
+
+
+
+
+ The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds.
+
+
+
+
+
+
+
+
+
+
+ A unique reference to the search session created by this request.
+
+
+
+
+
+
+
+
+ Gets results from a particular search session.
+
+
+
+
+
+ The search session to get results from.
+
+
+
+
+ The minimum number of results to return in one response.
+
+
+
+
+ The maximum number of results to return in one response.
+
+
+
+
+ The maximum time before responding to the request, even if the MinResults parameter is not fulfilled.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Starts a search session and specifies the search parameters.
+
+
+
+
+
+ The point of time where the search will start.
+
+
+
+
+ The point of time where the search will stop. This can be a time before the StartPoint, in which case the search is performed backwards in time.
+
+
+
+
+
+
+ The search will be completed after this many matches. If not specified, the search will continue until reaching the endpoint or until the session expires.
+
+
+
+
+ The time the search session will be kept alive after responding to this and subsequent requests. A device shall support at least values up to ten seconds.
+
+
+
+
+
+
+
+
+
+
+ A unique reference to the search session created by this request.
+
+
+
+
+
+
+
+
+ Gets results from a particular search session.
+
+
+
+
+
+ The search session to get results from.
+
+
+
+
+ The minimum number of results to return in one response.
+
+
+
+
+ The maximum number of results to return in one response.
+
+
+
+
+ The maximum time before responding to the request, even if the MinResults parameter is not fulfilled.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the state of an ongoing search session.
+
+
+
+
+
+ The search session to get the state from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ends an ongoing search session, freeing any resources.
+
+
+
+
+
+ The search session to end.
+
+
+
+
+
+
+
+
+
+
+ The point of time the search had reached when it was ended. It is equal to the EndPoint specified in Find-operation if the search was completed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the capabilities of the search service. The result is returned in a typed answer.
+
+
+
+
+
+ GetRecordingSummary is used to get a summary description of all recorded data. This
+ operation is mandatory to support for a device implementing the recording search service.
+
+
+
+
+
+ Returns information about a single Recording specified by a RecordingToken. This operation
+ is mandatory to support for a device implementing the recording search service.
+
+
+
+
+
+ Returns a set of media attributes for all tracks of the specified recordings at a specified point
+ in time. Clients using this operation shall be able to use it as a non blocking operation. A
+ device shall set the starttime and endtime of the MediaAttributes structure to equal values if
+ calculating this range would causes this operation to block. See MediaAttributes structure for
+ more information. This operation is mandatory to support for a device implementing the
+ recording search service.
+
+
+
+
+
+ FindRecordings starts a search session, looking for recordings that matches the scope (See
+ 20.2.4) defined in the request. Results from the search are acquired using the
+ GetRecordingSearchResults request, specifying the search token returned from this request.
+ The device shall continue searching until one of the following occurs:
+ - The entire time range from StartPoint to EndPoint has been searched through.
+ - The total number of matches has been found, defined by the MaxMatches parameter.
+ - The session has been ended by a client EndSession request.
+ - The session has been ended because KeepAliveTime since the last request related to
+ this session has expired.
+
+ The order of the results is undefined, to allow the device to return results in any order they
+ are found. This operation is mandatory to support for a device implementing the recording
+ search service.
+
+
+
+
+
+ GetRecordingSearchResults acquires the results from a recording search session previously
+ initiated by a FindRecordings operation. The response shall not include results already
+ returned in previous requests for the same session. If MaxResults is specified, the response
+ shall not contain more than MaxResults results. The number of results relates to the number of recordings.
+ For viewing individual recorded data for a signal track use the FindEvents method.
+ GetRecordingSearchResults shall block until:
+ -
+ MaxResults results are available for the response if MaxResults is specified.
+ - MinResults results are available for the response if MinResults is specified.
+ - WaitTime has expired.
+ - Search is completed or stopped.
+
+ This operation is mandatory to support for a device implementing the recording search service.
+
+
+
+
+
+ FindEvents starts a search session, looking for recording events (in the scope that
+ matches the search filter defined in the request. Results from the search are
+ acquired using the GetEventSearchResults request, specifying the search token returned from
+ this request.
+ The device shall continue searching until one of the following occurs:
+ -
+ The entire time range from StartPoint to EndPoint has been searched through.
+ - The total number of matches has been found, defined by the MaxMatches parameter.
+ - The session has been ended by a client EndSession request.
+ - The session has been ended because KeepAliveTime since the last request related to
+ this session has expired.
+
+ Results shall be ordered by time, ascending in case of forward search, or descending in case
+ of backward search. This operation is mandatory to support for a device implementing the
+ recording search service.
+
+
+
+
+
+ GetEventSearchResults acquires the results from a recording event search session previously
+ initiated by a FindEvents operation. The response shall not include results already returned in
+ previous requests for the same session. If MaxResults is specified, the response shall not
+ contain more than MaxResults results.
+ GetEventSearchResults shall block until:
+ -
+ MaxResults results are available for the response if MaxResults is specified.
+ - MinResults results are available for the response if MinResults is specified.
+ - WaitTime has expired.
+ - Search is completed or stopped.
+
+ This operation is mandatory to support for a device implementing the recording search service.
+
+
+
+
+
+ FindPTZPosition starts a search session, looking for ptz positions in the scope (See 20.2.4)
+ that matches the search filter defined in the request. Results from the search are acquired
+ using the GetPTZPositionSearchResults request, specifying the search token returned from
+ this request.
+ The device shall continue searching until one of the following occurs:
+ -
+ The entire time range from StartPoint to EndPoint has been searched through.
+ - The total number of matches has been found, defined by the MaxMatches parameter.
+ - The session has been ended by a client EndSession request.
+ - The session has been ended because KeepAliveTime since the last request related to
+ this session has expired.
+
+ This operation is mandatory to support whenever CanContainPTZ is true for any metadata
+ track in any recording on the device.
+
+
+
+
+
+ GetPTZPositionSearchResults acquires the results from a ptz position search session
+ previously initiated by a FindPTZPosition operation. The response shall not include results
+ already returned in previous requests for the same session. If MaxResults is specified, the
+ response shall not contain more than MaxResults results.
+ GetPTZPositionSearchResults shall block until:
+ -
+ MaxResults results are available for the response if MaxResults is specified.
+ - MinResults results are available for the response if MinResults is specified.
+ - WaitTime has expired.
+ - Search is completed or stopped.
+
+ This operation is mandatory to support whenever CanContainPTZ is true for any metadata
+ track in any recording on the device.
+
+
+
+
+
+ GetSearchState returns the current state of the specified search session. This command is deprecated .
+
+
+
+
+
+ EndSearch stops and ongoing search session, causing any blocking result request to return
+ and the SearchToken to become invalid. If the search was interrupted before completion, the
+ point in time that the search had reached shall be returned. If the search had not yet begun,
+ the StartPoint shall be returned. If the search was completed the original EndPoint supplied
+ by the Find operation shall be returned. When issuing EndSearch on a FindRecordings request the
+ EndPoint is undefined and shall not be used since the FindRecordings request doesn't have
+ StartPoint/EndPoint. This operation is mandatory to support for a device implementing the
+ recording search service.
+
+
+
+
+
+
+ FindMetadata starts a search session, looking for metadata in the scope (See 20.2.4) that
+ matches the search filter defined in the request. Results from the search are acquired using
+ the GetMetadataSearchResults request, specifying the search token returned from this
+ request.
+ The device shall continue searching until one of the following occurs:
+ -
+ The entire time range from StartPoint to EndPoint has been searched through.
+ - The total number of matches has been found, defined by the MaxMatches parameter.
+ - The session has been ended by a client EndSession request.
+ - The session has been ended because KeepAliveTime since the last request related to
+ this session has expired.
+
+ This operation is mandatory to support if the MetaDataSearch capability is set to true in the
+ SearchCapabilities structure return by the GetCapabilities command in the Device service.
+
+
+
+
+
+ GetMetadataSearchResults acquires the results from a recording search session previously
+ initiated by a FindMetadata operation. The response shall not include results already returned
+ in previous requests for the same session. If MaxResults is specified, the response shall not
+ contain more than MaxResults results.
+ GetMetadataSearchResults shall block until:
+ -
+ MaxResults results are available for the response if MaxResults is specified.
+ - MinResults results are available for the response if MinResults is specified.
+ - WaitTime has expired.
+ - Search is completed or stopped.
+
+ This operation is mandatory to support if the MetaDataSearch capability is set to true in the
+ SearchCapabilities structure return by the GetCapabilities command in the Device service.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/wsdl.php b/libs/wsdl.php
index 984f333..ad1159c 100644
--- a/libs/wsdl.php
+++ b/libs/wsdl.php
@@ -17,6 +17,10 @@ class WSDL
public const DeviceIO = 'ver10/deviceio.wsdl';
public const Imaging = 'ver20/imaging/wsdl/imaging.wsdl';
public const Analytics = 'ver20/analytics/wsdl/analytics.wsdl';
+ public const AnalyticsDevice = 'ver10/analyticsdevice.wsdl';
+ public const Recording = 'ver10/recording.wsdl';
+ public const SearchRecording = 'ver10/search.wsdl';
+ public const Replay = 'ver10/replay.wsdl';
}
/**
* Namespaces ONVIF, SOAP & XML
@@ -31,40 +35,49 @@ class NS
public const DeviceIO = 'http://www.onvif.org/ver10/deviceIO/wsdl';
public const Imaging = 'http://www.onvif.org/ver20/imaging/wsdl';
public const Analytics = 'http://www.onvif.org/ver20/analytics/wsdl';
+ public const AnalyticsDevice = 'http://www.onvif.org/ver10/analyticsdevice/wsdl';
+ public const Recording = 'http://www.onvif.org/ver10/recording/wsdl';
+ public const SearchRecording = 'http://www.onvif.org/ver10/search/wsdl';
+ public const Replay = 'http://www.onvif.org/ver10/replay/wsdl';
public const Addressing = 'http://www.w3.org/2005/08/addressing';
+
// all other NS
public const Namespaces = [
- 's' => 'http://www.w3.org/2003/05/soap-envelope',
- 'e' => 'http://www.w3.org/2003/05/soap-encoding',
- 'wsa' => self::Addressing,
- 'xs' => 'http://www.w3.org/2001/XMLSchema',
- 'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
- 'wsaw' => 'http://www.w3.org/2006/05/addressing/wsdl',
- 'wsnt' => 'http://docs.oasis-open.org/wsn/b-2',
- 'wstop' => 'http://docs.oasis-open.org/wsn/t-1',
- 'wsntw' => 'http://docs.oasis-open.org/wsn/bw-2',
- 'wsrf-rw'=> 'http://docs.oasis-open.org/wsrf/rw-2',
- 'wsrf-r' => 'http://docs.oasis-open.org/wsrf/r-2',
- 'wsrf-bf'=> 'http://docs.oasis-open.org/wsrf/bf-2',
- 'wsdl' => 'http://schemas.xmlsoap.org/wsdl',
- 'wsoap12'=> 'http://schemas.xmlsoap.org/wsdl/soap12',
- 'http' => 'http://schemas.xmlsoap.org/wsdl/http',
- 'd' => 'http://schemas.xmlsoap.org/ws/2005/04/discovery',
- 'wsadis' => 'http://schemas.xmlsoap.org/ws/2004/08/addressing',
- 'tt' => 'http://www.onvif.org/ver10/schema',
- 'tns1' => 'http://www.onvif.org/ver10/topics',
- 'tds' => self::Management,
- 'trt' => self::Media,
- 'tev' => self::Event,
- 'timg' => self::Imaging,
- 'tst' => 'http://www.onvif.org/ver10/storage/wsdl',
- 'dn' => 'http://www.onvif.org/ver10/network/wsdl',
- 'tr2' => self::Media2,
- 'tptz' => self::PTZ,
- 'tan' => self::Analytics,
- 'axt' => 'http://www.onvif.org/ver20/analytics',
- 'tmd' => self::DeviceIO,
- 'ter' => 'http://www.onvif.org/ver10/error'
+ 's' => 'http://www.w3.org/2003/05/soap-envelope',
+ 'e' => 'http://www.w3.org/2003/05/soap-encoding',
+ 'wsa' => self::Addressing,
+ 'xs' => 'http://www.w3.org/2001/XMLSchema',
+ 'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
+ 'wsaw' => 'http://www.w3.org/2006/05/addressing/wsdl',
+ 'wsnt' => 'http://docs.oasis-open.org/wsn/b-2',
+ 'wstop' => 'http://docs.oasis-open.org/wsn/t-1',
+ 'wsntw' => 'http://docs.oasis-open.org/wsn/bw-2',
+ 'wsrf-rw' => 'http://docs.oasis-open.org/wsrf/rw-2',
+ 'wsrf-r' => 'http://docs.oasis-open.org/wsrf/r-2',
+ 'wsrf-bf' => 'http://docs.oasis-open.org/wsrf/bf-2',
+ 'wsdl' => 'http://schemas.xmlsoap.org/wsdl',
+ 'wsoap12' => 'http://schemas.xmlsoap.org/wsdl/soap12',
+ 'http' => 'http://schemas.xmlsoap.org/wsdl/http',
+ 'd' => 'http://schemas.xmlsoap.org/ws/2005/04/discovery',
+ 'wsadis' => 'http://schemas.xmlsoap.org/ws/2004/08/addressing',
+ 'dn' => 'http://www.onvif.org/ver10/network/wsdl',
+ 'axt' => 'http://www.onvif.org/ver20/analytics',
+ 'tad' => self::AnalyticsDevice,
+ 'tan' => self::Analytics,
+ 'tds' => self::Management,
+ 'tev' => self::Event,
+ 'ter' => 'http://www.onvif.org/ver10/error',
+ 'timg' => self::Imaging,
+ 'tmd' => self::DeviceIO,
+ 'tptz' => self::PTZ,
+ 'tns1' => 'http://www.onvif.org/ver10/topics',
+ 'trp' => self::Replay,
+ 'trt' => self::Media,
+ 'tse' => self::SearchRecording,
+ 'tst' => 'http://www.onvif.org/ver10/storage/wsdl',
+ 'tr2' => self::Media2,
+ 'trc' => self::Recording,
+ 'tt' => 'http://www.onvif.org/ver10/schema',
];
}