April 20, 2020

RIST protocol in Nimble Streamer

RIST (Reliable Internet Streaming Transport) protocol is a new protocol for low-latency live video over un-managed networks. You can find out more about this protocol in RIST website. RIST is developed and promoted by RIST Forum where Softvelum is an affiliate member.

RIST is available via libRIST open-source library so Softvelum uses it to integrate this technology into Nimble Streamer media server. We give our customers all delivery options available on the market so libRIST is now one more delivery protocol in our stack.


Nimble Streamer allows both receiving (Listen and Pull) and sending (Listen and Push) RIST streams.

All supported protocols can be used as input for re-packaging into RIST: SRT, RTMP, RTSP, MPEGTS, HLS and Icecast.

Having any RIST input stream, it can be re-packaged into all supported output protocols: HLS, MPEG-DASH, SRT, RTMP, RTSP, MPEGTS and Icecast, as well as recorded into DVR.

This article describes the steps to set up RIST streaming via Nimble Streamer.

Install Nimble Streamer and RIST package


RIST is available via separate package for Nimble Streamer. You need to install it in order to use this protocol.
  1. Sign up for WMSPanel account if you haven't done it yet.
  2. Install Nimble Streamer or upgrade it to latest version.
  3. Follow instruction RIST page to install RIST package. RIST package is currently available only on Ubuntu 18.04 and later versions.
Now you may proceed with the setup.

Receiving RIST streams


Being logged into WMSPanel, click on Nimble Streamer -> Live streams setting top menu. Then choose MPEGTS In tab.


Click on Add RIST stream button to open the dialog shown below.

RIST provides two modes 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.
  • Pull sets Nimble to initiate the source server to start sending the data. Your source needs to be set to Listen mode.
If you select Listen, you'll need to specify the local interface - Local IP and Local port - which Nimble will listen to in order to get a stream. If you'd like it to listen to all interfaces, just set Local IP to 0.0.0.0.

Notice: if you use RIST Simple profile then you need to use even-numbered port.



Alias is the name that will be used in incoming streams list.

Also check Add outgoing stream checkbox and fill in the Application name and Stream name fields if you'd like to automatically create outgoing stream for further processing. This step is specific to MPEG-TS streams in Nimble.

If you'd like get stream in Pull mode, you'll need to specify the Remote IP and Remote port where you'll get your stream from.

Notice: if you use RIST Simple profile then you need to use even-numbered port.


Once you save setting, the settings will be applied  create outgoing stream, you can use a breadcrumbs on top of settings page to go to live streams of specific server (by clicking "RIST demo" server link in this example):


You can now use this stream for further processing and playback similar to other MPEG-TS processed streams.

Sending RIST streams


We assume that you have a live stream ready to be sent out. If you don't, please refer to live streaming scenarios to see how you can set it up.

Go to UDP streaming tab to add new setting.


Click on Add RIST setting to see dialog below.
RIST allows streaming in two modes:

  • Push will initiate the active sending of the selected channel to the destination IP/Port which is working in Listen mode.
  • Listen will make Nimble Streamer wait for the Pull command from remote server.

Mode is a field to set this behavior.


If you choose Push mode, you'll see Remote IP and Remote port fields to specify the destination.

If you choose Listen, you'll be able to specify Local IP and Local port to be used for listening for a connection. Just like in receiving use case, If you'd like it to listen to all interfaces, just set Local IP to 0.0.0.0.

Notice: if you select RIST Simple profile then you need to use even-numbered port.



Source application name, Source stream name and their respective PMT PIDs, Video PIDs and Audio PIDs describe where the content is taken from for further transmission. Those streams need to be defined prior to making this setup. You may define multiple sources - in this case RIST channel will have multiple streams in it.

Supported RIST parameters


Nimble Streamer allows using the following parameters. You need to set them both on sender and receiver side. You can refer to RIST documentation for more details and tips on their usage.

  • aes-type is encryption type, set if only secret is not empty. Available values are are: 0 - none, 128 - AES-128, 192 - AES-192, 256 - AES-256.
  • bandwidth is RIST recovery bandwidth (Kbit/s), it's 100000 by default
  • buffer is maximum RIST recovery buffer size in milliseconds, it's 1000 by default.
  • cname is a manually configured identifier.
  • compression defines compression, 0 is for disabled, 1 is for enabled.
  • keepalive-interval is a Keep-alive timeout in milliseconds, it's "100" by default.
  • miface is multicast interface name.
  • profile is RIST profile. Available values are are: simple, main (default). Notice that if you use simple profile then you need to use even-numbered port.
  • reorder-buffer is reorder buffer size in milliseconds, it's 25 by default.
  • return-bandwidth is RIST recovery return bandwidth (Kbit/s), it's 0 by default
  • rist-logging is logging level. Available values are are: quiet (default), info, error, warn, debug, simulate
  • rtt is round-trip-time (RTT) in milliseconds, it's 500 by default.
  • secret is encryption password.
  • session-timeout is a session timeout, in milliseconds.
  • rist-stats-interval sets interval in seconds for reporting stats used by Nimble native API RIST methods for obtaining current sender and receiver stats for RIST streams. In order to use these API calls, you need to add parameter into RIST output and input respectively.
If you have any questions about these parameters, please refer to librist documentation as describe below.

RIST sender and receiver statuss


You can use Nimble HTTP API to obtain RIST sender and receiver statuses.

libRIST


Nimble Streamer uses librist library version 0.2.0. If you have any questions on RIST parameters usage and other topics, please refer to RIST documentation. and contact RIST team about it.


Related documentation


Softvelum Nimble Streamer, MPEG-TS support in Nimble Streamer

2 comments:

  1. Hi,

    If I push stream using rist protocol from nimble streamer is it possible to receive on zixi receiver as zixi also uses rist protocol.

    Regards,

    Fahad

    ReplyDelete
    Replies
    1. Yes, RIST stream from Nimble should be received on Zixi fine. If it doesn't then please contact our helpdesk to address that issue.

      Delete

If you face any specific issue or want to ask some question to our team,
PLEASE USE OUR HELPDESK

This will give much faster and precise response.
Thank you.

Note: Only a member of this blog may post a comment.