Radiant Media Player

DVR streaming



Documentation sections


DVR support in Radiant Media Player

DVR streaming offers the possibility to rewind into a live stream to watch recorded content. Radiant Media Player features a specific DVR UI, including intuitive in-stream navigation and jump-to-live functionalities. DVR streaming with Radiant Media Player is supported for the following streaming protocol:

  • HLS

DVR for audio-only streaming is also supported. Our general recommendations and advanced player settings for HLS streaming also apply to DVR streaming.

Radiant Media Player sports a variety of optimisations for DVR streaming. Those optimisations are triggered with the isLiveDvr setting set to true.

You can insert video ads (only pre-roll or overlay ads are supported for DVR streaming), use HLS AES encrypted or 360 video content and query our dedicated DVR API to fine tune your application.


Player settings

isLiveDvr: Boolean

Enables or not DVR UI and DVR streaming optimisations. Note that the player does not auto-apply DVR UI and optimisations when a DVR stream is detected it must be explicitly enable with isLiveDvr setting. Default: false.


Player code example

<!-- Include Radiant Media Player - here we use the optimised build for hls.js -->
<script src="https://cdn.radiantmediatechs.com/rmp/5.6.0/js/rmp-hlsjs.min.js"></script>
<!-- Player container element -->
<div id="rmpPlayer"></div>
<!-- Set up player configuration options -->
<script>
  // DVR HLS source
  var src = {
    hls: 'https://your-dvr-hls-url.m3u8'
  };
  // Your player settings
  var settings = {
    licenseKey: 'your-license-key',
    src: src,
    width: 640,
    height: 360,
    // On macOS Safari or iPadOS DVR functionalities are only enabled when hls.js is used (over native HLS)
    forceHlsJSOnMacOSIpadOSSafari: true,
    // Here we tell the player to enable DVR UI and optimisations
    isLiveDvr: true,
    contentMetadata: {
      poster: [
        'https://your-poster-url.jpg'
      ]
    }
  };
  var elementID = 'rmpPlayer';
  var rmp = new RadiantMP(elementID);
  rmp.init(settings);
</script>

iOS, macOS, Google Cast considerations

On iOS where media source extensions are not available we rely on Apple QuickTime-based embedded player for providing DVR controls. DVR controls are only available in fullscreen mode on iOS 11+.

On macOS or iPadOS Safari you need to use the forceHlsJSOnMacOSIpadOSSafari setting to enable DVR functionalities. Otherwise the player will handle your DVR stream as a simple live stream.

When casting a DVR stream through Google Cast, the player handles the DVR stream as a simple live stream. This is because DVR support in our custom receiver application is currently unavailable.


DVR API

dvrSeekTo(ms)
rmp.dvrSeekTo(60000);

This method allows seeking into the recorded DVR sliding window. Input parameter ms is a Number expressed in milliseconds. If the input is greater than the sliding window duration then the player will jump to live. In order to avoid buffering issues seeking to value below 10 seconds will cause the player to seek to 10 seconds within the DVR sliding window.

dvrJumpToLive()
rmp.dvrJumpToLive();

This method will cause the player to exit the recorded DVR sliding window and to jump to live content.

getDuration()
rmp.getDuration();

This getter returns a Number expressed in milliseconds representing the duration of the DVR recorded sliding window. -1 is returned in case the value is not available.

getCurrentTime()
rmp.getCurrentTime();

This getter returns a Number expressed in milliseconds representing the relative time from the start of the DVR current window while the player is in DVR recorded mode. In DVR live mode or if this value is not available, -1 is returned.

dvrIsLive()
rmp.dvrIsLive();

This getter returns a Boolean stating if the DVR stream on stage is showing live content (true) or on-demand content from the sliding window (false).

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