Radiant Media Player

Low latency DASH streaming

Documentation sections

DASH low-latency concept

Latency in the context of live streaming is the delay (generally expressed in seconds or milliseconds) between a timestamp in a real-life event and the moment viewers are able to view this real-life event on their viewing device. While low-latency notion generally applies to live streaming, low-latency can also help with faster start-up time and seeking with on-demand streaming.

Most of the optimisations at this point in time have to be done on the DASH streaming server in order to reach low-latency streaming. Our player does already support CMAF for DASH streaming which allows for low-latency streaming.

The next step which we plan for 1st semester 2020 is to support Ultra-low-latency CMAF streaming using DASH.

How to produce low-latency DASH streams?

Those are our recommendations for your DASH manifest to best support low-latency DASH streaming:

  • Use SegmentTemplate with duration. This ensures that we don't need to do manifest updates to learn about future segments. The manifest will include info about all future segments.
  • If you must use SegmentTimeline or SegmentList, set a low minimumUpdatePeriod. The spec says 0 is valid, but we will override it with a minimum of 3 seconds between updates. If you use SegmentTemplate with duration, set this to a high value to avoid useless network activity.
  • Set a low minBufferTime. This allows faster recovery from stalls by allowing us to start playing with less content, at the cost of a higher chance of another stall.
  • Use short segment sizes. It is common to use 2 second segments for live streams. You could reduce that to 1 to reduce delay. But that will only help if we don't require manifest updates.
  • Set a value of suggestedPresentationDelay. If you don't set it, we will pick a default of 1.5 times minBufferTime. This affects the delay between the calculated live edge and the one we use. A lower value will make us play closer to the real live edge, but we will stall more if the segments aren't available yet.
  • Make sure you have a UTCTiming element for clock-sync.

Low-latency player settings

The only player setting that could affect latency would be shakaStreamingRebufferingGoal. It is similar to minBufferTime (set in DASH manifest), setting a smaller value for shakaStreamingRebufferingGoal will allow our player to play with less content.

The road ahead: Ultra-low-latency CMAF streaming using DASH

The DASH proposal is defined in the latest DASH Interop guidelines. There is also a new extension with new features, including low-latency modes for DASH, as outlined in this review document. We hope to have ultra-low-latency CMAF streaming using DASH support in our player in 1st semester 2020.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License.