Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ErsatzTV/legacy/llms.txt

Use this file to discover all available pages before exploring further.

ErsatzTV delivers its virtual TV channels over the network using one of four streaming modes. The mode you choose affects the URL clients use to tune in, how ErsatzTV manages the underlying FFmpeg process, and how well the stream will work with your specific media player or IPTV client. Each channel has its own streaming mode setting so you can mix and match across channels to suit different downstream clients.

Mode Overview

ModeEnum valueProtocolURL patternBest for
TransportStream1MPEG-TS over HTTP/iptv/channel/{number}.tsBroad compatibility, Plex DVR, HDHomeRun
HttpLiveStreamingDirect2HLS passthrough/iptv/channel/{number}.m3u8?mode=hls-directLow latency, minimal CPU, source passthrough
HttpLiveStreamingSegmenter4HLS adaptive/iptv/channel/{number}.m3u8Adaptive bitrate, pause/seek, web players
TransportStreamHybrid5MPEG-TS over HTTP/iptv/channel/{number}.tsImproved TS with the newer processing path

Streaming Engines

Every channel also has a Streaming Engine setting separate from its streaming mode:
ValueDescription
LegacyThe original ErsatzTV streaming engine. Default for all channels.
NextThe newer ErsatzTV Next engine. Opt-in per channel. Enables additional features such as configurable text subtitle handling (NextEngineTextSubtitleMode).
StreamingEngine.Next is an opt-in feature. Most channels should remain on Legacy unless you need a specific Next-engine capability such as subtitle conversion.

Mode Details

TransportStream (value 1) is the classic MPEG-TS over HTTP mode. ErsatzTV starts an FFmpeg concat process that stitches together scheduled media items into a continuous transport stream and pipes it directly to the HTTP response.URL:
http://<host>:<port>/iptv/channel/{channelNumber}.ts
When a client requests the .ts URL without an explicit mode query parameter, and the channel’s streaming mode is TransportStream, ErsatzTV uses the ts-legacy mode internally (the concat-based pipeline).Characteristics:
  • Single persistent FFmpeg process per active viewer
  • No session management overhead
  • Seamless playout continuity — the stream never pauses between items
  • Compatible with virtually all IPTV clients, HDHomeRun network tuners, and Plex Live TV
When to use:
  • Plex DVR / Live TV integration
  • HDHomeRun-style clients
  • Any IPTV client that does not support HLS
  • When you need maximum compatibility over adaptive bitrate features

Streaming Mode Comparison

FeatureTransportStreamTransportStreamHybridHLS SegmenterHLS Direct
ProtocolMPEG-TSMPEG-TSHLSHLS
URL suffix.ts.ts.m3u8.m3u8
Session managementNoneNoneYes (shared)None
DVR / time-shiftNoNoYesNo
Adaptive bitrateNoNoNo*No
Disk writesNoNoYes (segments)No
CPU per-viewerPer-viewerPer-viewerSharedLow
Client compatibilityMaximumMaximumHLS clientsHLS clients
* ErsatzTV produces a fixed-bitrate HLS stream; ABR with multiple renditions is not currently supported.

Subtitle Handling (Next Engine)

When a channel uses StreamingEngine.Next, the NextEngineTextSubtitleMode channel setting controls how text-based subtitles (SRT, ASS, WebVTT) are processed:
ValueBehaviour
BurnSubtitles are burned (composited) into the video frames. Works with all players; cannot be toggled off by the viewer.
ConvertSubtitles are converted to a compatible passthrough format where possible. Players that support embedded subtitle tracks can display or hide them.
This setting is only relevant for the Next engine and has no effect on channels using StreamingEngine.Legacy.

URL Reference

# IPTV playlist (M3U)
GET /iptv/channels.m3u[?mode=mixed|ts|hls]

# Transport Stream
GET /iptv/channel/{channelNumber}.ts
GET /iptv/channel/{channelNumber}.ts?mode=ts          # Hybrid
GET /iptv/channel/{channelNumber}.ts?mode=ts-legacy   # Legacy concat

# HLS (auto-detects channel mode)
GET /iptv/channel/{channelNumber}.m3u8
GET /iptv/channel/{channelNumber}.m3u8?mode=hls-direct
GET /iptv/channel/{channelNumber}.m3u8?mode=segmenter

# HLS live session playlist
GET /iptv/session/{channelNumber}/hls.m3u8

# HDHomeRun-compatible TS
GET /iptv/hdhr/channel/{channelNumber}.ts

# EPG guide
GET /iptv/xmltv.xml

IPTV & M3U Setup

Configure your M3U playlist and XMLTV guide for IPTV clients.

FFmpeg Profiles

Define the codec, bitrate, and normalisation settings used for transcoding.

Build docs developers (and LLMs) love