Skip to main content
Skip table of contents

DASH low latency

A DASH low latency content stream consists of a live stream where you can define the playback rate and live delay within the MPD. As its live delay is usually no more than three segment durations (the usual value is approximately 6s), this will keep users as close to the live edge as possible.

MPD defined low latency values

The NAGRA Media Player is configured so that when it receives an MPD containing a DASH stream, it will search for the ServiceDescription JSONfield to check if the provided MPD is from a low latency stream.

XML
<ServiceDescription id="0">
	<Latency max="6000" min="2000" referenceId="0" target="4000" />
	<PlaybackRate max="1.04" min="0.96" />
</ServiceDescription>

From this, the targetOffsetMs, minOffsetMs, maxOffsetMs, minPlaybackSpeed and maxPlayback speed variables within OTVPlayerConfiguration will have their default values changed to match the MPD.

User-defined low latency values

In this case, the OTVPlayerConfiguration is configured with your own custom values. The first thing to do is create a new OTVPlayerConfiguration.Builder variable; by calling this, you create an OTVPlayerConfiuration with the default values which you can then change through methods such as setMinLiveOffsetMs. Once all changes are added, call the build() method on your OTVPlayerConfiguration.Builder and pass this value to OTVVideoView with setPlayerConfiguration(OTVPlayerConfiguration config).

Make sure you call setPlayerConfiguration() BEFORE you call setVideoPath() or your player is likely to be constructed with default values and not the values the user has altered.

LowLatency default values

When constructing the OTVPlayerConfiguration the default values of liveConfiguration are unset, but there are these default values for liveSpeedControl:

JAVA
      //live configuration
      liveTargetOffsetMs = TIME_UNSET;
      liveMinOffsetMs = TIME_UNSET;
      liveMaxOffsetMs = TIME_UNSET;
      liveMinPlaybackSpeed = RATE_UNSET;
      liveMaxPlaybackSpeed = RATE_UNSET;
      //live speed control
      fallbackMinPlaybackSpeed = DefaultLivePlaybackSpeedControl.DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED;//0.97f
      fallbackMaxPlaybackSpeed = DefaultLivePlaybackSpeedControl.DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED;//1.03f
      minUpdateIntervalMs = DefaultLivePlaybackSpeedControl.DEFAULT_MIN_UPDATE_INTERVAL_MS;//1000
      proportionalControlFactor = DefaultLivePlaybackSpeedControl.DEFAULT_PROPORTIONAL_CONTROL_FACTOR;//0.1f
      maxLiveOffsetErrorMsForUnitSpeed = DefaultLivePlaybackSpeedControl.DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED;//20
      targetLiveOffsetIncrementOnRebufferMs = DefaultLivePlaybackSpeedControl.DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS;//500
      minPossibleLiveOffsetSmoothingFactor = DefaultLivePlaybackSpeedControl.DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR;//0.999f
If LiveConfiguration has all its values unset, it will assume you are not using a low latency stream. If your stream does not have a ServiceDescription JSONField, you must set these values yourself if you want to run a DASH stream as low latency.
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.