Enterprise-Grade IPTV Core SDK for Flutter & Dart. Handles multi-source stream ingestion (M3U/M3U8, XMLTV EPG, Xtream Codes, iptv-org), real-time stream health monitoring, local persistence, and cross-platform video player abstractions.
Part of the DevelopersCoffee open-source ecosystem.
🌐 Interactive Documentation & Live Preview: https://developerscoffee.github.io/iptv_org_api/
If you are using AI coding assistants (Antigravity, Cursor, Claude, Copilot, etc.), copy and execute the prompt below:
Run `npx skills use "https://github.com/flutter/agent-plugins" --skill "flutter-apply-architecture-best-practices"`- ⚡ Memory-Efficient Stream Ingestion: Stream-reads massive M3U/M3U8 playlists (100k+ channels) under 15MB RAM.
- 📺 Unified EPG Parser (XMLTV): Parses program schedules, timeline sync, and live progress indicators.
- 📡 Xtream Codes Compatibility: Connects directly to industrial Xtream Codes backends (
/player_api.php) for live streams, VOD, and categories. - 🩺 Dynamic Stream Health Monitoring: Concurrent HEAD/range HTTP probing for latency timing and status verification.
- 💾 Local Persistence & Caching: Indexed search, category filtering, favorites, and offline EPG program lookup.
- 🎬 Universal Player Surface Abstraction: Unified player controller (
IptvPlayerController) across iOS, Android, macOS, Windows, Linux, and Web.
dependencies:
iptv_org_api: ^2.0.0import 'package:iptv_org_api/iptv_org_api.dart';
void main() async {
final sdk = IptvClient();
const m3uContent = '''
#EXTM3U
#EXTINF:-1 tvg-id="CNN.us" group-title="News",CNN HD
http://stream.example.com/cnn/live.m3u8
''';
final channels = await sdk.loadM3uPlaylist(m3uContent);
print('Loaded ${channels.length} channels');
final newsChannels = await sdk.searchChannels('News');
print('Found ${newsChannels.length} news channels');
}final healthChecker = IptvHealthChecker();
final status = await healthChecker.verifyStream('http://stream.example.com/live.m3u8');
if (status.isAlive) {
print('Stream active! Latency: ${status.latencyMs}ms, MIME: ${status.mimeType}');
}final xtream = await sdk.connectXtream(
baseUrl: 'http://xtream.server:8080',
username: 'user123',
password: 'pass456',
);
final streams = await xtream.getLiveStreams();
print('Active Xtream Streams: ${streams.length}');- 🐛 Bug Reports & Feature Requests: Open an issue or pull request on GitHub.
- 💼 Enterprise Consulting & Custom Development: Contact us at developerscoffee.com.
MIT License - see LICENSE for details. Maintained with ❤️ by DevelopersCoffee.