Skip to content

LL-HLS playback

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) and AV1. 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.

Prerequisites

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.

GOP for LL-HLS

LL-HLS playback URL

To play a stream via Apple Low-Latency HLS, copy the CMAF URL from the Output tab of the stream's settings and paste it to a player. The player THEOplayer fully supports LL-HLS playback.

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

Output protocols

The URL is like that:

http://FLUSSONIC-IP/example_stream/index.ll.m3u8

If the stream includes some tracks that you don't want in the LL-HLS output, use filter.tracks parameter in the URL. It will help you filter only the tracks that are required on the end-user's device (for example, you may not want to deliver 360p to TVs or 4K to mobile devices). Learn more about filtering tracks at Filtering tracks for playback.

Optional settings for LL-HLS

LL-HLS is enabled in Flussonic by default and does not require any additional settings. We have adjusted the LL-HLS playback parameters to achieve an optimal balance between latency and resource consumption. However, you can change the settings if any issues arise with the default values (for example, the video takes a long time to start, the server is overloaded at a small number of viewers, frequent buffering, the latency is higher than expected, etc.). Please contact our support team to get assistance in selecting the best LL-HLS settings for your objectives.

You can set the following parameters in the configuration file (if necessary):

  • segment_duration is the duration of an HLS segment.
  • segment_count is the number of segments in an HLS playlist.
  • chunk_duration is the duration of a CMAF Chunk or HLS Partial Segment of an HLS segment. The default value is 200.

Example:

stream example_stream {
  input fake://fake;
  segment_duration 4;
  segment_count 4;
  chunk_duration 500;
}

Note

You can also set segment_duration and segment_count in the UI on the Output tab in the stream settings.