Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
53 changes: 41 additions & 12 deletions doc/Replay.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
<info>
<title>Replay Control Service Specification</title>
<titleabbrev>Replay Control</titleabbrev>
<releaseinfo>21.12</releaseinfo>
<releaseinfo>26.12</releaseinfo>
<author>
<orgname>ONVIF™</orgname>
<uri>www.onvif.org</uri>
</author>
<pubdate>December 2021</pubdate>
<pubdate>December 2026</pubdate>
<mediaobject>
<imageobject>
<imagedata fileref="media/logo.png" contentwidth="60mm" />
</imageobject>
</mediaobject>
<copyright>
<year>2008-2021</year>
<year>2008-2026</year>
<holder>ONVIF™ All rights reserved.</holder>
</copyright>
<legalnotice>
Expand Down Expand Up @@ -86,6 +86,14 @@ Change Request 2054, 2065</revremark>
</author>
<revremark>Fix typo in commands names and role names.</revremark>
</revision>
<revision>
<revnumber>26.12</revnumber>
<date>Dec-2026</date>
<author>
<personname>Venki, Aravapalli</personname>
</author>
<revremark>SRTP Playback support added.</revremark>
</revision>
</revhistory>
</info>
<chapter>
Expand Down Expand Up @@ -180,8 +188,8 @@ Change Request 2054, 2065</revremark>
<chapter>
<title>Overview</title>
<para>The replay service provides a mechanism for replay of stored video, audio and metadata. This mechanism may also be used to download data from the storage device so that export functionality can be provided.</para>
<para>The replay protocol is based on RTSP [RFC 2326]. However because RTSP does not directly support all of the requirements for replay, several extensions have been added to the protocol. In particular, an RTP header extension is defined to allow an absolute timestamp to be associated with each access unit (e.g. video frame), and to convey information about stream continuity.</para>
<para>The GetReplayUri command in the replay service returns the RTSP URL of a recording to allow it to be replayed using RTSP.</para>
<para>The replay protocol is based on RTSP [RFC 2326] and SRTP [RFC 3711]. However because RTSP does not directly support all of the requirements for replay, several extensions have been added to the protocol. In particular, an RTP header extension is defined to allow an absolute timestamp to be associated with each access unit (e.g. video frame), and to convey information about stream continuity.</para>
<para>The GetReplayUri command in the replay service returns the RTSP or SRTP URL of a recording to allow it to be replayed using RTSP or SRTP protocol.</para>
<para>WSDL for this service is specified in <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.onvif.org/ver10/replay.wsdl">http://www.onvif.org/ver10/replay.wsdl</link>. The following table shows the namespace prefix mapping used throughout this specification.</para>
<table>
<title>Referenced namespaces (with prefix)</title>
Expand Down Expand Up @@ -245,18 +253,18 @@ Change Request 2054, 2065</revremark>
</chapter>
<chapter>
<title>Replay Control</title>
<para>This section defines a service for mapping replay endpoints to URI for use in RTSP.</para>
<para>This section defines a service for mapping replay endpoints to URI for use in RTSP or SRTP protocol.</para>
<section>
<title>GetReplayUri</title>
<para>GetReplayUri 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.</para>
<para>GetReplayUri requests a URI that can be used to initiate playback of a recorded stream using RTSP or RTSPS 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.</para>
<variablelist role="op">
<varlistentry>
<term>request</term>
<listitem>
<para role="param">StreamSetup [tt:StreamSetup]</para>
<para role="text">The StreamSetup element contains two parts. StreamType defines if a unicast or multicast media stream is requested. Transport specifies a chain of transport protocols defining the tunnelling of the media stream over different network protocols.</para>
<para role="param">RecordingToken [tt:RefernceToken]</para>
<para role="text">Indicates the recording to be streamed.</para>
<para role="param">StreamSetup [tt:ReplayStreamSetup]</para>
<para role="text">The ReplayStreamSetup element contains two parts. StreamType defines whether a unicast or multicast media stream is requested. Transport specifies a chain of transport protocols defining the tunnelling of the media stream over different network protocols. The optional SRTP flag, when set to true, indicates that SRTP playback streaming is requested.</para>
<para role="param">RecordingToken [tt:ReferenceToken]</para>
<para role="text">Indicates the recording to be streamed.</para>
</listitem>
</varlistentry>
<varlistentry>
Expand All @@ -275,6 +283,8 @@ Change Request 2054, 2065</revremark>
<para role="text">Specification of StreamType or Transport part in StreamSetup causes conflict with other streams.</para>
<para role="param">env:Sender - ter:InvalidArgVal - ter:NoRecording</para>
<para role="text">The recording does not exist.</para>
<para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidSRTPProtocol</para>
<para role="text">The specified SRTP protocol algorithm is not supported by the device.</para>
</listitem>
</varlistentry>
<varlistentry>
Expand All @@ -287,7 +297,7 @@ Change Request 2054, 2065</revremark>
</section>
<section>
<title>ReplayConfiguration</title>
<para>The ReplayConfiguration provides optional configuration information. Currently it only contains the deprecated RTSP SessionTimeout which can be controlled via the RTSP layer.</para>
<para>The ReplayConfiguration provides optional configuration information. Currently RTSP SessionTimeout is deprecated and can be controlled via the RTSP layer.</para>
</section>
<section>
<title>SetReplayConfiguration</title>
Expand Down Expand Up @@ -404,8 +414,27 @@ Change Request 2054, 2065</revremark>
over WebSocket and provides the WebSocket URI for replay as described in the ONVIF Streaming
Specification section 5.1.1.5.</para></listitem>
</varlistentry>
<varlistentry>
<term>SupportedSRTPProtocolAlgorithms</term>
<listitem><para>Indicates the list of supported cryptographic algorithms as defined by tt:SrtpSecurityAlgorithms if the device supports SRTP playback streaming.</para></listitem>
</varlistentry>
</variablelist>
</section>
<section>
<title>SRTP Playback - RTP Packet Layout</title>
<para>The following diagram illustrates the structure of an SRTP packet used by SRTP Playback Session.
It includes the RTP header, playback header extension, encrypted RTP payload, and the SRTP authentication tag. Encryption and authentication are handled via SRTP, as
specified in RFC 3711 for AES_CM_128_HMAC_SHA1_80, and in RFC 7714 for AEAD_AES_128_GCM and
AEAD_AES_256_GCM modes.</para>
<figure xml:id="_Ref474397193">
<title>Diagram of SRTP packet with Playback Header Extension</title>
<mediaobject>
<imageobject>
<imagedata fileref="media/Streaming/SRTPPlayback.svg" contentwidth="160.6mm" />
</imageobject>
</mediaobject>
</figure>
</section>
</chapter>
<appendix role="revhistory">
<title>Revision History</title>
Expand Down
Loading