M3U-Playlists und EPG bei IPTV — technische Grundlagen ohne Vereinfachung
M3U ist keine Audiodatei, EPG kein Sender-Dienst und HLS kein Player. Wer diese Formate versteht, löst EPG-Probleme in Minuten und beurteilt Anbieterqualität am Dateiformat — nicht am Marketing.
Was eine M3U-Datei technisch ist — und was sie nicht ist
M3U steht für „MP3 URL" — die Endung stammt aus den 1990er-Jahren, als das Format für Audio-Playlists entwickelt wurde. Im IPTV-Kontext hat das Format seinen ursprünglichen Verwendungszweck längst hinter sich gelassen: Eine IPTV-M3U-Datei ist eine einfache UTF-8-Textdatei, die eine geordnete Liste von Stream-URLs enthält — eine pro Kanal — zusammen mit Metadaten für jeden Eintrag.
Die Dateiendung .m3u8 ist dabei keine eigene Kategorie, sondern bezeichnet dieselbe Struktur im UTF-8-Zeichensatz (das „8" steht für UTF-8). Ältere .m3u-Dateien können in anderen Zeichensätzen (ISO-8859-1) kodiert sein, was bei Umlauten zu Darstellungsfehlern führt. Für IPTV ist .m3u8 die modernere und empfohlene Variante.
Wichtig: Eine M3U-Datei enthält keine Videodaten. Sie ist ein Index, der auf die eigentlichen Stream-URLs verweist. Wenn ein Anbieter eine M3U-URL bereitstellt, liefert er damit eine Liste von Verweisen — die Streams selbst liegen auf separaten Servern, oft auf einem CDN.
Ihr Anbieter gibt Ihnen typischerweise eine URL, keine Datei. Die URL endet oft auf /get.php?username=…&type=m3u_plus — die App ruft diese URL ab und empfängt die M3U-Textdatei in Echtzeit. „m3u_plus" bezeichnet dabei das erweiterte Format mit #EXTINF-Metadaten, das alle modernen IPTV-Apps erwarten.
Aufbau einer M3U-Datei — annotiertes Beispiel
Die EXTINF-Attribute im Detail — was jede Eigenschaft bewirkt
Jedes Attribut in der #EXTINF-Zeile hat eine konkrete Funktion im Player. Falsch gesetzte oder fehlende Attribute sind die häufigste Ursache für EPG-Probleme und fehlende Kanallogos.
Die eindeutige Kanal-ID, über die der EPG-Eintrag aus der xmltv-Datei zugeordnet wird. Stimmt dieser Wert nicht mit dem channel id-Attribut in der EPG-XML überein, erscheint kein Programm — das ist der häufigste EPG-Fehler.
Der Anzeigename des Senders im Player. Unabhängig vom Kanal-Label am Ende der EXTINF-Zeile. Manche Apps nutzen diesen Wert für die Suche und Sortierung — er sollte exakt dem EPG-Sendernamen entsprechen.
tvg-name="Das Erste HD"URL zu einem Senderlogo (PNG oder JPG). Der Player lädt das Logo und zeigt es in der Kanalliste. Fehlt das Logo oder ist die URL nicht erreichbar, zeigt der Player ein Platzhalter-Icon — kein Fehler, aber optisch unvollständig.
tvg-logo="https://…/ard.png"Die Kanalgruppe, unter der der Sender im Player einsortiert wird. Ermöglicht das Ausblenden ganzer Gruppen (z. B. alle nicht-deutschen Sender). Konvention: „DE | Öffentlich-rechtlich", „DE | Privat", „NL | Public" — einheitliche Benennung erleichtert die Verwaltung.
group-title="DE | Öffentlich-rechtlich"Zeitversatz für den EPG-Guide in Stunden — positiv oder negativ. Nützlich wenn ein Anbieter EPG-Daten in UTC liefert, aber die Streams in CET/CEST laufen. Für Deutschland: tvg-shift="1" (Winterzeit) oder tvg-shift="2" (Sommerzeit).
Die EPG-URL, die direkt in der Playlist hinterlegt ist. Manche Apps lesen sie automatisch aus. Nicht alle Apps unterstützen dieses Attribut — TiviMate ignoriert es und erwartet die EPG-URL manuell in den Einstellungen.
x-tvg-url="https://…/epg.xml.gz"Eine Leerzeile zwischen der #EXTINF-Zeile und der darunterliegenden Stream-URL bricht den Kanaleintrag für viele Parser. Der Standard ist: EXTINF-Zeile, direkt darunter die URL, keine Leerzeile dazwischen. Dieser Fehler tritt auf, wenn Playlists manuell in einem Texteditor bearbeitet werden.
EPG und das xmltv-Format — wie der elektronische Programmführer technisch funktioniert
Der EPG (Electronic Programme Guide) ist eine separate XML-Datei, die Sendezeitpläne für alle Kanäle enthält. Das verwendete Format heißt xmltv — ein offener XML-Standard, der aus dem Open-Source-Projekt xmltv.org stammt und von nahezu allen IPTV-Apps und PVR-Systemen unterstützt wird.
Die EPG-Datei besteht aus zwei Hauptbereichen: einer Kanaldefinition (<channel>-Blöcke) und den Programm-Einträgen (<programme>-Blöcke). Der Player lädt die Datei regelmäßig (typischerweise alle 12–24 Stunden) und ordnet die Programmeinträge den Kanälen über die Kanal-ID zu.
Annotiertes xmltv-Beispiel
Das Datum-Zeitformat im xmltv-Standard lautet: YYYYMMDDHHmmss +HHMM. Der Offset +0200 entspricht CEST (Sommerzeit), +0100 entspricht CET (Winterzeit). Wenn der Anbieter alle Zeiten in UTC (+0000) ausliefert, aber Ihr Player den Offset nicht korrekt auswertet, verschiebt sich die Programmanzeige um 1–2 Stunden. Das ist der typische „Programm-Versatz"-Fehler.
EPG-Zuordnung: Das tvg-id-Prinzip
Die Verbindung zwischen M3U-Kanal und EPG-Programm ist ausschließlich über die ID hergestellt. Der Wert von tvg-id in der M3U muss exakt mit dem Wert von channel id in der EPG-XML übereinstimmen — Groß-/Kleinschreibung inklusive. ard.de und ARD.DE sind für den Parser verschiedene IDs.
| M3U tvg-id | EPG channel id | EPG erscheint? |
|---|---|---|
ard.de | ard.de | ✓ Ja |
ARD.de | ard.de | ✗ Nein (Groß-/Klein) |
Das Erste | ard.de | ✗ Nein (anderer Wert) |
ard.de | ard.de (Leerzeichen) | ✗ Nein (Leerzeichen) |
EPG-Dateigröße und Komprimierung
EPG-Dateien für große Senderlisten (5.000+ Kanäle, 7-Tage-Programm) erreichen schnell 50–200 MB. Das ist für manche Player und Geräte zu groß — insbesondere ältere Fire TV Sticks mit wenig RAM. Anbieter komprimieren EPG-Dateien daher oft als GZIP (.xml.gz). TiviMate, OTT Navigator und GSE IPTV unterstützen komprimierte EPG-URLs direkt. Tragen Sie statt der .xml-URL die entsprechende .xml.gz-URL ein.
HLS, MPEG-TS und RTMP — welches Protokoll was bedeutet
Die Stream-URL am Ende jedes M3U-Eintrags verrät bereits das verwendete Protokoll. Für Nutzer ist das nicht nur akademisch: Ältere Geräte oder Apps unterstützen bestimmte Protokolle nicht, und das richtige Protokoll beeinflusst Latenz und Fehlertoleranz.
Das meistgenutzte IPTV-Protokoll. Der Stream wird in kleine Segmente (2–10 Sekunden) aufgeteilt, die per HTTP einzeln abgerufen werden. URL endet auf .m3u8 (Playlist) oder .ts (Segment). Vorteil: Adaptive Bitrate (ABR) möglich — der Player wechselt automatisch auf niedrigere Qualität bei schlechter Verbindung. Nachteil: Höhere Latenz (Buffer-Vorladung nötig). Empfohlen für alle modernen Geräte.
Ursprüngliches IPTV-Protokoll, übertragen per UDP (kein Verbindungsaufbau, keine Retransmission). URL beginnt mit udp:// oder rtp://. Geringere Latenz als HLS, aber ohne Fehlerkorrektur: Verlorene Pakete erzeugen Bildstörer statt Buffering. Nur in kontrollierten Netzwerken (LAN, VLAN) zuverlässig. Über das öffentliche Internet oft instabil.
Älteres Streaming-Protokoll, ursprünglich für Flash-Player entwickelt. URL beginnt mit rtmp://. Wird im IPTV-Bereich seltener, aber noch vereinzelt genutzt. Neuere Betriebssysteme (iOS/tvOS, Android 12+) haben RTMP-Support entfernt oder eingeschränkt. Falls RTMP-Streams nicht starten: App mit explizitem RTMP-Support wählen (z. B. VLC unter Windows/Linux).
| Protokoll | URL-Prefix | Latenz | Fehlertoleranz | Gerätekompatibilität 2026 |
|---|---|---|---|---|
| HLS | https://…/index.m3u8 |
Mittel (2–10 s Puffer) | Hoch (TCP-Retransmission) | Universell — alle modernen Geräte |
| MPEG-TS (UDP) | udp://… / rtp://… |
Niedrig (< 1 s) | Niedrig (kein Retransmit) | LAN/Heimnetz; öffentliches Internet meist instabil |
| RTMP | rtmp://… |
Niedrig bis mittel | Mittel | Eingeschränkt — iOS/tvOS nicht unterstützt |
| HTTP (direkt) | http://… / https://… |
Geräteabhängig | Mittel (TCP) | Gut — abhängig von Player-Unterstützung |
Streams mit VLC testen — bevor Sie eine App konfigurieren
VLC ist das schnellste Diagnosewerkzeug für M3U-Streams. Ein Stream, der in VLC nicht läuft, wird in keiner anderen App funktionieren. Ein Stream, der in VLC läuft, ist das Problem in der App — nicht im Stream.
VLC-Test: Einzelnen Stream prüfen
→ Stream-URL eintragen (aus der M3U kopieren)
→ Öffnen klicken
Oder per Kommandozeile:
vlc "https://stream.example.com/ard/index.m3u8"
# Vollständige M3U-Playlist öffnen:
vlc "https://ihr-anbieter.com/get.php?username=X&password=Y&type=m3u_plus"
ffprobe: Stream-Eigenschaften analysieren
Mit ffprobe (Teil des ffmpeg-Pakets) können Sie exakte Stream-Parameter abrufen: Codec, Auflösung, Bitrate, Audio-Format. Das hilft bei der Diagnose von Kompatibilitätsproblemen — z. B. wenn ein Stream in VLC läuft, aber auf dem Fire TV Stick ruckelt.
"https://stream.example.com/ard/index.m3u8"
# Gibt aus: Codec (h264/hevc), Auflösung (1920x1080),
# Bitrate (ca. Kbit/s), Audio-Codec (aac/ac3/eac3)
Was VLC-Diagnose zeigt
| VLC-Verhalten | Diagnose-Aussage |
|---|---|
| Stream läuft flüssig in VLC | URL und Server korrekt; Problem liegt in der App oder im Gerät |
| VLC zeigt „404 Not Found" | Stream-URL abgelaufen oder falsch; M3U neu laden |
| VLC zeigt „403 Forbidden" | Abonnement abgelaufen oder IP-Sperre aktiv |
| VLC startet, bricht nach 2 s ab | Token-basierte URL (zeitlich begrenzt); M3U neu abrufen |
| Video in VLC, kein Ton | Audio-Codec nicht unterstützt (AC3/EAC3) — in VLC Einstellungen → Audio → Codec prüfen |
| VLC lädt unbegrenzt, kein Bild | UDP-Stream (MPEG-TS) — VLC benötigt Port-Freigabe; oder Server nicht erreichbar |
Öffnen Sie die EPG-URL direkt im Browser. Eine gültige xmltv-Datei zeigt XML-Code mit <tv>-Root-Element. Wenn der Browser eine Fehlerseite oder keine Daten zeigt, ist die EPG-URL falsch oder der Server nicht erreichbar — unabhängig von der App. Komprimierte .xml.gz-Dateien werden im Browser als Download angeboten, nicht als Text angezeigt — das ist korrekt.
Kanalgruppen, Playlist-Qualität und was eine sorgfältig gepflegte M3U von einer schlechten unterscheidet
Merkmale einer qualitativ hochwertigen M3U
- Konsistente tvg-id-Vergabe: Alle Sender haben eine eindeutige, EPG-kompatible ID — keine Duplikate, keine Leerzeichen, keine Sonderzeichen.
- Vollständige group-title-Zuordnung: Jeder Kanal gehört einer logischen Gruppe an. Kein Sender landet in einer leeren oder falschen Gruppe.
- Funktionierende Logo-URLs: Alle
tvg-logo-URLs sind erreichbar und liefern ein Bild — nicht ein 404 oder ein falsches Logo. - Saubere UTF-8-Kodierung: Umlaute (ä, ö, ü) und Sonderzeichen erscheinen korrekt — kein Zeichensatz-Mischmasch.
- Aktive Stream-URLs: Alle URLs sind erreichbar und liefern einen aktiven Stream — nicht nur technisch korrekt formatierte URLs zu inaktiven Streams.
- Regelmäßige Aktualisierung: Tote Streams werden zeitnah entfernt oder ersetzt — die Playlist wächst nicht nur, sondern wird bereinigt.
Woran man eine schlecht gewartete Playlist erkennt
- Doppelte Kanäle: Derselbe Sender erscheint 3–5 Mal mit leicht verschiedenen Namen — oft Überreste von zusammengeführten Quellen ohne Bereinigung.
- Generische group-titles: Alle 10.000 Kanäle sind in „Alle Sender" oder „Gruppe 1" sortiert — keine nutzbare Struktur.
- Fehlende tvg-id: Viele Einträge haben kein tvg-id-Attribut oder einen generischen Wert wie
ch1— EPG-Zuordnung unmöglich. - Tote Streams ohne Bereinigung: Beim Testen laufen 30–40 % der Streams nicht — die Senderzahl ist nominal hoch, die Verfügbarkeit niedrig.
- RTMP-only bei Premium-Sendern: Sport- und Premium-Kanäle liefern ausschließlich RTMP-Streams — auf Apple TV und iOS nicht abspielbar.
Sie können eine eigene M3U-Playlist aus öffentlich verfügbaren Streams zusammenstellen — z. B. öffentlich-rechtliche Sender. Wie das funktioniert und welche rechtlichen Einschränkungen gelten: M3U-Playlist erstellen und testen.
Fragen zu M3U, EPG und Stream-Protokollen
.m3u-Dateien können in verschiedenen Zeichensätzen (ISO-8859-1, Windows-1252 oder UTF-8) kodiert sein. .m3u8-Dateien sind per Definition immer UTF-8 — was für Umlaute in deutschen Sendernamen wichtig ist. Für IPTV empfiehlt sich immer UTF-8, also .m3u8. Die meisten IPTV-Apps akzeptieren beide Endungen und lesen den Zeichensatz automatisch aus.
tvg-id in der M3U stimmt nicht exakt mit dem channel id-Attribut in der EPG-XML überein — Groß-/Kleinschreibung und Leerzeichen beachten. (2) Der EPG-Zeitversatz im Player ist falsch eingestellt — für Deutschland +1 (Winter) oder +2 (Sommer) in Stunden, oder 0 wenn die EPG-Datei bereits lokale Zeit enthält. (3) Die EPG-Datei ist zu groß für den Player — komprimierte .xml.gz-Version verwenden. (4) Die EPG-URL ist nicht mehr erreichbar — im Browser direkt prüfen.
.m3u8 — es ist tatsächlich eine weitere M3U-Datei, nur auf einer anderen Ebene. Das Hauptvorteil von HLS: Adaptive Bitrate Streaming — der Player kann automatisch auf eine niedrigere Qualitätsstufe wechseln, wenn die Bandbreite sinkt.
+0100 oder +0200 im Zeitstempel), ist der korrekte Versatz 0.
EPG-Problem oder Stream-Frage? Wir helfen via WhatsApp
tvg-id-Abgleich, EPG-URL-Test oder Protokollfrage — konkrete technische Hilfe direkt über WhatsApp.