Overview
Live DVR streams differ from standard live sliding-window streams by allowing viewers to scrub back, pause, and time-shift playback to the beginning of the broadcast while new media segments are continuously appended.
Supported HLS Specifications & Tags
Telos processes the following Live DVR tags and structures:
| Tag / Feature | Description | Example / Syntax |
|---|---|---|
#EXT-X-START | Specifies the initial playback point offset relative to the playlist. | #EXT-X-START:TIME-OFFSET=-10 (Starts 10s from the live edge) |
#EXT-X-PLAYLIST-TYPE:EVENT | Indicates an append-only event stream where older segments are retained. | #EXT-X-PLAYLIST-TYPE:EVENT |
| Append-Only Media Segments | New segments append to the bottom without evicting previous segments from the top. | Continuous sequence expansion |
| Sequence & Timing Tags | Handled seamlessly across program discontinuities and ad breaks. | #EXT-X-MEDIA-SEQUENCE |
#EXT-X-DISCONTINUITY-SEQUENCE | ||
#EXT-X-PROGRAM-DATE-TIME | ||
| Dynamic Ad Insertion (SSAI) | Ingestion of ad breaks/cues with slate fallback management. | Interleaved ad segments |
Telos Live DVR Request URL Structure
To route a Live DVR stream through Telos, use the dedicated /live-dvr/playlist.m3u8 endpoint.
Base Endpoint Format
https://{subdomain}.telos.indicue.com/live-dvr/playlist.m3u8?aid={AID}&source={BASE64_SOURCE_URL}&format={FORMAT}&session={SESSION_ID}&...
Core Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
source | string (Base64) | Yes | Base64-encoded URL of the source master or variant HLS playlist. |
aid | integer | Yes | Telos Ad Tag ID / Account ID (e.g., 111). |
format | string | Yes | Client/partner format profile (e.g., demo-telos). |
session | string | Yes | Unique session identifier for the stream viewer. |
u | string | Optional | User identifier or tracking token. |
w / width | integer | Optional | Target video width in pixels (e.g., 1920). |
h / height | integer | Optional | Target video height in pixels (e.g., 1080). |
isNoSlate | boolean | Optional | false to enable default slate fallback; true to disable. |
Implementation Example
A. Example Request URL
<https://demo-telos.telos.indicue.com/live-dvr/playlist.m3u8?aid=111&source=aHR0cHM6Ly9kdnR2LWR2ci0yLnZlcnRhLmhvc3QvMjQtY2hhbm5lbC90cmFja3MtdjFhMS9pbmRleC0xNzg4NDIwMjE0LW5vdy50cy5tM3U4&w=1920&h=1080&isNoSlate=false&session=user_session_abc123&format=demo-telos&u=user_guid_456>
B. Expected Variant Manifest Output
#EXTM3U#EXT-X-VERSION:3#EXT-X-START:TIME-OFFSET=-10#EXT-X-PLAYLIST-TYPE:EVENT#EXT-X-ALLOW-CACHE:NO#EXT-X-MEDIA-SEQUENCE:134421#EXT-X-DISCONTINUITY-SEQUENCE:0#EXT-X-TARGETDURATION:16#EXT-X-PROGRAM-DATE-TIME:2026-09-03T07:23:29.44Z#EXTINF:6.000,tracks-v1a1/dvr-2026/09/03/07/23/29-06000.ts#EXTINF:6.000,tracks-v1a1/dvr-2026/09/03/07/23/35-06000.ts#EXTINF:6.000,tracks-v1a1/dvr-2026/09/03/07/23/41-06000.ts#EXTINF:6.000,tracks-v1a1/dvr-2026/09/03/07/23/47-06000.ts
Important Guidelines & Device Compatibility
- Strict URL Encoding for Metadata & Macros:
- Ensure all string parameters passed via client macros (e.g.,
app_name,content_title,channel_name) are properly URL-encoded. - Example: Pass
app_name=MEAC%20Networkorapp_name=MEAC+Networkinstead of raw whitespaceapp_name=MEAC Network. Unencoded spaces cause strict OTT parsers (such as Roku RAF) to fail when reading variant playlists.
- Ensure all string parameters passed via client macros (e.g.,
- Avoid Duplicate Parameters:
- Verify that client-side macros and ad query parameters are not duplicated in downstream variant playlist query strings.
- Session Uniqueness:
- Always supply unique
sessionIDs to ensure accurate ad decisioning, tracking, and segment cache isolation per viewer.
- Always supply unique