Skip to content

Web Player

Every proxy you configure can be watched straight from the browser. The web player lives at /player on the dashboard port, shares the dashboard's session and design system, and is the fastest way to answer "is this a tunlx problem or a client problem?" — if a stream plays here, tunlx is serving it correctly.

The built-in web player

Opening the player

There are three equivalent ways in:

  1. Play on a proxy card. Every card — standard, composite, or Xtream service — has a Play action that opens the player for that proxy.
  2. The Web Player menu in the navbar. The header's Web Player button lists all proxies grouped by type, with a live Active / Idle badge and the stream currently playing on each. Pick one to jump straight in.
  3. A direct URL. /player?proxy=<name> deep-links to a proxy; add &type=live, &type=vod, or &type=series to land on a content type. Opening /player without a proxy redirects back to the dashboard.

The player uses your dashboard session — viewers who should not see the admin UI should be given Xtream service credentials and a real IPTV client instead.

Viewer logins

Standard and composite proxies open straight into the catalog. An Xtream service is your own panel with its own user accounts, so the player first asks for one of the viewer logins you created for it. Credentials are remembered per proxy in the browser.

The player's viewer login prompt

Browsing content

  • Live TV / Movies / Series tabs switch the content type.
  • The Channel Browser sidebar stacks Categories, Streams, and (for series) Episodes as accordions, each with its own search box. The last category you browsed is restored after a reload or proxy switch.
  • On phones the sidebar becomes a full-screen sheet behind the Browse Channels button, so the video keeps the whole width.

Playback controls

The now-playing bar above the video shows the channel logo, title, and EPG now/next information, plus:

Control What it does
Previous / Next channel Steps through the current category. Keyboard: Page Up / Page Down.
Refresh stream Re-opens the current stream.
Picture-in-Picture Pops the video into a floating window.
Copy stream URL Copies the direct stream URL (honors publicBaseURL).
Open in new tab Opens the raw stream URL, e.g. to hand to another app.
Quality Appears when an HLS stream advertises multiple variants; pick a fixed level or stay on Auto.
Buffer Picks how much media the player holds ahead of the playhead: Auto (engine defaults), Low latency, Balanced, Stable, or Maximum. Deeper buffers ride out jittery connections at the cost of a higher live delay. The choice persists in the browser and re-applies the moment you pick it.

HLS, MPEG-TS, MP4, and Matroska streams all play in the browser through the bundled playback engines — no plugins. The Buffer presets apply to the HLS and MPEG-TS engines; native playback manages its own buffering. For buffering on the server side of the proxy, see the per-proxy streamBufferKB setting in Configuration.

EPG timeline

For live content, Timeline swaps the video for a scrollable programme guide rendered from the proxy's XMLTV data, and Refresh EPG pulls fresh data on demand. The timeline is a desktop feature; on phones the player keeps the now/next summary in the toolbar instead.

Switching proxies — and getting back

The player header mirrors the dashboard header:

  • A Dashboard button returns to the admin UI (the logo does too).
  • The Proxy selector switches to any other proxy — grouped into composite proxies, standard proxies, and Xtream services just like the dashboard's Web Player menu — keeping your content type.
  • Theme toggle, debug console, and logout round it out.

The debug console (bug icon) streams player internals — stream URLs tried, EPG fetches, playback errors — and is the first place to look when a stream refuses to start.