Radiant Media Player

Using fallback streaming URL



Documentation sections


backupSrc player setting

Radiant Media Player provides support for fallback streaming URLs through the backupSrc player setting. This features is supported for HLS, DASH or progressive download. It will work for live, DVR and on-demand streaming.

At a given point in time a specific streaming URL may become unavailable. This could be caused by server outage or overload. At player start-up Radiant Media Player is able to detect this kind of failure when it attempts to fetch media content from the server. In the event it cannot access the initial resource the player can automatically switch to an alternate backup resource thus increasing the chance for your viewers to still be able to access your content. With backupSrc setting, the check for stream availability happens when initial playback is requested. To handle in-stream playback/network error you can do one of the following:

  • For HLS use the redundant streams feature described in the next section
  • Listen to the error API error event and implement some custom fallback

It should be noted that the player will only use fallback streaming URLs for a like-like streaming protocol. This means that if the player opts for HLS streaming in a specific environment it expects to have HLS back-up streaming URLs (e.g. it will not fallback to DASH or progressive download even if available).

When the player fails to load an item from the backupSrc setting a 1007 warning event will fire. If the last item also fails an additional error event will fire.

In this example we use a HLS fallback streaming URL. Fallback information are passed to the player through the backupSrc setting which is an Array of Object like the src setting.

<!-- Include Radiant Media Player - here we use the optimised build for hls.js -->
<script src="https://cdn.radiantmediatechs.com/rmp/5.0.8/js/rmp-hlsjs.min.js"></script>
<!-- Set up your wrapper div with its unique id -->
<div id="rmpPlayer"></div>
<!-- Player container element -->
<script>
// Your primary streaming source - in this example we use HLS
var src = {
  hls: 'https://your-hls-url.m3u8'
};
// Your fallback streaming source - must be of same type as above
var backupSrc = [{
  hls: 'https://your-fallback-hls-url-1.m3u8'
}, {
  hls: 'https://your-fallback-hls-url-2.m3u8'
}];
var settings = {
  licenseKey: 'your-license-key',
  src: src,
  // Here we tell the player to use fallback assets if primary asset fails to load
  backupSrc: backupSrc,
  width: 640,
  height: 360,
  poster: 'https://your-poster-url.jpg'
};
var elementID = 'rmpPlayer';
var rmp = new RadiantMP(elementID);
rmp.init(settings);
</script>

The check for fallback streaming URL happens through JavaScript XMLHttpRequest for HTML5 video/audio. Hence your fallback streams must also be delivered with CORS headers permitting GET requests.


HLS redundant streams

This error resilience feature is specific to HLS. More information on the subject can be found here.

In a nutshell: "If your playlist contains alternate streams, they can not only operate as bandwidth or device alternates, but as failure fallbacks. If the client is unable to reload the index file for a stream (due to a 404 error, for example), the client attempts to switch to an alternate stream".

Note that this feature is a complement to the previously mentioned fallback mechanism. This mechanism can actually allow recovery of in-stream errors. Fallback information needs to be presented in the HLS manifest.

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