Skip to content

GCHOfficial/iptvs

Repository files navigation

iptvs

Build License: GPL v3

A cross-platform IPTV player for Windows and Android (including Android TV), built with Flutter and libmpv. It connects to your own IPTV provider, caches its channel/VOD/EPG data locally, enriches movie/series metadata from public APIs, and plays streams with true HDR — handling HEVC / AC-3 / MPEG-TS that a plain video element can't.

iptvs ships no channels, playlists, or content of its own and is not affiliated with any IPTV provider. You bring your own provider credentials. See Disclaimer.

Features

  • Providers, one interface — Stalker (MAG portal), Xtream Codes, and M3U/M3U8 playlists, plus a built-in demo source. Live TV, Movies (VOD), and Series.
  • True HDR — HDR10, HDR10+, HLG, and Dolby Vision Profile 8 play through the hardware decoder to the display; Dolby Vision Profile 5 is reshaped via a libdovi-enabled libmpv. Dynamic range is read from the decoder, so the badge matches what your TV actually receives.
  • Android TV / D-pad — fully navigable with a remote (Leanback launcher, focus rings, "OK to edit" fields and sliders). One universal APK serves phone + TV.
  • EPG & metadata — XMLTV EPG with now/next and a live progress strip; posters, overviews, and ratings pulled from TMDB / TVDB / MDBList.
  • Resilient live playback — auto-reconnect with backoff when a live stream stalls or drops, plus a "Go to live" control.
  • Native overlays — a Windows (D3D11) and Android (Compose) player overlay at parity: play/pause, ±10s, scrubber, audio/subtitle/speed menus, aspect cycle, resolution/HDR/FPS/clock badges, and an info panel.
  • Optional web panel — manage and reorder your source list from a browser and pull it onto each device by entering a short pairing code (or push a device's list back up), with no login on the TV. Off unless built with cloud config. See Cloud sync.

Platforms

Platform Status
Windows (x64) Supported — native D3D11 HDR path
Android phone / Android TV Supported — single universal APK
Linux / macOS / iOS Builds via Flutter; not a focus / untested

Download

Grab the latest Windows zip and Android APK from the Releases page. The APK installs on both phones and Android TV.

Build from source

Requires the Flutter 3.44.2 stable toolchain (the version CI pins).

flutter pub get
flutter run -d windows   # or: -d android

Platform notes:

  • Android needs Git LFS. The Dolby Vision libmpv AAR (android/app/libs/libmpv-dovi.aar, ~48 MB) is stored in Git LFS — run git lfs install && git lfs pull before an Android build, or it won't link. See android/app/libs/README.md.
  • Windows fetches a libplacebo/Dolby-Vision libmpv-2.dll automatically at CMake configure time (hash-verified); drop your own in windows/libmpv/ to override. See windows/libmpv/README.md.

CI expectation: flutter analyze is clean and flutter test is green.

Cloud sync (optional)

Maintaining a source list with a TV remote is painful, so iptvs can optionally talk to a web panel — a static site on GitHub Pages backed by Supabase — where you manage, reorder, and keep your sources and metadata keys with a real keyboard. Each device pulls the list down after a one-time pairing code, so there is no login on the TV — and can optionally push its own list back up (newest change wins).

  • Private by design — sources are isolated per account by Postgres row-level security; the app and panel ship only the public anon/publishable key, and the service_role key is never embedded anywhere. Devices authenticate anonymously and hold no direct write access; the optional push goes through an owner-scoped SECURITY DEFINER function that rejects any caller that isn't a paired device writing its own account's data.
  • Fully optional — builds without cloud config behave exactly as before; the cloud UI stays hidden (CloudConfig.isConfigured).

Setup lives in supabase/README.md (database, RLS, auth) and panel/README.md (the web app, deployed to Pages by pages.yml). To enable it in the app, build with the Supabase values — locally via flutter run --dart-define-from-file=dart_define.json (copy dart_define.example.json); in CI they come from repo Variables.

Disclaimer

iptvs is a player only. It contains no streams, playlists, or media, and it is not affiliated with, endorsed by, or connected to any IPTV provider. You are responsible for the source you configure and for complying with the laws and the provider terms applicable to you. The maintainers do not host, distribute, or provide access to any content.

License

Licensed under the GNU General Public License v3.0 — see LICENSE. iptvs distributes binaries linked against a GPL build of FFmpeg/mpv; the bundled third-party components and their corresponding source are listed in THIRD_PARTY_NOTICES.md.

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors