OpenIPTV is a Flutter-based IPTV player for Android TV / Fire TV and desktop platforms. It is designed for remote-control-friendly navigation and focuses on local media management, playlist-based streaming, favorites, downloads, recordings, casting, and secure profile transfer between your own devices.
OpenIPTV does not provide channels, playlists, VOD catalogs, or subscriptions. You bring your own M3U or Xtream sources.
- Live TV playback with EPG integration.
- VOD and series browsing.
- Support for M3U playlists and Xtream sources.
- Favorites and watch-style library collections.
- Search across loaded content.
- Local downloads and download management.
- Recording schedules and Android recording helpers.
- Picture-in-picture support where the platform supports it.
- Local-network casting and remote playback control.
- Password-protected profile import/export and authenticated auto-sync.
- Resume support for the last visited route and playback-related state.
- Multi-language UI.
- TV-first focus handling and D-pad / remote navigation.
The app currently exposes these primary sections:
- Live TV
- VOD
- Favorites
- Search
- Downloads
The player route is opened separately for live streams, movies, and series episodes.
OpenIPTV currently supports:
- M3U playlists
- Xtream-based providers
Depending on the configured source, the app can also load XMLTV-backed EPG data and Xtream catalog metadata.
This repository is a Flutter project with Android, iOS, macOS, Linux, and Windows folders. The current development workflow in this repository explicitly provides build tasks for:
- Android APK
- Android App Bundle (
.aab) - Linux bundle
- Windows bundle
Desktop playback uses fvp on Linux, Windows, and macOS.
The app ships with UI translations for:
- German
- English
- French
- Spanish
- Italian
- Portuguese
- Dutch
- Polish
- Czech
- Hungarian
- Romanian
- Swedish
- Danish
- Finnish
- Greek
- Ukrainian
- Flutter
- Dart
flutter_blocfor state managementgo_routerfor navigationdiofor network accessshared_preferencesand local file storage for persistent statevideo_playerandfvpfor playback
The project follows a layered Flutter structure:
lib/appfor app bootstrap and routinglib/corefor constants, localization, and theme setuplib/datafor local/remote datasources and repositorieslib/domainfor entities and repository interfaceslib/presentationfor pages, widgets, and BLoC statelib/servicesfor playback-related platform bridges and app servicestestfor widget, service, and repository testsdocsfor feature-specific documentation
- Flutter SDK compatible with the project constraints in
pubspec.yaml - Dart SDK matching the Flutter version
- Android SDK for Android builds
- Platform-specific toolchains for Linux or Windows builds if needed
flutter pub getflutter runIf you want to target a specific device:
flutter devices
flutter run -d <device-id>On first launch, the app routes to onboarding if no source has been configured yet. Once sources are available, the app resumes into the last supported main route when possible.
Important local storage concerns:
- Playlist URLs, Xtream credentials, favorites, watch data, playback data, downloads, and recording metadata can be stored locally on the device.
- Profile transfer and auto-sync are intended for your own devices and are protected by authentication when enabled.
flutter build apkArtifact:
build/app/outputs/flutter-apk/app-release.apk
flutter build appbundleArtifact:
build/app/outputs/bundle/release/app-release.aab
flutter build linuxThe VS Code task Build Linux Bundle also builds a Debian package automatically:
build/linux/x64/release/debian/open-iptv_<version>_amd64.deb
The VS Code task Build Linux Arch Package builds an Arch package automatically:
build/linux/x64/release/arch/open-iptv-<version>-<pkgrel>-<arch>.pkg.tar.zst
The Arch packaging step uses makepkg. On Arch Linux it can use local base-devel; on Ubuntu or other hosts without makepkg, the script automatically runs the packaging step in Docker with the archlinux:base-devel image.
flutter build windowsThe VS Code task Build Windows Bundle also builds release artifacts automatically:
build/windows/x64/release/open-iptv_<version>_windows_x64_setup.exebuild/windows/x64/release/open-iptv_<version>_windows_x64_portable.zip
The installer uses logo.png for the setup icon and wizard images. Inno Setup 6 must be installed and ISCC.exe must either be available on PATH or in the standard Inno Setup installation directory.
The repository includes ready-to-use build tasks in .vscode/tasks.json:
Build Android APKBuild Android App BundleBuild Linux BundleBuild Linux Arch PackageBuild Windows Bundle
These tasks inject build metadata through --dart-define values such as build date, git SHA, and build channel.
The Linux task additionally runs scripts/build_linux_deb.sh and emits a .deb package from the release bundle.
The Arch Linux task additionally runs scripts/build_linux_arch.sh and emits a .pkg.tar.zst package from the release bundle. If local makepkg is unavailable, Docker is used for the Arch packaging step.
The Windows task additionally runs scripts/build_windows_release.ps1 and emits an Inno Setup installer plus a portable ZIP from the release bundle.
Android release builds are configured to load signing properties from:
android/key.properties
Typical values include:
storeFilestorePasswordkeyAliaskeyPassword
Do not commit your real keystore or secret signing credentials.
Run all tests:
flutter testRun a specific test file:
flutter test test/presentation/pages/favorites/favorites_page_test.dart- Privacy policy: datenschutz.md
- Profile sync security concept: docs/profile-sync-security-concept.md
OpenIPTV is a player application only.
- It does not include IPTV content.
- It does not sell subscriptions.
- It does not guarantee the legality of third-party playlists or providers.
- You are responsible for the sources, credentials, streams, downloads, and recordings you use with the app.
If you plan to contribute:
- keep changes focused and platform-aware,
- add or update tests for behavior changes,
- prefer minimal, targeted edits over broad refactors,
- document user-visible behavior changes in the relevant docs when needed.
See publication preparation for clean-history publication, licensing and signing setup.
Copyright (c) 2026 OpenIPTV contributors.
Original OpenIPTV code is licensed under the GNU General Public License version 3 (SPDX: GPL-3.0-only). You may redistribute and modify it under version 3 of that license. It is provided without any warranty, including the implied warranties of merchantability or fitness for a particular purpose.
When distributing modified or derived versions, you must provide the corresponding source code under GPLv3 and comply with its notice and distribution requirements. Private modifications do not have to be published. Third-party code, libraries and assets retain their respective licenses and copyright notices; the root license does not relicense those components. See the LICENSE files in third_party and the notices supplied by dependencies.