Name: OpenIPTV
Plattformen: Android, iOS, Windows, Linux
Zweck: IPTV-Streaming-Anwendung für Live TV und Video on Demand
- Flutter (empfohlen) - Single Codebase für alle Plattformen
- Dart als Programmiersprache
- Native Performance
- Großes Ökosystem für Video-Streaming
- JavaScript/TypeScript
- Gute Windows-Unterstützung durch react-native-windows
- video_player (Flutter) + chewie für UI
- ExoPlayer für Android (nativ)
- AVPlayer für iOS (nativ)
- VLC als Fallback für schwierige Formate
Linux-Hinweis:
- Fuer native In-App-Wiedergabe unter Linux nutzt OpenIPTV
media_kit. - Build-Voraussetzung auf Debian/Ubuntu:
sudo apt-get install libmpv-dev libasound2-dev - Ohne diese Pakete schlaegt
flutter build linuxbei nativer Wiedergabe fehl.
- M3U/M3U8 Parser implementieren
- Xtream Codes API Client
- Lokale Playlist-Speicherung
- Cloud-Sync (optional)
- Mehrere Playlists verwalten
- Auto-Update von Playlists
- Kanal-Liste mit Kategorien
- EPG (Electronic Program Guide) Integration
- Favoriten-System
- Zuletzt angesehen
- Kanal-Suche
- Kanalwechsel mit Gesten/Fernbedienung
- Film-Bibliothek
- Serien mit Staffeln/Episoden
- Kategorien und Genres
- Suchfunktion
- Weiterschauen-Funktion (Resume)
- Watchlist
- Adaptive Bitrate Streaming (HLS/DASH)
- Untertitel-Support (SRT, VTT, SSA)
- Multi-Audio-Track Support
- Picture-in-Picture (PiP)
- Chromecast/AirPlay Support
- Bild-Anpassungen (Aspect Ratio, Zoom)
- Live-Stream Aufnahme in lokale Datei
- Geplante Aufnahmen (Timer-basiert)
- EPG-basierte Aufnahmeplanung
- Serien-Aufnahme (alle Episoden automatisch)
- Aufnahme-Manager (Liste, Löschen, Umbenennen)
- Hintergrund-Aufnahme während anderer Wiedergabe
- Speicherort-Verwaltung (intern/extern/NAS)
- Aufnahme-Qualität auswählen
- Timeshift (Live-TV pausieren und zurückspulen)
- Automatisches Löschen nach X Tagen (optional)
Unterstützte Tags:
- #EXTM3U
- #EXTINF (Dauer, Name, Attribute)
- #EXTGRP (Gruppen)
- #EXTVLCOPT (VLC-Optionen)
- tvg-id, tvg-name, tvg-logo, group-title
Endpoints:
- /player_api.php?username=X&password=Y
- action=get_live_categories
- action=get_live_streams
- action=get_vod_categories
- action=get_vod_streams
- action=get_series
- action=get_series_info
- action=get_short_epg
- action=get_simple_data_table
- XMLTV Format - Standard EPG-Format (.xml, .xml.gz)
- Xtream Codes EPG - Integriert über Provider-API
- JTV Format - Älteres EPG-Format Support
- EPG.best - Kostenlose EPG-Daten für viele Länder
- WebGrab+Plus - Open Source EPG Grabber
- tv.de / tvspielfilm.de - Deutsche Sender
- Rytec EPG - Europäische Sender
- i.mjh.nz - Australien/Neuseeland
- iptv-org/epg - Community-gepflegte EPG-Daten (GitHub)
- epg.112114.xyz - Asiatische Sender
- epgshare01.online - Internationale Quellen
- guide.smoothstreams.tv - US/UK Sender
- epg.ovh - Französische Sender
- ottclub.cc - Russische Sender
- epg.51zmt.top - Chinesische Sender
- Multi-Source EPG Merging
- EPG-Caching mit konfigurierbarer Dauer
- Automatisches EPG-Update (täglich/wöchentlich)
- EPG-Mapping (Kanal-ID zu EPG-ID)
- EPG-Suche nach Sendungen
- Erinnerungen für Sendungen
- EPG-Grid-Ansicht (Programmübersicht)
- EPG-Daten für Aufnahmeplanung nutzen
- Fallback-EPG bei fehlenden Daten
- Benutzerdefinierte EPG-URLs hinzufügen
lib/
├── main.dart
├── app/
│ ├── app.dart
│ └── routes.dart
├── core/
│ ├── constants/
│ ├── errors/
│ ├── network/
│ └── utils/
├── data/
│ ├── datasources/
│ │ ├── local/
│ │ └── remote/
│ ├── models/
│ └── repositories/
├── domain/
│ ├── entities/
│ ├── repositories/
│ └── usecases/
├── presentation/
│ ├── blocs/
│ ├── pages/
│ │ ├── home/
│ │ ├── live_tv/
│ │ ├── vod/
│ │ ├── onboarding/
│ │ └── settings/
│ └── widgets/
└── services/
└── m3u_parser.dart
- BLoC/Cubit (empfohlen) oder Riverpod
- Klare Trennung von UI und Business Logic
- Hive oder Isar für Flutter
- Caching von Playlists, EPG-Daten, Einstellungen
- Onboarding - Playlist hinzufügen
- Home - Dashboard mit Übersicht
- Live TV - Kanalliste mit EPG
- VOD - Filme & Serien Browser
- Suche - Globale Suche
- Favoriten - Gespeicherte Inhalte
- Einstellungen - App-Konfiguration
- Player - Vollbild-Player
- Dark Mode als Standard (TV-optimiert)
- 10-Foot UI für TV/Desktop
- Touch-optimiert für Mobile
- Tastatur/Fernbedienungs-Navigation
- Projekt-Setup mit Flutter
- Basis-Architektur implementieren
- Navigation einrichten
- M3U Parser entwickeln
- Grundlegende UI-Komponenten
- Playlist-Management
- Xtream API Integration
- Live TV Ansicht
- Basis Video Player
- Kanal-Kategorien
- VOD Browser
- Serien-Support
- EPG Integration
- Suche implementieren
- Erweiterte Player-Features
- PiP Support
- Untertitel
- Favoriten & Watchlist
- Weiterschauen-Funktion
Stand PiP:
- Android: native PiP-Bridge im Player verdrahtet
- iOS: nativer AVPlayer-Host mit AVPictureInPictureController und Resume-Position verdrahtet
- Desktop: Windows/Linux schalten ueber denselben Einstieg in einen Always-on-top-Mini-Player
- Performance-Optimierung
- Fehlerbehandlung
- Testing auf allen Plattformen
- Store-Listings vorbereiten
dependencies:
flutter:
sdk: flutter
# State Management
flutter_bloc: ^8.x
# Networking
dio: ^5.x
# Video Player
video_player: ^2.x
chewie: ^1.x
# Local Storage
hive: ^2.x
hive_flutter: ^1.x
# Utilities
xml: ^6.x
path_provider: ^2.x
cached_network_image: ^3.x
# Platform Specific
window_manager: ^0.x # Windows/Linux
wakelock_plus: ^1.x- Keine Klartext-Speicherung von Credentials
- HTTPS für alle API-Calls
- Secure Storage für sensible Daten
- App ist nur ein Player - keine Inhalte inkludiert
- Nutzer sind für ihre Playlists verantwortlich
- Disclaimer im Onboarding
- Unit Tests für Parser und API-Clients
- Widget Tests für UI-Komponenten
- Integration Tests für kritische Flows
- Manuelles Testing auf echten Geräten
- Multi-Screen Support
- Parental Controls
- Multi-User Profile
- Widgets (Android/iOS)
- Watch Party Feature
- Sprachsteuerung
- Android TV / Apple TV native Apps
- Flutter-Projekt initialisieren
- Basis-Architektur aufsetzen
- M3U Parser als erstes Feature implementieren
- Einfachen Video-Player integrieren
- Iterativ Features hinzufügen
Erstellt: April 2026