Skip to content

Closery/open-iptv-player

Repository files navigation

Open IPTV Player Screenshot

Open IPTV Player

Open source IPTV client built with Tauri (Rust) + React + TypeScript. Supports Xtream Codes API providers — browse live channels, movies, and series from your IPTV subscription.

Development status: The app is still in early development. Live streams work; movies and series do not work when the provider serves them as MKV. For that case I added an experimental transcode pipeline and a Test section in the UI (MKV → HLS via FFmpeg), but that part is still under active development. Transcoding, HLS, and low-level streaming are areas I’m still learning — if you have experience there, your help and contributions are especially appreciated.

Features

  • Live TV — browse categories and channels, stream via HLS
  • Movies — browse VOD library, play with the built-in player
  • Series — browse series, seasons, and episodes
  • Transcode test — experimental MKV → HLS transcoding via FFmpeg (local pipeline, does not affect the main player)

Tech Stack

Layer Technology
Desktop shell Tauri 2 (Rust)
Frontend React 19 + TypeScript + Vite
Video playback hls.js
IPTV protocol Xtream Codes API
Transcoding FFmpeg subprocess + tiny_http

Prerequisites

  • Node.js 18+
  • Rust (stable toolchain)
  • Yarn (or npm)
  • macOS / Linux / Windows (Tauri 2 supports all three)

For the transcode test feature only:

  • FFmpegbrew install ffmpeg on macOS

Getting Started

# Clone
git clone https://github.com/Closery/open-iptv-player.git
cd open-iptv-player

# Install JS dependencies
yarn install

# Run in development mode (hot-reload)
yarn tauri dev

# Build for production
yarn tauri build

Usage

  1. Launch the app.
  2. Enter your Xtream Codes server URL, username, and password on the login screen.
  3. Browse Live TV, Movies, or Series from the sidebar.

Credentials are stored locally in localStorage (no external servers involved).

Known Issues

  • Movies & series (MKV): When the provider serves VOD as MKV, playback fails in the main player. Use the Test section to try the experimental MKV → HLS transcode pipeline (requires FFmpeg).
  • Transcode pipeline: Still unstable with IPTV URLs (e.g. segment loading, buffering). Local MKV files tend to work; improvements in progress.

Future Plans

  • Better player — improved playback UX, controls, and reliability.
  • UI overhaul — full redesign for clearer layout and easier use on desktop and beyond.
  • Multi‑platform — prepare for mobile (Tauri 2 mobile) and optionally a web build where it makes sense.

Project Structure

iptv/
├── src/                        # React frontend
│   ├── api/xtream.ts           # Xtream Codes API client
│   ├── components/             # Shared UI components (Layout, VideoPlayer)
│   ├── context/AuthContext.tsx # Auth state management
│   ├── features/               # Page-level feature modules
│   │   ├── auth/               # Login screen
│   │   ├── live/               # Live TV
│   │   ├── movies/             # Movies / VOD
│   │   ├── series/             # Series
│   │   └── test/               # Transcode test (FFmpeg/HLS)
│   └── types/                  # TypeScript type definitions
└── src-tauri/                  # Rust backend
    └── src/
        ├── lib.rs              # Tauri app entry, command registration
        └── transcoder.rs       # FFmpeg subprocess + tiny_http HLS server

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

GPL-3.0 © 2026 closery

About

Modern & lightweight IPTV client built with Tauri, Rust, and React. Supports Xtream Codes API with a focus on speed and privacy.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors