ZenPlay

IPTV Mock Server

ZenPlay ships without any content, so these mock servers give you something to watch while you try it out, review the app, develop against it or take screenshots. They serve a seeded, invented catalogue of films, series, live channels and a TV guide. Every title, name and image is made up, and the content is the same every time.

Fastest way in

Use the hosted server

Point ZenPlay at the mock server hosted on this site. Nothing to install.

Online
A

Xtream Codes

In ZenPlay, add a playlist, choose Xtream Codes and enter:

Server

https://spannable.com/mock/xtream

Username

demo

Password

demo
B

M3U playlist

Or choose M3U URL and paste the playlist link. The guide is picked up automatically; on webOS, paste the guide URL into the EPG field.

Playlist URL

https://spannable.com/mock/m3u/playlist.m3u

Guide URL

https://spannable.com/mock/m3u/epg.xml

For developers

Run it yourself

For development, or to use it on your own network. You need Git and Node 20 or later. There are no dependencies to install.

View on GitHub
  1. 1

    Get the code

    git clone https://github.com/nilandev/ZenPlay-Mock-Server.git

    Download the mock servers

    cd ZenPlay-Mock-Server

    Open the folder

  2. 2

    Start the servers

    npm start

    Both servers: Xtream on port 8787, M3U on 8788

    npm run mock:xtream

    Only the Xtream Codes server

    npm run mock:m3u

    Only the M3U playlist server

    Each server prints the addresses to use, including one for devices on your network. Ctrl+C stops them. pnpm works too (pnpm mock).

  3. 3

    Add the demo video (optional)

    npm run make-video

    Render the clip once into xtream-playlist/media

    Without it everything loads, but playback shows an error. Rendering takes a minute or two and needs a Mac with the Xcode command line tools.

Local

Local playlists

Xtream Codes panel

Add it in ZenPlay as an Xtream Codes playlist.

Server

http://localhost:8787

Username

demo

Password

demo

What's in it

  • About 120 movies in 10 categories
  • About 60 series in 8 categories, 1–4 seasons each
  • About 55 live channels in 8 groups
  • Plots, cast, director, ratings, years and durations
  • A TV guide from 6 hours back to 3 days ahead
  • Catch-up on News, Sports, Entertainment and Documentary channels
  • Animation and Kids categories for testing Kids profiles

Endpoints

/player_api.php
Sign-in, categories, streams, series info, VOD info and EPG actions
/xmltv.php
The full XMLTV guide
/art/…
Generated SVG posters, backdrops, stills and logos
/movie/…, /series/…
The demo MP4, with seeking
/live/…/<id>.m3u8
A looping HLS live stream

Options: PORT (default 8787), HOST (default 0.0.0.0), MOCK_USER, MOCK_PASS

M3U playlist + XMLTV

Add it in ZenPlay as an M3U URL playlist. The iOS and Android apps pick up the guide from the playlist header automatically. On webOS, paste the guide URL into the EPG field.

Playlist URL

http://localhost:8788/playlist.m3u

Guide URL

http://localhost:8788/epg.xml

What's in it

  • The same invented catalogue as the Xtream server
  • Live channels with tvg-id, tvg-logo, channel numbers and groups
  • Movies as “Title (Year)”, episodes as “Show S01E02”
  • Catch-up attributes on News, Sports, Entertainment and Documentary

Endpoints

/playlist.m3u
Everything: live, movies and every episode
/live.m3u, /movies.m3u, /series.m3u
One kind each
/epg.xml
The guide, keyed by tvg-id

Options: PORT (default 8788), HOST, MOCK_TOKEN (require ?token=…), MOCK_MEDIA

Addresses

Local server addresses

The examples use the Xtream port 8787; the M3U server runs on 8788. A device on your network must share the Wi-Fi of the computer running the server.

Running ZenPlay onServer address
iOS Simulator, webOS Simulator, desktop browserhttp://localhost:8787
Android emulatorhttp://10.0.2.2:8787
A real phone or TV on your networkThe LAN address the server prints, e.g. http://192.168.1.58:8787

Playback

Demo video

  • Pressing play shows an original animated sunset clip, with no third-party footage, text or logos.
  • Films, episodes and catch-up play a 90-second MP4 with seeking. Live channels play a looping HLS stream that follows the wall clock, so leave Live Stream Format on Auto or HLS.
  • Running locally, render the clip once with pnpm make-video (needs the Xcode command line tools). Without it the catalogue still loads, and play shows the player's error state.