MSL5 Origin Low-Latency HLS ingest requirements

This document outlines the requirements for publishing Low-Latency HLS (LL-HLS) content to MSL5 Origin. With LL-HLS output enabled for the MSL5 Stream, you can ingest short segment HLS streams and convert the HLS playlist and segments from the encoder into LL-HLS output.

📘

Info: MSL5 Origin streams must be configured with LL-HLS output enabled to utilize this functionality. For the detailed configuration, refer to the Format > HLS > Enable Low Latency (LL-HLS) section on the Create an MSL5 stream page.

The Segment Template is required to configure when enabling LL-HLS. In this template, you need to describe the filename pattern for the stream segments. This pattern helps the system identify and order the stream segments correctly. Use one pair of parentheses ( ) around the changing segment number. The configuration needs to include regular expression to extract the media sequence from the segment filename in the first capturing group. For example, for a filename like segment1001.ts, the regex segment([0-9]+) captures 1001 as the media sequence. This configuration is essential for the MSL5 Origin to generate the preload hint for the LL-HLS playlist.

Examples for Segment Templates:

  • TS Segment Template
    Template: segment_.ts
    Regex: segment_(\d+).ts
    Label:
    Segment filename pattern (TS)
    Example:
    segment_1.ts, segment_2.ts, segment_3.ts, ...
    Pattern: segment_.ts
    (Regex: segment_(\d+).ts)
  • MP4 Segment Template
    Template: --.mp4
    Regex: index-\d+-(\d+).mp4
    Label:
    Segment filename pattern (MP4)
    Example:
    index-1713439200-1.mp4
    index-1713439200-2.mp4
    index-1713439200-3.mp4
    Pattern: --.mp4
    For example:
    index-<unix_timestamp>-.mp4
    (Regex: index-\d+-(\d+).mp4)
    Where:
    index = stream ID (fixed in this example)
    1713439200 = timestamp (e.g., Unix time)
    1, 2, 3 = sequential segment numbers

Refer to the low-latency HLS ingest requirements as follows:

Publishing Paths

Available Output Paths

  • /hls/live-ull/ - LL-HLS output path (low latency)

Publishing Mode

  • Normal Latency Mode: This mode depends on the path to which the encoder pushes the stream (Ingest Path).
  • Standard HLS Mode:
    • Ingest Path: /hls/live/{stream-id}/{event_name}/index.m3u8 or /{stream-id}/{event_name}/index.m3u8
    • Input: Short Duration Standard HLS segments (e.g., 1s)
    • Output: Content available on both paths:
      • /hls/live-ull/ as LL-HLS

Input Requirements

Standard HLS Input Mode

Protocol Requirements:

  • HTTP POST: Use the HTTP POST method for segment upload.
  • Segment Format: Use either fMP4 or MPEG-2 TS format for segments.
  • EXT-X-VERSION: Include the EXT-X-VERSION tag with a value of 6 or higher in the playlist.
  • Segment Duration: It is recommended to use a duration of 1 to 2 seconds for each segment.

Manifest Requirements

Variant Playlist Tags

Required Tags for EXT-X-STREAM-INF:

  • PROGRAM-ID: Identifies the program.
  • RESOLUTION: Specifies the resolution for video renditions.
  • BANDWIDTH: Indicates the required bandwidth for streaming.
  • CODECS: Lists the codecs used in the media.
  • Consistent Segment Numbering: Must maintain consistent segment numbering across all variants.

Media Playlist Tags

Required Tags:

  • EXT-X-TARGETDURATION: Defines the maximum segment duration of each segment.
  • EXT-X-MEDIA-SEQUENCE: Provides accurate sequence numbering for the segments.
  • EXT-X-PROGRAM-DATE-TIME: Should be included for each segment to specify the program's date and time.

HTTP Requirements

Connection Settings

Required Settings:

  • HTTP Version: Use version 1.1 or higher.
  • Method: Use POST for requests.
  • Connection: It is recommended to use persistent connections.

Timeouts

  • TCP/HTTP Timeout: Must be less than three times the segment duration.
  • Examples:
    • 1-second segments: Timeout should be less than 3 seconds.
    • 2-second segments: Timeout should be less than 6 seconds.

Media Format Requirements

Container Requirements

  • Video/Audio:
    • fMP4 format is supported.
    • MPEG-2 Transport Stream (.ts) format is supported.
  • Subtitles: WebVTT format is required.

Codec Support

  • Supported Video Codecs:
    • H.264/AVC
    • H.265/HEVC
  • Supported Audio Codecs:
    • AAC-LC
    • HE-AAC
    • AC-3

Implementation Examples

Standard Mode Example

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:1000
#EXTINF:1.000,
#EXT-X-PROGRAM-DATE-TIME:2025-10-15T12:00:00.000Z
segment1000
#EXTINF:1.000,
#EXT-X-PROGRAM-DATE-TIME:2025-10-15T12:00:01.000Z
segment1001

📘

The Standard Mode uses complete segments and requires the program date and time.

LL-HLS Output Example

#EXTM3U
#EXT-X-VERSION:10
#EXT-X-TARGETDURATION:1
#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=3.0,CAN-SKIP-UNTIL=6.0
#EXT-X-MEDIA-SEQUENCE:1000
#EXT-X-MAP:URI="init.mp4"

#EXT-X-PROGRAM-DATE-TIME:2025-11-10T19:39:00.000Z
#EXTINF:1.000,
segment1000.mp4

#EXT-X-PROGRAM-DATE-TIME:2025-11-10T19:40:00.000Z
#EXT-X-PART:DURATION=1.000,URI="segment1001-part0.mp4"

#EXT-X-PROGRAM-DATE-TIME:2025-11-10T19:40:01.000Z
#EXT-X-PRELOAD-HINT:TYPE=PART,URI="segment1002-part0.mp4"