Skip to content

Live TV

OmniLux turns your media library into a live TV experience with virtual channels, an EPG guide, DVR recording, and compatibility with external IPTV clients like Plex and Jellyfin.

Virtual channels

Virtual channels are built from your library content. Instead of choosing what to watch, you tune into a channel and let it play — like traditional TV.

Creating a channel

  1. Go to Live TV > Channels
  2. Click New Channel
  3. Set the channel name, number, and category
  4. Add programs from your library (movies, TV episodes, etc.)
  5. Choose a schedule mode:
    • Sequential — programs play in order, then loop
    • Shuffle — programs play in a deterministic shuffled order (same shuffle every time)
    • Random — programs play in random order
  6. Click Save

Auto-generated channels

OmniLux can automatically create channels based on your library metadata:

  1. Go to Live TV > Channels > Auto-Generate
  2. Select a grouping: by genre, by network, by decade, etc.
  3. OmniLux creates a channel for each group and populates it with matching content

Always-on channels

Mark a channel as "always on" to keep it streaming even when nobody is watching. Always-on channels auto-restart if the stream crashes (checked every 60 seconds).

EPG guide

The Electronic Program Guide shows what's playing now and what's coming up across all your channels.

  • Navigate the grid by time and channel
  • Click a program for details and metadata
  • Hero preview player shows the currently selected channel live
  • Category filters narrow the guide to specific channel types

How scheduling works

Virtual channels use a playout engine that computes the schedule deterministically. Programs are assigned start and end times based on their duration, the schedule mode, and a seed value. This means the schedule is the same every time you check — no randomness between refreshes.

The EPG is generated for a 48-hour window and refreshed every 12 hours.

Channel switching

Click any channel in the EPG guide to start watching. The behavior depends on stream state:

  • Pre-warmed channels — instant playback (0ms delay). Channels are warmed when you load the guide page
  • Cold-start channels — brief "Tuning..." spinner while the stream starts (typically 2–5 seconds)

Stream warming budget: up to 8 GPU encode streams + 15 stream-copy streams (IPTV). Streams stagger their startup to avoid GPU contention.

DVR recording

Record live content for later viewing.

Record now

While watching a channel, click Record to start recording immediately. The recording continues until you stop it or the current program ends.

Scheduled recording

  1. Go to Live TV > Recordings
  2. Click Schedule Recording
  3. Select a channel, start time, and duration
  4. The recording will start automatically at the scheduled time

Recordings are saved as media files and can be added to your library.

HDHomeRun emulation

OmniLux emulates an HDHomeRun device, making your channels discoverable by Plex, Jellyfin, and other apps that support HDHomeRun tuners.

Enabling

  1. Go to Settings > Live TV
  2. Enable HDHomeRun Emulation
  3. Set the number of tuners (how many simultaneous streams to advertise)

Discovery

Plex, Jellyfin, and other clients discover OmniLux via SSDP (UDP port 1900) on the local network. The emulated device responds to:

  • GET /discover.json — device information
  • GET /lineup.json — channel lineup

Configuration in Plex

  1. Go to Settings > Live TV & DVR in Plex
  2. Plex will auto-discover the OmniLux HDHomeRun device
  3. Select it and follow the setup wizard
  4. Plex will import the channel lineup and EPG

M3U and XMLTV export

For IPTV clients that don't support HDHomeRun, OmniLux provides:

  • M3U playlisthttp://your-server:4000/api/livetv/m3u
  • XMLTV EPGhttp://your-server:4000/api/livetv/xmltv

Add these URLs to any IPTV client (VLC, TiviMate, etc.) for channel access with program guide data.

Stream tokens

External IPTV clients can't use session-based auth. Generate a stream token in Settings > Live TV and append it to stream URLs: ?token=your-token.

External IPTV sources

Import channels from external IPTV providers:

  1. Go to Live TV > IPTV Sources
  2. Click Add Source
  3. Enter the M3U URL (and optionally an XMLTV URL for EPG data)
  4. OmniLux imports the channel list

External channels can be:

  • Proxied through your server (for VPN egress or CORS bypass)
  • Relayed directly (stream URL passed through to the client)

Community catalog (iptv-org)

Browse the iptv-org community catalog of free-to-air channels:

  1. Go to Live TV > IPTV Sources > Community Catalog
  2. Filter by country, category, or language
  3. Import channels directly into your lineup

Hardware transcoding

Live TV uses FFmpeg for stream processing:

  • Virtual channels: FFmpeg concatenates library files and outputs HLS (6-second segments, 3-segment sliding window)
  • NVIDIA NVENC: hardware-accelerated encoding when an NVIDIA GPU is available (RTX 3060 = 8 simultaneous encode sessions)
  • Fallback: if NVENC fails twice in quick succession, it's blacklisted and libx264 (software) takes over. The blacklist clears on the next warm cycle
  • IPTV channels: use -c copy (stream copy, zero encode overhead, zero GPU usage)

Use OmniLux, run your own server, or build on the platform.