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.
- 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.
| 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 |
Grab the latest Windows zip and Android APK from the Releases page. The APK installs on both phones and Android TV.
Requires the Flutter 3.44.2 stable toolchain (the version CI pins).
flutter pub get
flutter run -d windows # or: -d androidPlatform notes:
- Android needs Git LFS. The Dolby Vision libmpv AAR
(
android/app/libs/libmpv-dovi.aar, ~48 MB) is stored in Git LFS — rungit lfs install && git lfs pullbefore an Android build, or it won't link. Seeandroid/app/libs/README.md. - Windows fetches a libplacebo/Dolby-Vision
libmpv-2.dllautomatically at CMake configure time (hash-verified); drop your own inwindows/libmpv/to override. Seewindows/libmpv/README.md.
CI expectation: flutter analyze is clean and flutter test is green.
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_rolekey is never embedded anywhere. Devices authenticate anonymously and hold no direct write access; the optional push goes through an owner-scopedSECURITY DEFINERfunction 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.
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.
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.