RetroTV Simulator v1.9.0

🚀 Quick Download

🪟 Windows .exe Requires VLC Media Player installed. ffmpeg for DVR recording is included in the installer.

A retro-styled desktop IPTV player and media centre — your streams, your channels, your TV.

✨ Features

⚙️ System Requirements

Windows Users (Standalone Executable):

  1. Windows 10 or 11
  2. VLC Media Player (64-bit)
  3. ffmpeg (included in installer)
    • Bundled with the Windows installer — no separate download needed.
    • Required for DVR recording and scheduled recordings.

Mac / Linux Users (Python Source):

  1. Python 3.8+
  2. VLC Media Player installed on your system.
  3. python-vlc module:
    pip install python-vlc
  4. ffmpeg (for DVR recording)
    • Install via your package manager (e.g. brew install ffmpeg or apt install ffmpeg).
  5. Pillow (Optional): Recommended for transparent PNG watermarks and EPG channel icons.
    pip install Pillow
  6. screeninfo (Optional): For proper multi-monitor fullscreen detection.
    pip install screeninfo

🚀 Installation & Usage

Option A: Windows Executable

  1. Download the installer (see top of page).
  2. Ensure VLC is installed on your system.
  3. Run the installer — ffmpeg is included automatically, no extra steps needed.
  4. Add your streams via the Channel Editor (✎ EDIT) or by editing user_config.json.

Option B: Python Source (Mac/Linux/Windows)

  1. Ensure Python 3.8+ and VLC are installed.
  2. Install the VLC binding: pip install python-vlc.
  3. For DVR recording, install ffmpeg via your package manager.
  4. Run the app: python retro_tv.py.

🎮 Controls

ActionControl
Change Channel / TrackLeft / Right Arrow Keys
Adjust VolumeUp / Down Arrow Keys or Sidebar Slider
Toggle FavoriteF Key
Toggle Schedule OverlayG Key or 📋 GUIDE Button
Toggle DVR RecordingR Key or ● REC Button
Play / Pause (Local / DVR)Space Key, ⏸ PAUSE Button, or Media Key Play/Pause
Toggle SubtitlesCC Button in control bar
Toggle Mute🔊 Icon or Media Key Mute
Seek (Local Files)Drag the Position Slider in the control bar
FullscreenF11 or Double-Click the video area
Exit FullscreenEscape
Previous / Next Track⏮ PREV / NEXT ⏭ Buttons
Open Log FileCtrl+L
Open Settings Button in control bar NEW
Channel Surf🎲 SURF Button in sidebar NEW
Sleep Timer⏾ SLEEP Button in control bar NEW
Filter Favorites★ FAV Button in sidebar
Filter Recently Watched◷ HIST Button in sidebar NEW
Collapse Sidebar◀ HIDE Button in sidebar
Resize SidebarDrag the sash (border between sidebar and video)
Search ChannelsType in 🔍 search box at top of sidebar
Right-Click ChannelContext menu: Favorite toggle, Tune
Schedule RecordingClick a programme cell in the EPG guide (CH 00)

🔴 DVR Recording

RetroTV includes a built-in DVR system for recording live streams. Recordings are saved as transport stream (.ts) files that can be played back in RetroTV or any video player.

Quick Record

Scheduled Recording

Recordings Library

Note: DVR recording requires ffmpeg. The Windows installer includes ffmpeg automatically — no extra download needed. Mac/Linux users running from source should install ffmpeg via their package manager (e.g. brew install ffmpeg or sudo apt install ffmpeg).

⏾ Sleep Timer

RetroTV includes a sleep timer that automatically shuts down the app after a specified duration. This is perfect for falling asleep to your favorite channels.

🛠️ Custom Channels & Playlists

You can create your own channels easily using the built-in Channel Editor (click the ✎ EDIT button in the control bar). The editor also supports importing channels from Extended M3U playlists.

Alternatively, you can create a user_config.json file manually next to the executable or script. The file supports two formats:

Format 1 — Simple list (legacy):

