Live DVR configuration is not currently available in the Telos SSAI UI. Use this guide to manually configure a Telos Live DVR playback URL. For streams configurable in the UI, follow the Telos SSAI User Guide.
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.
Telos provides a dedicated Live DVR endpoint for processing these streams and inserting ads. This workflow requires you to encode the original HLS playlist URL, construct the Telos request URL, and configure your player or CMS to supply the appropriate session and metadata values.
Before you begin
Have the following available:
- The original Live DVR HLS playlist URL.
- Your assigned Telos subdomain.
- The
aidvalue andformatprofile confirmed by your IndiCue representative. - A method for generating a unique session identifier for each playback session.
- Any device, application, content, or privacy parameters required by your integration.
- A player or application where you can test Live DVR playback.
The documented Live DVR endpoint requires source, aid, format, and session. Confirm your integration-specific values with IndiCue before constructing the production URL.
1. Prepare the original HLS playlist URL
Obtain the complete URL of the source master or variant HLS playlist. Use the original HLS playlist URL.
Confirm the playlist structure and intended DVR behavior with your streaming or playout provider, including the available playback history and intended starting position.
The Live DVR integration documentation identifies support for append-only event playlists and timing information, including:
| 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 |
2. Encode the playlist URL
Base64-encode the complete original playlist URL. The Live DVR endpoint receives this value through the source parameter, and not the standard integration’s m parameter.
To prepare the value:
- Copy the complete original playlist URL.
- Encode that URL using a Base64 encoding tool or your application’s Base64 function.
- Copy the resulting string without adding whitespace or line breaks.
- Use that string as the value of
source.
For illustration, the earlier encoding guide uses:
Original URL: http://example.com/stream.m3u8 Base64 value: aHR0cDovL2V4YW1wbGUuY29tL3N0cmVhbS5tM3U4
3. Construct the Telos Live DVR URL
Use the dedicated endpoint:
https://{subdomain}.telos.indicue.com/live-dvr/playlist.m3u8?aid={AID}&source={BASE64_SOURCE_URL}&format={FORMAT}&session={SESSION_ID}&...
Replace each placeholder with the appropriate value.
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. |
Your player, CMS, or integration must populate the values that change between playback sessions.
Session identifiers
Generate a new session value for each new playback session. Do not use one fixed identifier across viewers or copy the example identifier into production.
Configure your player, CMS, or integration to supply the identifier dynamically. Confirm the session lifecycle and reuse rules with IndiCue during implementation.
4. Add device, application, content, and privacy parameters
Append the additional parameters required by your integration to the Telos Live DVR URL. These may include device information, application details, content metadata, and applicable privacy signals.
See the Platform Integration Macros for documented parameter names, descriptions, examples, allowed values, and constraints.
Confirm with your implementation team which values are fixed and which your player, CMS, or distribution platform must populate for each playback session.
For example, an application name can be appended as:
&app_name=ExampleApp
For values containing spaces or other special characters, use the appropriate URL encoding:
&app_name=MEAC%20Network
Avoid duplicate query parameters, and replace any placeholders with actual values or supported runtime substitutions before testing.
The macro reference is being updated to reflect the current Telos options. Confirm missing or unclear Live DVR parameter mappings with IndiCue Support before launch. Do not assume that standard Telos insertion controls or defaults apply unchanged to the Live DVR endpoint.
5. Configure your player or CMS
Use the completed Telos Live DVR URL as the playback URL in your player, CMS, or distribution integration.
Before testing:
- Replace all placeholders with actual values or supported runtime substitutions.
- Confirm that
sourcecontains the encoded original playlist URL. - Verify your assigned subdomain,
aid, andformat. - Confirm that
sessionis populated dynamically. - Check that additional parameters are encoded correctly and are not duplicated.
6. Test before going live
Validate the complete playback experience:
- The stream loads successfully.
- Playback begins at the intended position.
- New content remains available as the broadcast continues.
- Pause and resume work as expected.
- Seeking works within the available DVR window.
- Ad breaks play and return to content correctly.
- Playback works on your intended devices and applications.
- New playback sessions receive separate session identifiers.
If playback fails, contact IndiCue Support with the source playlist, the Telos request URL, the affected device and player, and the test time with its timezone. Share sensitive identifiers or access credentials only through an approved private support channel.
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