Skip to content

Latest commit

 

History

History
334 lines (269 loc) · 8.04 KB

File metadata and controls

334 lines (269 loc) · 8.04 KB

OpenIPTV - Implementierungsplan

Projektübersicht

Name: OpenIPTV
Plattformen: Android, iOS, Windows, Linux
Zweck: IPTV-Streaming-Anwendung für Live TV und Video on Demand


1. Technologie-Stack

Cross-Platform Framework

  • Flutter (empfohlen) - Single Codebase für alle Plattformen
    • Dart als Programmiersprache
    • Native Performance
    • Großes Ökosystem für Video-Streaming

Alternative: React Native mit Expo

  • JavaScript/TypeScript
  • Gute Windows-Unterstützung durch react-native-windows

Video Player

  • 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 linux bei nativer Wiedergabe fehl.

2. Kernfunktionen

2.1 Playlist-Management

  • M3U/M3U8 Parser implementieren
  • Xtream Codes API Client
  • Lokale Playlist-Speicherung
  • Cloud-Sync (optional)
  • Mehrere Playlists verwalten
  • Auto-Update von Playlists

2.2 Live TV

  • Kanal-Liste mit Kategorien
  • EPG (Electronic Program Guide) Integration
  • Favoriten-System
  • Zuletzt angesehen
  • Kanal-Suche
  • Kanalwechsel mit Gesten/Fernbedienung

2.3 Video on Demand (VOD)

  • Film-Bibliothek
  • Serien mit Staffeln/Episoden
  • Kategorien und Genres
  • Suchfunktion
  • Weiterschauen-Funktion (Resume)
  • Watchlist

2.4 Player-Features

  • 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)

2.5 Aufnahme (Recording/DVR)

  • 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)

3. API-Integration

3.1 M3U Parser

Unterstützte Tags:
- #EXTM3U
- #EXTINF (Dauer, Name, Attribute)
- #EXTGRP (Gruppen)
- #EXTVLCOPT (VLC-Optionen)
- tvg-id, tvg-name, tvg-logo, group-title

3.2 Xtream Codes API

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

3.3 EPG Sources

Primäre Quellen

  • XMLTV Format - Standard EPG-Format (.xml, .xml.gz)
  • Xtream Codes EPG - Integriert über Provider-API
  • JTV Format - Älteres EPG-Format Support

Öffentliche EPG-Anbieter

  • 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

Länder-spezifische Quellen

  • guide.smoothstreams.tv - US/UK Sender
  • epg.ovh - Französische Sender
  • ottclub.cc - Russische Sender
  • epg.51zmt.top - Chinesische Sender

EPG-Features

  • 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

4. Architektur

4.1 Projektstruktur (Flutter)

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

4.2 State Management

  • BLoC/Cubit (empfohlen) oder Riverpod
  • Klare Trennung von UI und Business Logic

4.3 Lokale Datenbank

  • Hive oder Isar für Flutter
  • Caching von Playlists, EPG-Daten, Einstellungen

5. UI/UX Design

5.1 Screens

  1. Onboarding - Playlist hinzufügen
  2. Home - Dashboard mit Übersicht
  3. Live TV - Kanalliste mit EPG
  4. VOD - Filme & Serien Browser
  5. Suche - Globale Suche
  6. Favoriten - Gespeicherte Inhalte
  7. Einstellungen - App-Konfiguration
  8. Player - Vollbild-Player

5.2 Design-Prinzipien

  • Dark Mode als Standard (TV-optimiert)
  • 10-Foot UI für TV/Desktop
  • Touch-optimiert für Mobile
  • Tastatur/Fernbedienungs-Navigation

6. Implementierungs-Phasen

Phase 1: Grundgerüst (2-3 Wochen)

  • Projekt-Setup mit Flutter
  • Basis-Architektur implementieren
  • Navigation einrichten
  • M3U Parser entwickeln
  • Grundlegende UI-Komponenten

Phase 2: Core Features (3-4 Wochen)

  • Playlist-Management
  • Xtream API Integration
  • Live TV Ansicht
  • Basis Video Player
  • Kanal-Kategorien

Phase 3: VOD & EPG (2-3 Wochen)

  • VOD Browser
  • Serien-Support
  • EPG Integration
  • Suche implementieren

Phase 4: Player & UX (2-3 Wochen)

  • 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

Phase 5: Polish & Release (2 Wochen)

  • Performance-Optimierung
  • Fehlerbehandlung
  • Testing auf allen Plattformen
  • Store-Listings vorbereiten

7. Abhängigkeiten (Flutter)

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

8. Sicherheit & Rechtliches

Sicherheit

  • Keine Klartext-Speicherung von Credentials
  • HTTPS für alle API-Calls
  • Secure Storage für sensible Daten

Rechtliche Hinweise

  • App ist nur ein Player - keine Inhalte inkludiert
  • Nutzer sind für ihre Playlists verantwortlich
  • Disclaimer im Onboarding

9. Testing-Strategie

  • 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

10. Zukünftige Features (Backlog)

  • Multi-Screen Support
  • Parental Controls
  • Multi-User Profile
  • Widgets (Android/iOS)
  • Watch Party Feature
  • Sprachsteuerung
  • Android TV / Apple TV native Apps

Nächste Schritte

  1. Flutter-Projekt initialisieren
  2. Basis-Architektur aufsetzen
  3. M3U Parser als erstes Feature implementieren
  4. Einfachen Video-Player integrieren
  5. Iterativ Features hinzufügen

Erstellt: April 2026