Skip to content

HLS Playback

Flussonic Media Server supports playing video via the HLS protocol. Many of Flussonic's HLS features use non-standard extensions of HLS – we support them for your convenience.

The supported codecs are: H264, H265, MPEG2 video, AAC, MP3, MPEG2 audio, and AC-3.

Flussonic Media Server supports access via HLS to live streams, VOD files and DVR (catchup and timeshift).

If an incoming stream has DVB subtitles or teletext, then Flussonic can pass them to an output HLS stream if you configure Flussonic for that. Subtitles are saved in DVR archive if a stream is recorded to the archive.

On this page:

Simple HLS playback

When you have a simple live stream or file (one video track, one audio track) for playing, the URL for playback via HLS is simple:


where FLUSSONIC-IP stands for your Flussonic Media Server host + port address.

Flussonic Media Server will also accept playlist.m3u8 in the end of the URL for backward compatibility with other servers.

When you start working with multi-language or multi-bitrate content, things become more complicated.

HLS playback of fMP4 for H.265

Fragmented MP4 (fMP4) offers important benefits. First of all, it is the only way to play HEVC video via the HLS. Besides, the MP4 container is supported by any player, in contrast with MPEG. The fMP4 format can also used by DASH, so that only the manifest would be different from HLS while the MP4 encoding would be performed once for both protocols.

The following URL allows HLS playback as fMP4 chunks:


where FLUSSONIC-IP stands for your Flussonic Media Server host + port address.

Playback via Low-Latency HLS

Flussonic allows playback via Apple Low-Latency HLS (LL-HLS) — a streaming protocol that derives from HLS and overcomes its high latency.

LL-HLS supports the same codecs as HLS (H.264, AAC, MP3) and also HEVC (H.265). The container can be MPEG-TS or fMP4 (fragmented MP4). Flussonic uses fMP4 and CMAF to package streams for LL-HLS delivery. Flussonic creates fMP4 chunks in accordance with the CMAF standard.


Before using Low-Latency HLS, remember that network and server load will increase because Low-Latency HLS divides HLS segments into smaller segments (also called chunks).

Also, to get really low latency, you should prepare the stream by encoding it with very small GOP (group of pictures). We recommend a GOP of the size equal to 1 or 2 seconds. Flussonic’s transcoder produces the GOP of a constant size, which you can specify in transcoder settings. If your video has FPS=25, then a one-second GOP will have a size of 25 frames, and you'll need to specify it in the transcoder settings.


How to configure LL-HLS

To play a stream via Apple Low-Latency HLS:

  1. Enable CMAF for the stream in the etc/flussonic/flussonic.conf file:

stream example_stream {
  url fake://fake;
  cmaf on;

CMAF is a standard that is used to create MP4 fragments compliant with the Low-Latency HLS specification.

Set the following parameters (if necessary):

Parameters Unit Description Example
segment_duration integer (in seconds) The duration of an HLS segment. segment_duration 4;
segment_count integer Number of segments in an HLS playlist. segment_count 4;
chunk_duration integer (in milliseconds) The duration of a CMAF Chunk or HLS Partial Segment of an HLS segment. The default value is 200. chunk_duration 300;

Then reload Flussonic by reloading Flussonic:

service flussonic reload


It is not necessary to reload Flussonic every time you set or modify any of the parameters above. Simply set or change the value of the parameter(s) and save the configuration.

  1. Access the stream by opening the following URL in the player:


The player THEOplayer fully supports LL-HLS playback.

Multilanguage HLS

If you want to play your multilanguage stream on iPhone you need to use the same http://flussonic-ip/STREAMNAME/index.m3u8

But when you want to watch a multi-language stream using VLC or a set-top box, the video mode must be turned on.

URL for the player will be:


This is due to the Apple HLS requirement of a separate playlist with an audio-only option for each individual language. MPEG-TS uses another algorithm: all audio tracks are packed in the same container with the video, and it is up to the player which one to play. So, to make sure the video is viewable on iPhone, it must satisfy the requirements of Apple. At the same time, VLC and STBs, in violation of the HLS standard, expect the old version of MPEG-TS converted to HLS. This is why this trick with different URLs is needed.

Adding 'Audio only' for Apple devices

Apple requires that all your streams must include a version without video, only with audio.

They suppose that if a user is watching video via 3G and has moved to a zone with bad network conditions, it would be better to have audio only than video with buffering.

Flussonic allows you to enable audio-only mode in the following way:

stream example {
  url file://vod/bunny.mp4;


Such a configuration might make your index.m3u8 URL unplayable on VLC or STB — in that case use video.m3u8 option (described earlier on this page).

Separate bitrates for STB

If you have a multi-bitrate multilanguage content and want to play it on STB that doesn't support multi-bitrate HLS playlists, you can request from Flussonic Media Server separate playlists with one video track and all audio tracks like with the mono option:


This playlist is not a variant (multi-bitrate) playlist, but it is a playlist with URLs to segments that contain the first video track and all available audio tracks.

If you want to deliver multilanguage multi-btrate to STB that doesn't understand Apple standard for multilanguage, use video.m3u8:


This is a variant playlist that will give you list of non-variant playlists like video1.m3u8, video2.m3u8, etc.

DVR catchup playback

When your stream is already recorded on server with our DVR you can play video via HLS when you know beginning of telecast and end for example from EPG.

Available URLs will be:


This is a regular playlist that will be variant playlist if you have more than one language or more than one bitrate.

It will deliver a list of segments starting from UTC 1362504585 ( 2013, March, 5th, 17:29:45 GMT) and for one hour forward.

The mono URL will give you list of segments that contain all tracks in MPEG-TS:


More specific videoN playlist will give you a list of segments with an N'th video track and all audio tracks:


and a variant video playlist with a list of videoN playlists:


HLS Event playlist

You can access Event playlist with the URL:


Event playlists are used when you want to allow the user to seek to any point within the event, e.g webinar, concert, current tv show.

Please notice that player will start playback from the live, not from the requested timecode, to access DVR data you should seek into the past.

Rewinding a playlist

Flussonic Media Server has a special playlist "rewind-N.m3u8" with a wide sliding window that allows to rewind and pause HLS streams for many hours.


7200 is a duration of a HLS manifest in seconds, so your clients will be able to pause the stream up to two hours or rewind to the start of TV show without accessing catchup URLs.

DVR timeshift playback

If your stream is being recorded on disk but you haven't configured a timeshifted stream for it, then you can play timeshifted video via HLS by using a propely constructed URL.

Here goes the list of URLs for relative timeshift:


and these are URLs for absolute timeshift:


Playing individual tracks

If a stream has several audio and video tracks, you can specify which tracks should be delivered. To do so, specify the track numbers by adding the parameter filter.tracks to the stream's URL.


Select the first audio and second video tracks:


Select video only:


DVR archive playback starting from UTC 1362504585 and with the duration of 3600 seconds:


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