EPG: ein Programmführer, der getrennt reist
Der EPG (Electronic Program Guide, elektronischer Programmführer) ist das Raster, das anzeigt, was auf jedem Sender gerade und als Nächstes läuft. Beim digitalen Antennenfernsehen werden diese Informationen im Signal selbst übertragen, in genormten Tabellen nach dem DVB-Standard. Im Internet ist es anders: Das Video eines Senders und sein Programmführer kommen in der Regel auf zwei getrennten Wegen an.

Auf der einen Seite empfängt der Player den Videostream aus einer M3U-Playlist oder einer Xtream-Codes-Verbindung. Auf der anderen lädt er eine Programmführer-Datei herunter, fast immer im Format XMLTV, die mehrere Tage Programm für Dutzende oder Hunderte Sender beschreibt. Die Aufgabe des Players besteht dann darin, jeden Sender der Playlist seinem Raster in der Datei zuzuordnen.
Diese Trennung erklärt die meisten Probleme: Ein Sender kann einwandfrei laufen und trotzdem einen leeren Programmführer haben, weil Video und Programmführer nicht voneinander abhängen.
Der Aufbau einer XMLTV-Datei
XMLTV ist ein offenes Format, das Anfang der 2000er Jahre in der Open-Source-Community entstand und auf der Sprache XML beruht. Eine Datei enthält ein Wurzelelement <tv> und dann zwei Arten von Blöcken: die Sender und die Sendungen.
<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="beispiel">
<channel id="beispiel1.de">
<display-name>Beispiel 1</display-name>
<icon src="https://img.beispiel.de/bsp1.png"/>
</channel>
<programme start="20260928204500 +0200" stop="20260928223000 +0200" channel="beispiel1.de">
<title lang="de">Dokumentation am Abend</title>
<desc lang="de">Eine Reise ins Innere der Vulkane der Eifel.</desc>
<category lang="de">Dokumentation</category>
</programme>
</tv>
Das Element channel
Jedes <channel> trägt ein Attribut id, die eindeutige Kennung des Senders in dieser Datei. Sie ist oft wie ein Domainname aufgebaut (beispiel1.de), aber das ist nur eine Konvention: Jede beliebige Zeichenkette ist gültig. Außerdem enthält es einen oder mehrere Anzeigenamen (<display-name>) und manchmal ein Logo (<icon>).
Das Element programme
Jedes <programme> beschreibt eine Sendung: Startzeit (start), Endzeit (stop), betroffener Sender (channel, das die id eines Elements <channel> aufgreift), Titel und gegebenenfalls Inhaltsangabe, Kategorie, Folge, Jahr, Plakat oder Altersfreigabe. Die Sendungen sind voneinander unabhängig, sodass eine Datei von einigen Stunden bis zu mehreren Wochen abdecken kann.
Die Zuordnung zwischen Playlist und Programmführer: tvg-id
Die Verbindung zwischen dem Sender Ihrer Playlist und seinem Raster beruht auf dem Attribut tvg-id der Zeile #EXTINF. Die Regel ist einfach: Die tvg-id der Playlist muss Zeichen für Zeichen mit der id des <channel> in der XMLTV-Datei übereinstimmen.
#EXTINF:-1 tvg-id="beispiel1.de" group-title="Vollprogramm",Beispiel 1 HD
https://tv.beispiel.de/live/bsp1.m3u8
Steht in der Playlist tvg-id="Beispiel1.de" und im Programmführer id="beispiel1.de", scheitert die Zuordnung bei vielen Playern, weil der Vergleich Groß- und Kleinschreibung beachtet. Fehlt die tvg-id, versuchen manche Player eine Zuordnung über den Namen (tvg-name oder angezeigter Name) mit dem <display-name> des Programmführers; das ist weniger zuverlässig, denn „Beispiel 1 HD“ und „Beispiel 1“ sind nicht identisch.
Bei einer Xtream-Codes-Verbindung geschieht die Zuordnung grundsätzlich automatisch: Der Server liefert für jeden Sender ein Feld epg_channel_id, das die Rolle der tvg-id übernimmt, und einen XMLTV-Programmführer, der zu diesen Kennungen passt. Die Funktionsweise dieser API erläutert unser Artikel zu Xtream-Codes-Verbindungen, die Syntax der Playlists das M3U-Format Zeile für Zeile.
Uhrzeiten, Zeitzonen und Verschiebungen
XMLTV-Zeiten werden in der Form JJJJMMTThhmmss geschrieben, gefolgt von einer Abweichung von der koordinierten Weltzeit (UTC). So bedeutet 20260928204500 +0200 den 28. September 2026 um 20:45 Uhr, in einer Zeitzone, die UTC um zwei Stunden voraus ist, also 18:45 Uhr UTC.
In Deutschland, Österreich und der Schweiz (ebenso wie in Frankreich) gilt die gesetzliche Zeit UTC+1 im Winter (+0100) und UTC+2 im Sommer (+0200). Die Umstellung auf die Sommerzeit erfolgt am letzten Sonntag im März, die Rückkehr zur Winterzeit am letzten Sonntag im Oktober. Ein korrekter Programmführer für einen Sender dieser Zone muss die Abweichung also zu diesen Terminen ändern oder alles in UTC mit +0000 ausdrücken.
Der Player rechnet diese Zeiten anschließend in die Zeitzone Ihres Geräts um. Daher gibt es drei mögliche Quellen für eine Verschiebung:
| Symptom | Wahrscheinliche Ursache | Abhilfe |
|---|---|---|
| Der ganze Programmführer ist genau eine Stunde verschoben | Die Datei gibt eine feste Abweichung an, die die Zeitumstellung ignoriert, oder +0000, obwohl die Zeiten lokal sind | Einstellung zur Verschiebung des Programmführers im Player oder Attribut tvg-shift |
| Verschiebung um mehrere Stunden | Zeitzone des Geräts falsch eingestellt oder Programmführer für ein anderes Land | Datum, Uhrzeit und Zeitzone in den Systemeinstellungen prüfen |
| Nur ein Sender verschoben | Sender wird aus einer anderen Zeitzone gesendet oder absichtlich versetzt (Version „+1“) | tvg-shift nur für diesen Sender |
| Verschiebung um einige Minuten | Der Sender hält seine angekündigten Zeiten nicht ein | Keine: Der Programmführer gibt das geplante Raster wieder |
Das Attribut tvg-shift steht in einer Zeile #EXTINF und wird in Stunden angegeben, gegebenenfalls negativ oder mit Dezimalstellen: tvg-shift="-1" setzt den Programmführer für diesen Sender um eine Stunde zurück. Das ist ein Pflaster: Taucht die Verschiebung bei der Zeitumstellung auf oder verschwindet sie, liegt der eigentliche Fehler in der Quelldatei.
Eine letzte Falle, häufig bei TV-Sticks und Boxen: ein falsches Systemdatum. Hat das Gerät seine Uhr nicht synchronisiert (kein Netzwerk beim Start, fehlende Pufferbatterie), sucht der Player die Sendungen eines anderen Tages und zeigt nichts an. Aktivieren Sie in den Einstellungen die automatische Datums- und Zeiteinstellung.
Leerer Programmführer: die Ursachen der Reihe nach
Bleibt der Programmführer hartnäckig leer, gehen Sie methodisch vor, vom Einfachsten zum Technischsten.
- Der Programmführer ist noch nicht geladen. Eine große Datei kann beim ersten Download einige Sekunden bis mehrere Minuten brauchen, besonders auf einem schwachen Gerät. Lassen Sie den Player fertig werden und öffnen Sie dann die Senderliste erneut.
- Es ist keine Adresse für den Programmführer eingetragen. Bei einer M3U-Playlist braucht es entweder ein Attribut
url-tvgim Kopf oder eine in den Einstellungen des Players eingegebene Adresse. - Die Adresse antwortet nicht. Öffnen Sie sie in einem Browser: Sie sollten einen Download oder XML erhalten, keine Fehlerseite.
- Die Kennungen stimmen nicht überein. Suchen Sie die
tvg-ideines Senders in der XMLTV-Datei (nach dem Entpacken). Steht sie dort nicht exakt so, ist die Verbindung unterbrochen. - Der Programmführer ist veraltet. Sehen Sie sich die Daten der letzten
<programme>an: Eine Datei, die gestern endet, kann heute nichts anzeigen. - Das Datum des Geräts ist falsch. Siehe den vorigen Abschnitt.
Haben nur einige Sender keinen Programmführer, liegt es fast immer an Schritt 4: Diese Sender gibt es in der Datei nicht oder unter einer anderen Kennung. Keine Einstellung des Players kann ein Raster erfinden, das in der Quelle fehlt.
Größe, Kompression und Aktualisierungshäufigkeit
Eine XMLTV-Datei ist wortreich: Jede Sendung wiederholt ihre Tags, Attribute und manchmal lange Inhaltsangaben. Für einige hundert Sender über eine Woche kann die Datei mehrere Dutzend Megabyte wiegen. Deshalb wird sie sehr oft im Format gzip komprimiert angeboten, mit der Endung .xml.gz. Der sehr repetitive XML-Text lässt sich gut komprimieren: Üblich ist eine Verkleinerung um den Faktor fünf bis zehn.
| Element | Wirkung auf die Größe | Tipp |
|---|---|---|
| Anzahl der abgedeckten Tage | Proportional | Zwei bis drei Tage genügen für das Live-Programm |
| Anzahl der Sender | Proportional | Ein auf Ihre Sender beschränkter Programmführer ist schneller |
| Inhaltsangaben und Bilder | Erheblich | Nützlich, machen das Laden aber schwerer |
Kompression .gz | Verkleinert den Download stark | Bevorzugen, wenn die Quelle sie anbietet |
Auf einem TV-Stick mit wenig Speicher kostet weniger der Download als das Auswerten der Datei: Zehntausende Sendungen müssen gelesen und indexiert werden. Ein gezielter Programmführer lädt deutlich schneller als ein „weltweiter“, von dem Sie nur einen Bruchteil nutzen.
Zur Häufigkeit: Player laden den Programmführer in regelmäßigen Abständen neu (oft einmal täglich) oder auf Anforderung. Wirkt Ihr Raster eingefroren, erzwingen Sie in den Einstellungen eine Aktualisierung. In AICKO IPTV sind dieser Vorgang und das Hinzufügen einer Programmführer-Quelle auf der Seite TV-Programmführer (EPG) beschrieben.
Zusammenfassung
- Der Programmführer ist eine vom Video getrennte XMLTV-Datei.
- Er enthält Elemente
<channel>und<programme>, die über eine Kennung verbunden sind. - Die
tvg-idder Playlist muss exakt identisch mit deriddes Programmführers sein. - Die Zeiten tragen eine UTC-Abweichung (
+0100oder+0200in Mitteleuropa);tvg-shiftkorrigiert einen verschobenen Sender. - Ein als
.xml.gzkomprimierter und auf Ihre Sender beschränkter Programmführer lädt schneller.
Häufige Fragen
Warum ist mein Programmführer seit der Zeitumstellung um eine Stunde verschoben?
Die Quelldatei verwendet eine feste Abweichung, die dem Wechsel zur Sommer- oder Winterzeit nicht folgt. Die dauerhafte Abhilfe ist eine korrigierte Quelle; bis dahin gleicht eine Verschiebung um eine Stunde in den Einstellungen des Programmführers oder ein tvg-shift den Fehler aus.
Kann ich einen anderen Programmführer als den meines Dienstes verwenden?
Ja, wenn Ihr Player die Eingabe einer XMLTV-Adresse erlaubt. Der Programmführer funktioniert aber nur, wenn seine Sender-Kennungen zu den tvg-id Ihrer Playlist passen; andernfalls müssen Sie diese Kennungen in der Playlist anpassen.
Muss der Player die .gz-Datei selbst entpacken?
Ja, die meisten TV-Player akzeptieren .xml.gz-Dateien direkt. Selbst entpacken müssen Sie sie nur, um sie zu untersuchen, zum Beispiel mit 7-Zip unter Windows.
Warum haben manche Sender einen Programmführer und andere nicht?
Sender ohne Programmführer fehlen in der XMLTV-Datei oder stehen dort unter einer anderen Kennung als ihre tvg-id. Der Player kann nur anzeigen, was die Quelle beschreibt.
