Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
4ea4f5c
Define new ListRecordingSegments API
jflevesque-genetec Apr 2, 2024
f77c1f7
Add export segment API
jflevesque-genetec Apr 23, 2024
93373a3
Update wsdl
jflevesque-genetec Apr 25, 2024
7cf26eb
Update doc and add storage strategy
jflevesque-genetec May 23, 2024
fe536ee
Add annex
jflevesque-genetec Jun 5, 2024
c1175a8
Change segments API to use RecordingToken instead of RecordingJobToken
jflevesque-genetec Jul 9, 2024
5855d97
Add video source token to the RecordingSourceInformation
jflevesque-genetec Jul 9, 2024
786e45f
Update search API to have paging for ListRecordedSegments
jflevesque-genetec Jul 9, 2024
e06ee90
Update ExportRecordedSegments API to have paging
jflevesque-genetec Jul 9, 2024
62ee7ba
Add optional override storage configuration for export segments
jflevesque-genetec Sep 11, 2024
a9c3b02
Remove dependency on Device Mgmt by using StorageToken
jflevesque-genetec Sep 11, 2024
a97698b
Apply F2F suggestions for export
jflevesque-genetec Sep 12, 2024
b5acbfb
Apply suggestion for Search API from F2F
jflevesque-genetec Sep 12, 2024
7f39c1c
Move ListRecordedSegments from RecordingSearch to RecordingControl
jflevesque-genetec Oct 3, 2024
8d6e74c
Changed should to shall in export annex
jflevesque-genetec Oct 7, 2024
14fd86d
Add missing param in the specification
jflevesque-genetec Oct 22, 2024
f4aa907
Rename OmitSeqNumber to ForceZeroCounter
jflevesque-genetec Oct 22, 2024
891e81d
Fix a typo
jflevesque-genetec Nov 12, 2024
ae2d752
Fix namespaces from move from search service
jflevesque-genetec Nov 14, 2024
e8e971b
Minor updates based on San Diego F2F and prototyping
jflevesque-genetec Nov 20, 2024
f8cbb24
Update doc/RecordingControl.xml
jflevesque-genetec Feb 5, 2025
3453071
Update doc/RecordingControl.xml
jflevesque-genetec Feb 5, 2025
c5c9483
Update doc/RecordingControl.xml
jflevesque-genetec Feb 5, 2025
0110c68
Merge with override. Move StorageStrategy before the ##any
jmelancongen Mar 4, 2025
a3576f8
Unify maximum number of results request parameter and make it everywh…
HansBusch Mar 24, 2025
217dbe3
Segment Playback XML syntax fixes (#540)
HansBusch Apr 2, 2025
4b0beb7
Fix StopExportRecordedSegments response. VisualStudio needs empty seq…
HansBusch Apr 3, 2025
fe0dc83
Combine encapsulate response parameters. (#550)
HansBusch Apr 3, 2025
7e2ee39
Use xs:string for passing tt:TrackType to workaround Visual Studio op…
HansBusch Apr 8, 2025
b8b9f28
Improve export specification requirements (#541)
HansBusch Apr 15, 2025
26b4785
Document storage strategy and add configuration faults in case of mis…
HansBusch May 8, 2025
8442815
Remove requirement for StoragePath.
HansBusch May 14, 2025
45f15f7
Add fault section for ListRecordedSegments
jflevesque-genetec May 28, 2025
1bea111
Add another fault code
jflevesque-genetec May 28, 2025
7c7328d
Fix typo
jflevesque-genetec May 29, 2025
17fe7ed
Include optional alias when exporting segments
jflevesque-genetec Jun 5, 2025
834126a
Remove GetExportRecordedSegmentsState
jflevesque-genetec Jun 5, 2025
a37357c
Reword when the event is being raised
jflevesque-genetec Jun 5, 2025
e78d3cb
Add any element
jflevesque-genetec Jun 5, 2025
af89896
Fix typo
jflevesque-genetec Jun 5, 2025
f7bd8cb
Change Alias to SimpleItem
jflevesque-genetec Jun 13, 2025
4d9b29a
Merge pull request #582 from onvif/video/segment-based-playback-remov…
jflevesque-genetec Jul 15, 2025
4e63de6
Merge pull request #581 from onvif/video/segment-based-playback-alias
jflevesque-genetec Jul 15, 2025
0ec54a6
Clarify wording for ExportRecordedSegments
jflevesque-genetec Aug 12, 2025
f92f02a
Finish clean up of wsdl for stuff related to GetExportRecordedSegment…
jflevesque-genetec Sep 24, 2025
97d6d82
Update revision history
jflevesque-genetec Oct 2, 2025
eff0940
Add Fault if StorageStrategy is not supported
jflevesque-genetec Oct 2, 2025
5cb71af
Clarified StorageStrategy usage
jflevesque-genetec Oct 2, 2025
e3a3e75
Add clarification for segment inclusion based on time range
jflevesque-genetec Oct 2, 2025
49f72ab
Clean up leftover mentions for stuff that were dropped
jflevesque-genetec Oct 2, 2025
3fe8f7d
Replace must by shall
jflevesque-genetec Oct 2, 2025
a61ce1a
Merge development into branch
jflevesque-genetec Oct 2, 2025
4fdd421
Fix document
jmelancongen Oct 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions doc/Core.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6627,14 +6627,15 @@ onvif://www.onvif.org/name/ARV-453
<programlisting><![CDATA[Topic: tns1:Monitoring/AsynchronousOperationStatus
<tt:MessageDescription IsProperty="true">
<tt:Source>
<tt:SimpleItemDescription Name=Token" Type=tt:ReferenceToken"/>
<tt:SimpleItemDescription Name=OperationName" Type=xs:string"/>
<tt:SimpleItemDescription Name=ServiceName" Type=xs:string/>
<tt:SimpleItemDescription Name="Token" Type="tt:ReferenceToken"/>
<tt:SimpleItemDescription Name="OperationName" Type="xs:string"/>
<tt:SimpleItemDescription Name="ServiceName" Type="xs:string"/>
</tt:Source>
<tt:Data>
<tt:SimpleItemDescription Name=“Progress" Type="xs:float"/> <!– [0.0,1.0] -- >
<tt:ElementItemDescription Name=“FileProgressStatus" Type=“tt:ArrayOfFileProgress"/> <!– optional ->
<tt:ElementItemDescription Name=“Error" Type=“soapenv:Fault"/> <!– optional ->
<tt:SimpleItemDescription Name="Progress" Type="xs:float"/> <!– [0.0,1.0] -- >
<tt:ElementItemDescription Name="FileProgressStatus" Type="tt:ArrayOfFileProgress"/> <!– optional ->
<tt:ElementItemDescription Name="Error" Type="soapenv:Fault"/> <!– optional ->
<tt:SimpleItemDescription Name="Alias" Type="xs:string"/> <!– optional ->
</tt:Data>
</tt:MessageDescription>
]]></programlisting>
Expand Down
274 changes: 271 additions & 3 deletions doc/RecordingControl.xml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/RecordingSearch.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1476,7 +1476,7 @@ http://www.onvif.org/ver10/tptz/ZoomSpaces/PositionGenericSpace
<appendix>
<title>Deprecated Interfaces</title>
<section>
<title>A.1 Method for returning search status</title>
<title>Method for returning search status</title>
<para>The definition and interface for the returning search status have been deprecated with release 16.06. The following interfaces have been removed from the specification:</para>
<itemizedlist>
<listitem>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
203 changes: 200 additions & 3 deletions wsdl/ver10/recording.wsdl
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,13 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SegmentExport" type="xs:boolean">
<xs:annotation>
<xs:documentation>
Indicates support for ExportRecordedSegments.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
<xs:element name="Capabilities" type="trc:Capabilities"/>
Expand Down Expand Up @@ -594,7 +601,6 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="StopExportRecordedData">
<xs:complexType>
<xs:sequence>
Expand Down Expand Up @@ -623,7 +629,6 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="GetExportRecordedDataState">
<xs:complexType>
<xs:sequence>
Expand Down Expand Up @@ -653,6 +658,134 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
</xs:complexType>
</xs:element>

<!--===============================-->
<xs:element name="ListRecordedSegments">
<xs:annotation>
<xs:documentation>Gets segments available within a time range.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Time" type="tt:DateTimeRange">
<xs:annotation>
<xs:documentation>The start to end time of the query.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RecordingToken" type="tt:RecordingReference">
<xs:annotation>
<xs:documentation>The recording configuration token.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MaxResults" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>The maximum number of results to return in one response.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ListRecordedSegmentsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="Results" type="trc:SegmentListResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="SegmentListResult">
<xs:sequence>
<xs:element name="Segment" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Information about an exportable segment.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="StartTime" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Same precision as defined in the Recording Control specification for segment objects.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="EndTime" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Same precision as defined in the Recording Control specification for segment objects.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MediaType" type="xs:string">
<xs:annotation>
<xs:documentation>As defined in RFC 6381 including section 3 Codecs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first ONVIF then Vendor -->
</xs:sequence>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="HasMoreResults" type="xs:boolean" minOccurs="1">
<xs:annotation>
<xs:documentation>A value indicating that the search has reached the maximum count and a new request must be sent to continue the search.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="ExportRecordedSegments">
<xs:complexType>
<xs:sequence>
<xs:element name="Time" type="tt:DateTimeRange">
<xs:annotation>
<xs:documentation>The start to end time of the query.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RecordingToken" type="tt:RecordingReference">
<xs:annotation>
<xs:documentation>The recording configuration token.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Alias" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>An optional alias that shall be included in the Monitoring/AsynchronousOperationStatus events.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="StorageToken" type="tt:ReferenceToken" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>If provided, overrides the Target's storage configuration.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Track" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>An optional track filter for segments to export when in CMAF. For valid definitions see tt:TrackType.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first ONVIF then Vendor -->
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ExportRecordedSegmentsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="OperationToken" type="tt:ReferenceToken">
<xs:annotation>
<xs:documentation>Unique operation token for client to query the status of the export.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="StopExportRecordedSegments">
<xs:complexType>
<xs:sequence>
<xs:element name="OperationToken" type="tt:ReferenceToken">
<xs:annotation>
<xs:documentation>Unique ExportRecordedSegments operation token</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StopExportRecordedSegmentsResponse">
<xs:complexType>
<xs:sequence/>
</xs:complexType>
</xs:element>

<!--===============================-->
<xs:complexType name="RecordingOptions">
<xs:sequence>
Expand Down Expand Up @@ -833,13 +966,30 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
<wsdl:message name="GetRecordingJobStateResponse">
<wsdl:part name="parameters" element="trc:GetRecordingJobStateResponse"/>
</wsdl:message>

<wsdl:message name="ListRecordedSegments">
<wsdl:part name="parameters" element="trc:ListRecordedSegments"/>
</wsdl:message>
<wsdl:message name="ListRecordedSegmentsResponse">
<wsdl:part name="parameters" element="trc:ListRecordedSegmentsResponse"/>
</wsdl:message>
<wsdl:message name="ExportRecordedSegments">
<wsdl:part name="parameters" element="trc:ExportRecordedSegments"/>
</wsdl:message>
<wsdl:message name="ExportRecordedSegmentsResponse">
<wsdl:part name="parameters" element="trc:ExportRecordedSegmentsResponse"/>
</wsdl:message>
<wsdl:message name="ExportRecordedDataRequest">
<wsdl:part name="parameters" element="trc:ExportRecordedData"/>
</wsdl:message>
<wsdl:message name="ExportRecordedDataResponse">
<wsdl:part name="parameters" element="trc:ExportRecordedDataResponse"/>
</wsdl:message>
<wsdl:message name="StopExportRecordedSegments">
<wsdl:part name="parameters" element="trc:StopExportRecordedSegments"/>
</wsdl:message>
<wsdl:message name="StopExportRecordedSegmentsResponse">
<wsdl:part name="parameters" element="trc:StopExportRecordedSegmentsResponse"/>
</wsdl:message>
<wsdl:message name="StopExportRecordedDataRequest">
<wsdl:part name="parameters" element="trc:StopExportRecordedData"/>
</wsdl:message>
Expand Down Expand Up @@ -994,6 +1144,26 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
<wsdl:output message="trc:GetRecordingJobStateResponse"/>
</wsdl:operation>

<!--===============================-->
<wsdl:operation name="ListRecordedSegments">
<wsdl:documentation>Lists available recorded segments related to the specified RecordingToken.</wsdl:documentation>
<wsdl:input message="trc:ListRecordedSegments"/>
<wsdl:output message="trc:ListRecordedSegmentsResponse"/>
</wsdl:operation>
<wsdl:operation name="ExportRecordedSegments">
<wsdl:documentation>
Exports the selected recorded segments (from existing recorded data) to the storage attached to the given recording configuration.
</wsdl:documentation>
<wsdl:input message="trc:ExportRecordedSegments"/>
<wsdl:output message="trc:ExportRecordedSegmentsResponse"/>
</wsdl:operation>
<wsdl:operation name="StopExportRecordedSegments">
<wsdl:documentation>
Stops the selected ExportRecordedSegments operation.
</wsdl:documentation>
<wsdl:input message="trc:StopExportRecordedSegments"/>
<wsdl:output message="trc:StopExportRecordedSegmentsResponse"/>
</wsdl:operation>
<wsdl:operation name="ExportRecordedData">
<wsdl:documentation>
Exports the selected recordings (from existing recorded data) to the given storage target based on the requested file format.
Expand Down Expand Up @@ -1225,6 +1395,33 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ListRecordedSegments">
<soap:operation soapAction="http://www.onvif.org/ver10/recording/wsdl/ListRecordedSegments"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExportRecordedSegments">
<soap:operation soapAction="http://www.onvif.org/ver10/recording/wsdl/ExportRecordedSegments"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="StopExportRecordedSegments">
<soap:operation soapAction="http://www.onvif.org/ver10/recording/wsdl/StopExportRecordedSegments"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>

</wsdl:binding>
<!--===============================-->
Expand Down
37 changes: 36 additions & 1 deletion wsdl/ver10/schema/onvif.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -7723,6 +7723,11 @@ and sample rate. </xs:documentation>
<xs:documentation>URI provided by the service supplying data to be recorded. A device shall support at least 128 characters.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VideoSourceToken" type="tt:ReferenceToken" minOccurs="0">
<xs:annotation>
<xs:documentation>The video source token of all recordings that will use this configuration.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->
</xs:sequence>
<xs:anyAttribute processContents="lax"/>
Expand Down Expand Up @@ -7886,10 +7891,40 @@ and sample rate. </xs:documentation>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StorageStrategy" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Strategy to be used on how to store recordings, see tt:StorageStrategy for allowed values. If undefined, defaults to External.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first ONVIF then Vendor -->
</xs:sequence>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
<xs:simpleType name="StorageStrategy">
<xs:restriction base="xs:string">
<xs:enumeration value="External">
<xs:annotation>
<xs:documentation>Indicates that device must record to the storage defined by the StorageConfiguration token.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Local">
<xs:annotation>
<xs:documentation>
Indicates that device must record on its local storage and can export recorded data to the external
storage using ExportRecordedSegments.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Both">
<xs:annotation>
<xs:documentation>
Indicates that device must record on both local storage and external storage and locally recorded data can
be exported if connectivity issue prevented export to external storage during normal operation.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<!--===============================-->
<xs:simpleType name="RecordingStatus">
<xs:restriction base="xs:string">
Expand Down Expand Up @@ -8117,7 +8152,7 @@ and sample rate. </xs:documentation>
</xs:element>
<xs:element name="MaximumRetentionTime" type="xs:duration">
<xs:annotation>
<xs:documentation>Sspecifies the maximum time that data in any track within the
<xs:documentation>Specifies the maximum time that data in any track within the
recording shall be stored. The device shall delete any data older than the maximum retention
time. Such data shall not be accessible anymore. If the MaximumRetentionPeriod is set to 0,
the device shall not limit the retention time of stored data, except by resource constraints.
Expand Down
2 changes: 1 addition & 1 deletion wsdl/ver10/search.wsdl
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
<!--===============================-->
<xs:element name="GetRecordingSearchResults">
<xs:annotation>
<xs:documentation>Gets results from a particular recording listingession.</xs:documentation>
<xs:documentation>Gets results from a particular recording listing session.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
Expand Down
2 changes: 1 addition & 1 deletion wsdl/ver20/media/wsdl/media.wsdl
Original file line number Diff line number Diff line change
Expand Up @@ -797,7 +797,7 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
<xs:sequence>
<xs:element name="Encoding" type="xs:string">
<xs:annotation>
<xs:documentation>Video Media Subtype for the video format. For definitions see tt:VideoEncodingMimeNames and <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#video"> IANA Media Types</a>.</xs:documentation>
<xs:documentation>Video Media Subtype for the video format. For definitions see tt:VideoEncodingMimeNames and <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#video"> IANA Media Types</a>.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Number" type="xs:int">
Expand Down