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.
Xtream Codes
In ZenPlay, add a playlist, choose Xtream Codes and enter:
Server
https://spannable.com/mock/xtreamUsername
demoPassword
demoM3U 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.m3uGuide URL
https://spannable.com/mock/m3u/epg.xmlFor 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.
- 1
Get the code
git clone https://github.com/nilandev/ZenPlay-Mock-Server.gitDownload the mock servers
cd ZenPlay-Mock-ServerOpen the folder
- 2
Start the servers
npm startBoth servers: Xtream on port 8787, M3U on 8788
npm run mock:xtreamOnly the Xtream Codes server
npm run mock:m3uOnly 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
Add the demo video (optional)
npm run make-videoRender 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:8787Username
demoPassword
demoWhat'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.m3uGuide URL
http://localhost:8788/epg.xmlWhat'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 on | Server address |
|---|---|
| iOS Simulator, webOS Simulator, desktop browser | http://localhost:8787 |
| Android emulator | http://10.0.2.2:8787 |
| A real phone or TV on your network | The 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.