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 Legacy is an open-source media server that transforms your existing personal media collection into a personalized, live TV experience. Instead of browsing a static library, you build real broadcast-style channels — complete with a schedule, an electronic program guide (EPG), and seamless streaming to any IPTV-compatible device. Whether you want a classic-movie channel that loops curated films at fixed showtimes, a themed block of TV episodes, or a 24/7 music video station, ErsatzTV Legacy gives you the scheduling engine and streaming infrastructure to make it happen.

What Problem Does ErsatzTV Legacy Solve?

Traditional media servers like Plex, Jellyfin, and Emby are on-demand libraries: you pick what you watch and when. ErsatzTV Legacy adds the scheduling layer on top of those same libraries, turning passive content into active broadcast channels. You get the feel of curated live TV — where content plays in order, at specific times, with gaps filled by bumpers or filler — all served to any device that understands IPTV or HDHomeRun.
FeaturePlain Media ServerErsatzTV Legacy
On-demand playback(delegate to media server)
Scheduled channels
IPTV M3U playlist
XMLTV EPG guide
HDHomeRun emulation
Hardware transcoding

Core Concepts

ErsatzTV Legacy is built around a small set of interconnected concepts that map directly to how live TV works: Libraries are scanned collections of media items — movies, TV episodes, music videos, or other videos. Libraries can be local folders on disk or synchronized from a connected media server. Channels are the virtual broadcast channels viewers tune into. Each channel has a number, a name, an assigned FFmpeg profile that controls encoding, and a streaming mode. Schedules define how content from your libraries is arranged in time. A schedule is made up of one or more items, each pointing at a collection and specifying a playback order, duration, and timing rule. Playouts are the live instances that link a channel to a schedule. A playout continuously generates the upcoming programme timeline, so clients always see what is currently airing and what is up next. Streaming is the output layer. ErsatzTV Legacy transcodes (or stream-copies) media through FFmpeg and delivers it as MPEG-TS or HLS to any connected client using the IPTV, XMLTV, or HDHomeRun endpoint URLs.

Supported Media Sources

ErsatzTV Legacy can index media from four source types:
  • Local — files on a path mounted to the ErsatzTV Legacy host (movies, shows, music videos, other videos).
  • Plex — connect to a Plex Media Server and sync its libraries directly.
  • Jellyfin — connect to a Jellyfin server and import its movie, TV, and music video libraries.
  • Emby — connect to an Emby server with the same library types supported as Jellyfin.
Media is scanned and indexed into ErsatzTV Legacy’s own database, so channels continue to function even if the source media server is briefly offline.

Supported Streaming Modes

ErsatzTV Legacy exposes three standard interfaces for IPTV clients and DVR applications:
  • IPTV M3U — an M3U playlist at /iptv/channels.m3u listing every enabled channel with its stream URL. Compatible with any IPTV player (VLC, Infuse, Kodi, Channels DVR, Emby, Jellyfin, etc.).
  • XMLTV EPG — an XML programme guide at /iptv/xmltv.xml describing current and upcoming show titles, descriptions, and air times for all channels.
  • HDHomeRun Emulation — ErsatzTV Legacy emulates an HDHomeRun network tuner device, discoverable at /discover.json and /lineup.json. This allows Plex DVR, Emby Live TV, and other HDHomeRun-aware software to treat ErsatzTV Legacy as a TV tuner on the local network.

Hardware Acceleration

ErsatzTV Legacy uses FFmpeg for transcoding and supports all major hardware acceleration APIs so you can offload encoding from the CPU:
AcceleratorPlatformEnvironment
NVENCNVIDIA GPUsLinux, Windows
QSVIntel Quick Sync VideoLinux, Windows
VAAPIIntel / AMD (open drivers)Linux
AMFAMD GPUsWindows
VideoToolboxApple Silicon / Intel MacmacOS
RKMPPRockchip SoCsLinux (ARM)
V4L2M2MGeneric V4L2 hardwareLinux (ARM)
Hardware acceleration is configured per FFmpeg profile, so you can have different profiles for software and hardware encoding and assign them to channels independently.

Schedule Types

Four schedule types let you express virtually any programming strategy:
  • Classic — a linear list of schedule items, each with a start type (fixed clock time, or immediate/flood following the previous item) and a playback order (sequential, shuffle, random, etc.). This is the most familiar model and mirrors how traditional broadcast schedules work.
  • Block — a template-based system where you define time blocks (e.g. Monday 8pm–10pm) and assign collections to fill them, enabling repeatable weekly grid programming.
  • Sequential — a schedule that plays through a collection from beginning to end in order, resuming where it left off across restarts, with optional date-range-based alternate schedules.
  • Scripted — a Python-script-based schedule that calls the ErsatzTV Legacy API to build a fully custom playout programmatically, using the generated etv_client Python package bundled inside Docker.

Get Started

Installation

Install ErsatzTV Legacy on Docker, Linux, Windows, or macOS.

Quickstart

Create your first channel and start streaming in minutes.

Core Concepts

Understand channels, schedules, playouts, and more.

API Reference

Explore the REST API for automation and scripted schedules.

Build docs developers (and LLMs) love