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.

Opening the player¶
There are three equivalent ways in:
- Play on a proxy card. Every card — standard, composite, or Xtream service — has a Play action that opens the player for that proxy.
- 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.
- A direct URL.
/player?proxy=<name>deep-links to a proxy; add&type=live,&type=vod, or&type=seriesto land on a content type. Opening/playerwithout 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.

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.
Related¶
- Dashboard Tour — where the player sits in the UI
- Xtream Services — the viewer accounts the player asks for
- Stream Health Tests — batch-probe catalogs instead of spot-checking by hand
- Configuration —
publicBaseURLcontrols the URLs the player hands out