RTP/UDP/SRT URL Format
Reading time ~6 minutes
Cinegy supports a number of IP video standards in our IP-enabled products. In order to access IP streams, an URL style string is used to describe them. Usually this URL is generated automatically, but sometimes for various reasons you may need to change this manually.
This document describes the URLs' format in more detail.
An IP video URL will always start with the type of stream you are expecting. Currently, rtp://, udp:// and srt:// are supported.
RTP and UDP
The RTP URL format description is given below in the general structure:
rtp://<StreamIP>:<Port>/?serviceId=<ProgramPid>&videoPid=<VideoStreamPid>&audioPids=<AudioStreamsPids>
Note
|
For the UDP URLs the resource type is "udp://". |
where:
StreamIP – defines the stream IP in the following format: [SourceIP][@MulticastIP]
.
It has the following meaning:
-
If only
SourceIP
is specified, unicast streaming from this IP will be used. -
If only
MulticastIP
is specified, the stream from this multicast group will be used, from any source. -
If both
SourceIP
andMulticastIP
are specified, the only source defined bySourceIP
from the specified multicast group will be used. -
If neither
SourceIP
norMulticastIP
is specified, data will be received from any source (i.e. sending it to the specified port).
Port – defines the port that will be used for streaming.
Caution
|
Port 8888 is the default service port used for connection with the Channel Directory Server; it cannot be used as a user-defined service port. |
ProgramPid – defines the program PID that will be used. If this parameter is not specified, the first program found in the stream will be used.
VideoStreamPid – defines the video stream PID in the program. If none is specified, the first available video stream PID will be used.
AudioStreamsPids – defines audio streams PIDs in the program divided by a comma (e.g. "audioPids=136,137").
Note
|
Setting the VideoStreamPid and AudioStreamsPids parameters is optional. |
SRT
With the increase in public cloud adoption and an ever more well-connected world to report from or hold events in, the arrival of an open technology that people can utilize to move signals around could not have been better timed. The technology we are talking about is an open-source video transport protocol.
With this protocol you can get the benefits normally enjoyed from working with traditional MPEG Transport Stream based I/O, but without the limits of multicast network configurations or worrying about packet loss with less reliable connections. This is a perfect technology for people looking to move into the cloud, or to reduce the footprint of multicast streaming around a datacenter or broadcast facility.
General Information
The Secure Reliable Transport protocol (SRT) allows broadcast video distribution encrypted across public networks. Created by Haivision and Wowza, when combined with Cinegy software, SRT offers remarkable low-latency performance and crystalline video clarity, irrespective of the distance between the source and destination.
We at Cinegy were quick to see the potential of SRT and it is now integrated into all our IP-enabled products. Cinegy Air, Cinegy Route, Cinegy Multiviewer and Cinegy Capture all have the possibility to input or output SRT streams and Cinegy software snaps together into a cloud-based broadcast infrastructure in minutes.
Configuration
The SRT protocol can act in two modes, as a caller or a listener, which differ dependent on the IPv4 address contained within the URL.
Note
|
Caller and listener modes should only be used in pairs, regardless of where they operate (transmit / receive). |
Caller Mode
In caller mode, a source or destination device acts as the initiator of an SRT connection. The caller device must know the IP address and port number of the listener. The URL in caller mode should contain the specific address of the source or destination for the SRT packets, for example:
srt://10.186.3.41:9000
In this case, an application requesting or sending the stream will reach out to the specified address and request that an SRT connection is made to the application on UDP port 9000. Before the request and in case the request is terminated or the connection is lost, no traffic will flow from the source to the receiver (unlike with a static unicast configuration where the sender continuously streams packets regardless of any receiver state). This is useful when defining and starting a new receiving operation without reconfiguration of a sender, for example, a mobile device requesting the output of the Cinegy Air engine or Cinegy Multiviewer over Wi-Fi or LTE, for a short confidence check of that output.
A further example is that the Cinegy Playout engine can be a caller into Cinegy Multiviewer and, conversely, Cinegy Multiviewer can be a caller into the Cinegy Playout Engine. In both scenarios the video data will always flow from the Cinegy Playout engine to Cinegy Multiviewer.
Listener Mode
In listener mode, a device waits for a request to open the SRT connection. The listener device waits for SRT requests on a certain port on either a specific or all network adapters. The URL for listener mode to use all local adapters will be:
srt://0.0.0.0:9000
Whereas, if the application needs to listen on a specific local address, simply replace the IP component with that of the desired network adapter.
In this case, the application listening will accept the first valid SRT connection sent to UDP port 9000. This allows a listener to wait for a calling device to choose to make a request, allowing the said application to wait in a configured state while the caller is set up or adjusted later. This is useful for defining the listener that can retain a static configuration at runtime while callers are altered, for example allowing Cinegy Multiviewer to listen for incoming streams from a mobile device or uplinked studio.
SRT Encryption
Cinegy products support encrypted SRT streams and will automatically decrypt them for you on input with an SRT passphrase specified in the dedicated field for output streams and directly in the input stream URL as follows:
srt://1.2.3.4:8888/?pass=AAAAABBBBB
or
srt://1.2.3.4:8888/?serviceId=2001&videoPid=2110&audioPids=2120&pass=AAAAABBBBB
Note
|
Please note that in accordance with SRT requirements, the passphrase length should be between 10 and 79 characters. |
SRT Latency
SRT protocol supports the concept of a delay buffer that provides an operating window for lost packets to be recovered. The value could be zero, if using only forward-error-correction modes (zero retransmissions) or it could be up to a few seconds. The SRT communication protocol works by both parties of the exchange sharing the latency parameters required for the recovery window, where the highest value of the two is taken as the value that shall be used for the duration of the session.
When using SRT with Cinegy products, latency may be controlled on any stream receiver through adjustment of the 'latency' URL parameter. Any stream generator starts with a default latency value of 120 milliseconds, and this acts as the lowest value for SRT latency any session may use when a Cinegy product is the source.
The receiving device requests an explicit latency by expressing the desired milliseconds of delay in the SRT URL:
srt://1.2.3.4:8888/?latency=250
This allows receivers to have a different error correction buffer depending on circumstance – a LAN-connected device might leave latency at the default (unspecified), but a 4G-connected devices might request 300 ms from the same source.
Caution
|
Note that latency values in excess of 4000 ms are not tested and may cause problems. |
Choosing what latency values are required is not simple, but should be at least 2x the RTT (round-trip-time) of the connection as a minimum. The RTT of the link can be estimated through use of tools like ping, or can be tracked through the SRT connection statistics exposed by the Cinegy Playout engine.