Skip to main content

RIST (Reliable Internet Streaming Transport)

Quick look-up table

RIST
Type of streamingReal time streaming
Development StateIn active development
Expected LatencyVariable
Connection typeUDP
Container typeMPEG2-TS*
WhereTo servers
Default Portnone
Modern codecsAll
Difficulty of readBeginner
Notes*Actually RTP-based, but most in the industry use it in combination with MPEG-TS

What do I need to know about RIST?

RIST stands for Reliable Internet Stream Transport. RIST is very comparable to the more wellknown SRT. Like the name suggests the goal of RIST is to provide a reliable high performance media stream while in unreliable network conditions like the public internet. Best of all, it's an open source project from the start that involved several experts in the field that pitched in. Under the hood it runs MPEG-TS.

When would you use RIST?

Any transport that goes through unreliable network

The true beauty of RIST is how simple it is to get started with it. The obvious pitfall however is that due to so many parameters/possibilities to set fine-tuning can be quite a challenge. We have noticed however that the default settings for RIST have a great mix of latency and quality and can even adapt during the connection. It's definitly worth trying out if you're interested.

The scheme for RIST looks like this:

rist://(@)(address):port?parameter1&parameter2&parameter3&etc...

The input or output side of RIST is determined by the syntax. For input an @ is required, which will also make the address optional (binding 0.0.0.0 if not given). For output just an address is required. In the current implementation of RIST there's only connections per port, no single port set up can be achieved.

There's 3 important things to know about RIST:

  • port Although the main profile no longer has this restriction, the first implementation of RIST required even port numbers (as both the even and uneven above it would be used). Though this is no longer a hard requirement a lot of implementations including our own enforce this to avoid confusion with older implementations.
  • The RIST defaults work well in most networks and should get you good results in almost all situations. They are however optimised for:
    • Buffer sizes from 50 ms to 30 seconds
    • Networks with round trip times from 0ms to 5000ms
    • Bitrates from 0 to 1 Gbps
    • Packet size should be kept under the path's MTU (typically 1500). The library does not support packet fragmentation.
    • Bi-directional communication available (not one-way systems like satellite)
  • Should you wish to change from the defaults the most likely parameters you want to set are: buffer & rtt, with a special mention for buffer-min, buffer-max, rtt-min and rtt-max. Setting buffer and rtt allows you to change the buffer window which is used to do packet recovery. Lowering this when network conditions are good is quite a good step. Setting a buffer or rtt window through the min and max versions allows you to set constraints which libRIST will stay within. Allowing it to find the sweet spot for delivery even when your network changes. Though this does require specific implementations like that of MistServer.

Advantages of RIST

  • UDP: low latency transport
  • Build as open source project from the start
  • Latency and quality is adjustable
  • easy to use defaults

Disadvantages of RIST

  • No browser support, needs a custom player
  • Only MPEG-TS
  • No support for single port usage
  • Can be harder to understand what to fine-tune to get the results you want. Defaults actually won't help you for unreliable networks

How do you get started with RIST?

Eager to what other options RIST brings? Read our Deepdive into using RIST. Perhaps you'd like to know what comes after making sure your media is shared between servers now that you've picked RIST, look at our introduction to protocols page to decide on how to reach your viewers.