July 6, 2017

Setting SRT in Nimble Streamer

Secure Reliable Transport (SRT) is a transport technology that optimizes streaming performance across unpredictable networks. It's applied to contribution and distribution endpoints as part of a video stream workflow to deliver the best quality and lowest latency video at all times.

As audio/video packets are streamed from a source to a destination device, SRT detects and adapts to the real-time network conditions between the two endpoints. SRT helps compensate for jitter and bandwidth fluctuations due to congestion over noisy networks, such as the Internet. Its error recovery mechanism minimizes the packet loss typical of Internet connections. AES 128/256 bit encryption is also supported for end-to-end security, keeping your streams safe from prying eyes.

Our company, Softvelum LLC, became a member of SRT Alliance which is a group dedicated to managing and supporting the open source implementation of SRT. This alliance is accelerating interoperability of video streaming solutions and fostering collaboration with industry leaders to achieve lower latency Internet video transport. Softvelum is actively contributing to the community to improve the protocol and its ecosystem.

Nimble Streamer has full support for SRT:
  • Both Push and Listen delivery modes are supported.
  • Both Listen and Pull receive modes can be used to get SRT streams for further processing.
  • Custom "latency" parameter is supported for fine tuning.
  • Multiple streams can be sent via single SRT channel.
  • Mux rate can be set correctly - Nimble Streamer has 100% PCR accuracy, 0ns PCR drift and PCR interval <20 ms according to StreamGuru. This is typically used for precise testing of channel throughput.
  • AES 128 bit encryption provides stream security.

Using Nimble Streamer transmuxing engine, you may create any supported live protocol output from SRT, as well as receive any of them  to create SRT.

Let's see how SRT can be enabled and used in Nimble Streamer.

Install SRT package


SRT is available via separate package for Nimble Streamer. You need to install it in order to use this protocol.
  1. Install Nimble Streamer or upgrade it to latest version.
  2. Follow this instruction to install SRT package.
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.

Set up transmission 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.
  • 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. At the moment only latency parameter can be set up, it's defined in milliseconds. We recommend setting it not less than "120". If you don't specify, Nimble will use 120 by default. 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. You may also read this thread to find out more details.

Once you save the settings, they will be added to the list and will be synced with the server.

Setting is being synced.

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.

Set up reception 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.

Adding SRT 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.

If your source channel uses latency parameter, you also need to specify in it custom parameters.

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.

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.

That's it - your Nimble Streamer instance may now get live streams via SRT.

The received SRT streams can be used in other live streaming capabilities as well as be used as input for Live Transcoder so you can build any content delivery scenarios with Nimble Streamer.


We keep improving this feature set, so let us know if you have any questions or concerns about it.


If you find our products useful, please find some time to vote for Softvelum solutions in European Readers' Choice Awards 2017.


Related documentation


SRT support in Nimble Streamer, Live streaming scenarios, Live Transcoder

11 comments:

  1. Hi - this is great news!

    Currently looking to test. I updated according to the instructions above. Now have nimble server 3.2.5-1 + nimble-srt 1.0.0-1. Is there any activation process to get it to show SRT options in WMSpanel?

    Cheers!

    ReplyDelete
    Replies
    1. Hi,

      The UI will be deployed on Monday. Thanks for your patience.

      Delete
    2. RIP this weekend's show!

      But this is great to hear :) I'm looking forward to testing!

      Delete
    3. OK, it's now online - follow the instruction above to set it up. In case of questions, contact our engineers via https://wmspanel.com/help

      Delete
  2. Hi,
    thanks a lot for your interest! We will deploy UI in the Monday and you will be able to test new SRT transport.

    ReplyDelete
  3. Hello , I will be moving an h265 MPTS to be played from the destination network using brightsign players. Any recommendations ?

    Also hoping to use resberry pi for destination transmux device What demands on that hardware are expected with 4 audio pairs and 2 videos totaling 25 mbits ??

    I don't really expect the pie to work but version 3 is strong .... Thoughts ??

    ReplyDelete
  4. Hi,
    we don't support SRT for raspberry pi now so please consider linux/Windows for now

    ReplyDelete
  5. hello,
    Can I send an MPTS using SRT or is it required to be broken up into individual streams ?

    ReplyDelete
    Replies
    1. Thanks for great question!
      Nimble can send and get MPTS over SRT and we hope this ability will be very welcomed among our clients

      Delete
  6. does the windows install version of nimble streamer automatically include SRT functionality ?

    ReplyDelete
    Replies
    1. No, it's not included. You need to install it separately: https://wmspanel.com/nimble/srt_install#os_windows

      Delete