[
  {
    "name": "My Movies",
    "playlist": "my_movies.xspf",
    "random": "1",
    "watermark": "my_logo.png",
    "channel-id": "MyMovies.us"
  },
  {
    "name": "My Live Stream",
    "url": "http://192.168.1.100:8080/stream.m3u8"
  }
]

Format 2 — Dict with EPG sources (recommended):

{
  "channels": [
    {
      "name": "My Movies",
      "playlist": "my_movies.xspf",
      "random": "1",
      "commercials": "1",
      "watermark": "my_logo.png",
      "channel-id": "MyMovies.us",
      "description": "Classic Films"
    },
    {
      "name": "My Live Stream",
      "url": "http://192.168.1.100:8080/stream.m3u8",
      "description": "Webcam"
    }
  ],
  "epg_urls": [
    "https://example.com/my-guide.xml",
    "/path/to/local-guide.xml"
  ]
}

The app will automatically load these channels alongside the default lineup. Supported fields:

FieldRequiredDescription
nameYesDisplay name for the channel
urlOne of url/playlistLive stream URL (HLS/m3u8, DASH, etc.)
playlistOne of url/playlistPath to XSPF, M3U, or M3U8 playlist file
randomNoSet to "1" to shuffle playlist order
commercialsNoSet to "0" to disable commercial breaks on this channel (default: enabled)
watermarkNoPath to a transparent PNG shown bottom-right
channel-idNoMatches this channel to an entry in the XMLTV guide data
descriptionNoShort description shown in the channel guide
colorNoHex accent color e.g. "#ff6600"

The epg_urls array in the dict format lets you specify additional XMLTV sources that are merged with the built-in guide on startup. You can also manage EPG sources through the 📡 EPG button in the control bar.

📺 Commercial Breaks

To enable automatic commercial breaks between your local video files:

  1. Create a playlist file named commercials.xspf, commercials.m3u, or commercials.m3u8 in the same directory as the app.
  2. Or, place video files directly into a folder named commercials/.
  3. The app will automatically play 2–4 random commercials between every track in your local playlists (configurable in Settings).
  4. To disable commercials on a specific channel, set "commercials": "0" in its config entry.

⚙️ Settings

Click the button in the control bar to open the Settings dialog. All settings are saved to retrotv_settings.json and persist across restarts.

SettingDefaultDescription
Commercials min / max2 / 4Number of commercials played per break
EPG refresh interval6 hoursHow often the guide data is refreshed in the background
24-hour clockOffDisplay times in 24h format in the EPG guide
Hardware accelerationOnUse GPU decoding in VLC (requires restart)
Network buffer1500 msVLC's network/live caching delay (requires restart)
Resume last channelOnAutomatically tune to the last-watched channel on startup
Start fullscreenOffLaunch directly into fullscreen mode
Always on topOffKeep the RetroTV window above other windows
Suppress screensaverOnPrevent display sleep while in fullscreen
Use curated channelsOffAuto-update channel lineup from the remote server

📋 What's New

v1.9.0

Current Release

v1.8.0

v1.7.5

v1.7.2

v1.5.0

⚠️ Troubleshooting

"NO SIGNAL" or Black Screen:

"CHANNEL OFFLINE" or red "NOT BROADCASTING" indicator:

EPG/Guide shows "No schedule available":

DVR recording fails or ● REC button shows "ffmpeg Not Found":

Scheduled recording didn't fire:

Watermark has black background:

Local file won't play / "BUFFERING (RETRY)" message:

Volume changes have no effect:

Stream freezes and doesn't recover:

Sleep timer closed the app during a recording:

💖 Support & Donations

RetroTV is a passion project. If you enjoy the nostalgia trip and want to support development:

♥ Donate via PayPal

📜 License

This project is distributed as-is. Please respect the terms of service of any streams you access through this player. VLC is released under the LGPL license. ffmpeg is released under the LGPL/GPL license.

© 2026 N5 Networks. All Rights Reserved.