Skip to content

Accessing DVR Archives via Various Protocols

Basic ways of accessing DVR

Access to archives is based on Unix timestamps, which are in the UTC time zone. This approach may be inconvenient if you use only one time zone, but it's the only really good way to deal with things such as daylight saving time.

On this page:

HLS playback

HLS can be played on a computer or STB, but it is especially required for video playback on mobile devices (iOS, Android).

An URL for HLS playback should be like this: http://FLUSSONIC-IP:80/CHANNEL-NAME/archive-1350274200-4200.m3u8

This URL means that Flussonic should play 4200 second, starting from 1350274200 second, as a file accessed by HLS. 1350274200 is a UNIX time in the UTC time zone.

If an original stream contains multiple audio or video tracks, this URL will produce a so-called HLS variant playlist (Apple's standard), which alows Apple iOS devices (iPhone, iPad) to select a language and bitrate. Segments will be produced with less tracks in this case. If you use any other device (non-Apple), try to use special URLs.

This mode is very good for a planned shows: you can use this URL in a middleware web interface, based on EPG, and you will not need to waste a disk space for single shows.

In OSMF player it looks like this:

dvr file

Multi-language HLS and mono-language HLS

For STBs that do not fully support HLS, you may use special video-URLs.
The difference is that this URLs produce video segments with all available audio tracks.
It is violation of HLS standard, but most STBs can operate in this mode only.

Here is the list of supported URLs:

  • fixed time period: http://FLUSSONIC-IP:80/CHANNEL-NAME/video-1350274200-4200.m3u8
  • absoulte timeshift: http://FLUSSONIC-IP:80/CHANNEL-NAME/video-timeshift_abs-1350274200.m3u8
  • rewinding: http://FLUSSONIC-IP:80/CHANNEL-NAME/video-1350274200-now.m3u8

Timeshift and rewinding are described there.

HTTP MPEG-TS playback

A fragment of an archive can be retrieved not on the full speed, but in the streaming mode, over a time equal to the length of the fragment.
You can use a URL like this: http://FLUSSONIC-IP:80/CHANNEL-NAME/timeshift_abs-1350274200.ts.

DASH playback

You can request a fragment of archive as a file by using the following URL:


With this URL, Flussonic Media Server will transmit a range of 4200 seconds starting from Unix timestamp 1350274200.

MSS playback

Here is the list of supported URLs:

  • You can request a fragment of archive as a file by using the following URL:


  • Accessing the archive starting from the present moment (that is, live) and with the possibility to rewind back to the specified time (UNIXTIME):


  • Absoulte timeshift:


  • Relative timeshift:


  • Playlist with a wide sliding window that allows you to rewind MSS streams and pause them for many hours:


  • Playing only specified tracks (this is useful, for example, for devices that do not support multi-language MSS manifests):

    http://FLUSSONIC-IP:80/CHANNEL-NAME(rewind=200).isml/manifest?filter.tracks=t1 — delivers only the first track with subtitles.

    http://FLUSSONIC-IP:80/CHANNEL-NAME(timeshift_abs=1594375800).isml/manifest?filter.tracks=v1a2 — delivers the first video track and second audio track.

    http://FLUSSONIC-IP:80/CHANNEL-NAME(archive=1594375800-120).isml/manifest?filter.tracks=a1t1t2 — delivers only the first audio track and two subtitle tracks.

    The obsolete filter=tracks: syntax is still supported but the filter.tracks= syntax is recommended.

RTMP playback

Flussonic can play an archive via RTMP. You may use the following arguments:

var flashvars = {
    file: 'ort?from=1398267588&to=1398268588',
    autostart: true
  swfobject.embedSWF('/flu/jwplayer.swf',element,'640','480','10.3','false', flashvars,

So you need to put a name of the stream, and add a query string with required "from" parameter and optional "to" parameter.

Also you can use parameter speed=2, speed=4 or speed=8 so Flussonic will play an archive in the accelerated mode (without a sound).

RTSP playback

Flussonic can play an archive via RTSP. You should use URL like this:

So you need to put a name of the stream, and add a query string with required "from" parameter and optional "to" parameter.


Relative timeshift

You can access an archive as regular source but with a time shift.
A special URL exists for every protocol:

  • MPEG-TS: http://FLUSSONIC-IP:80/CHANNEL-NAME/timeshift_rel/3600
  • HLS: http://FLUSSONIC-IP:80/CHANNEL-NAME/timeshift_rel-3600.m3u8
  • mono HLS: http://FLUSSONIC-IP:80/CHANNEL-NAME/mono-timeshift_rel-3600.m3u8

It's important to note that it's better to use special source type "timeshift", that is described further.

Absolute timeshift

This URL: http://FLUSSONIC-IP:80/CHANNEL-NAME/timeshift_abs-1350274200.ts is for a MPEG-TS stream starting at 1350274200. You can use it for old STBs or viewing recorded shows with the EPG.


This feature works for HLS and DASH. It allows to get live with ability to rewind back to a specified time in seconds.

  • For HLS: http://FLUSSONIC-IP:80/CHANNEL-NAME/index-1350274200-now.m3u8
  • For DASH: http://FLUSSONIC-IP:80/CHANNEL-NAME/archive-1350274200-now.mpd

1350274200 is a UNIX timestamp in the UTC time zone.

In OSMF player rewinding looks as follows:

dvr timeshift

Timeshift with a constant delay

You can run a stream which lags behind the real time for a constant time interval. Configure it as follows:

stream channel {
  input fake://fake;
  dvr /storage;
stream channel-1hour {
  input timeshift://channel/3600;

A new stream appears in the system, which will lag for 1 hour behind channel. If there will be any gaps in the recording, the lagging will still be for 1 hour.

Repeated requests to the same timeshift URL

It's a frequently asked question: Every time I use the same URL with timeshift_abs to get an HLS playlist (with the same parameters) I get different results. Why?

When you request HLS URL on a specific channel, Flussonic starts a new session.
If you use a timeshift URL, any additional requests use the same existing session.
All video requests runs relative to this existing session.
So if you use the same time in timeshift_abs for multiple requests, really it's not pure "absolute" time, it's still related to the current session.
Therefore every time you request the same time, you get a different video chunk.
It's normal behavior and it's the only good way to implement HLS timeshift.

You can work around this behavior by changing the token in every new request. That will start a new sessions.

Like this:
and so on.