SRT is available via separate package for Nimble Streamer. You need to install it in order to use this protocol.
Now you may proceed with the setup. You may define both transmission and reception settings so Nimble Streamer could be used on both ends of delivery chain.
A. Set up sending via SRT
Having any input via RTMP, RTSP, MPEG-TS or HLS, you may create outgoing SRT streams.
Go to
Nimble Streamer ->
Live streams settings menu. Click on
UDP streaming tab.
 |
UDP settings page. |
Click on
Add SRT setting button to see the following dialog for creating a new SRT channel.
 |
Adding new SRT channel transmission. |
IP and
Port fields define the destination of your channel.
Mode field may be set to either
Push or
Listen - those are the modes supported by SRT.
- Push will initiate the active sending of the selected channel to the destination IP/Port regardless of the recipient state. This is also referred to as "Caller" mode.
- Listen will make Nimble Streamer connect to destination IP/Port and will wait for the Pull command from remote server.
Mux rate is typically used for precise testing of channel throughput.
Read this article for all details regarding mux rate setup.
Source applications names, streams names and their respective PMT PIDs, Video PIDs and Audio PIDs describe where the content is taken from for further transmission. You may define
multiple sources - in this case SRT channel will have multiple streams in it.
In addition to mandatory parameters you may specify
custom parameters and their values.
Custom parameters
maxbw parameter (measured in bytes per second) defines maximum bandwidth which is allowed to be used by a single outgoing stream. If the network connection is not stable enough then a lot of SRT packets will be re-transmitted within a period specified by
latency. The more streams from same server are used in unstable network, the more packets are lost and need to be re-transmitted. As a result, entire network becomes utilized. If
maxbw parameter is set then even if network conditions are bad, each stream will not consume more than it's allowed to.
So
maxbw needs to include original stream bandwidth and possible re-transmission traffic.
We highly recommend setting
maxbw parameter to avoid excessive bandwidth usage.
Please read this article for more details.
latency parameter can be defined in milliseconds. We recommend setting it not less than "120". If you don't specify, Nimble will use 120 by default as set in SRT library. This specified delay causes an extra "wasted time" if the packet reached the destination quickly (and therefore it's way ahead of "time to play"), but when it was lost, this gives it an extra time to recover the packet before its "time to play" comes.
We highly encourage using
both "
latency" and "
maxbw" parameters.
Please read this article for all details.
passphrase and
pbkeylen parameters are available to enable
encryption for processed streams. The
passphrase must be at least 10 symbols long - this is your password. The
pbkeylen may be set to
16, 24 or 32 with 16 used by default. If these parameters are set during the transmission, you need to re-start the stream in order for encryption parameters to apply. Same set of parameters and values must be defined for both sender and receiver parts.
local_ip and
local_port parameters define which interface will be used for sending the stream in Push mode.
stream_id can also be specified in case your receiving side supports it.
Once you save the settings, they will be added to the list and will be synced with the server.
 |
Setting is being synced. |
One-to-many multipoint listener
Multiple Pull-mode clients may request stream when Nimble Streamer provides SRT in "Listen" mode, like
TechEx or
mwEdge software. So in order to provide multiple streams in that case, you need to enable multipoint listener feature by adding this parameter into Nimble config:
srt_multipoint_listener_enabled = true
Read configuration parameters reference for more details about managing Nimble Streamer parameters.
Now you may receive content via SRT on your destination. As we already mentioned, Nimble can be used to receive the SRT streams so let's see how you can do that.
B. Set up receiving of SRT
Having SRT input, you may transmux it into RTMP, RTSP, MPEG-TS, HLS, MPEG-DASH or even Icecast outgoing streams.
Add incoming stream
Go to
Nimble Streamer ->
Live streams settings menu. Click on
MPEGTS In tab.
 |
MPEGTS settings |
Click on
Add SRT stream button to see the following dialog for creating a new incoming SRT channel.
 |
Add SRT input stream. |
Receive mode specifies the mode used for obtaining the stream.
- Listen sets Nimble to wait for incoming data and process it as soon as it arrives. Your source needs to be set "Push" mode - see previous section.
- Pull sets Nimble to initiate the source server to start sending the data. Your source needs to be set to Listen mode.
IP Address and
Port fields specify which interface will be used for connection.
Alias is the name that will be used in incoming streams list.
You should also use
latency parameter, you also need to specify it in
custom parameters.
Read this article for get more details about this parameter usage.
Once you save the setting, it will be started for sync-up with your server.
 |
SRT stream added. |
So you specified incoming stream, now you need to add it to
outgoing streams, like it's done for any
other MPEG-TS streams. This needs to be done because each SRT channel may carry several streams. You may check
Add outgoing stream checkbox to enter app and stream names to make it automatically.
Add outgoing stream
Go to
MPEGTS Out tab to see the list of outgoing streams. Click on
Add outgoing stream.
Here you will define the names of applications and streams which will be used for playback and other use cases. You will select video and audio sources and if they have multiple streams in a single channel, then you'll select the required ones.
Read this article for more details about adding outgoing streams.
To play the SRT stream, go to
Nimble Streamer ->
Live Streams menu, select the outgoing streams to see what your server now has to offer for playback.
C. Setting up Rendezvous mode
Rendezvous mode is an addition to the modes described above. It allows streaming over SRT in case if one of both sides of send-receive pair use firewalls.
Each side needs local and remote interfaces to be set up:
Local IP with
Local Port and
Remote IP with
Remote Port.
These interfaces are used for initiating the transmission and exchanging the data.
- Sender side will send data to Receiver Local IP/port.
- Receiver side will send data to Sender Local IP/port during initial negotiation.
You can refer to
SRT Deployment Guide (the link will start download) to get more details about it.
The description below shows how you can set up the Rendezvous mode.
Sending in Rendezvous mode
To set up SRT sending you need to go to
Nimble Streamer ->
Live Streams Settings menu. You will see settings page, click on
UDP streaming tab there. You will see a page similar to what you saw in
Set up sending via SRT section above. Click on
Add SRT setting button to see the dialog. there you need to choose
Rendezvous from Mode dropdown list.
Here, a pair of 192.168.0.2 and its port is a Local interface of our server which is a source of a stream to send. The Remote pair is the destination.
Receiving in Rendezvous mode
Go to
Nimble Streamer ->
Live streams settings menu. Click on
MPEGTS In tab to see a page similar to what you saw in
Set up receiving of SRT section above. Click on
Add SRT stream to see the dialog below. Select
Rendezvous from the
Mode drop-down.
Here, a pair of Remote IP and Port will point to a source of the stream, a pair of Local IP and Port will point to current receiver server. The rest of the setup is done the same way as in
Set up receiving of SRT section.
That's it - your Nimble Streamer instance may now get live streams via SRT.
We keep improving this feature set, so
let us know if you have any questions or concerns about it.
SRT Publisher Assistance Security Set
Nimble Streamer has flexible security and management feature set for SRT receiver Listen mode:
- Accept streamid parameter with "application/stream" format.
- Make per-application and per-stream authentication with user and password.
- Apply any SRT parameters to each individual stream and even individual publisher.
- Apply allow and deny lists for IP addresses on server and stream level.
- Manage published streams via publish control framework.
Read more details in feature overview.
Related documentation
SRT support in Nimble Streamer,
Live streaming scenarios,
Live Transcoder,
SRT in other Softvelum products