# MPEG-Transportstrom

Ein Transportstrom (englisch: Transport Stream; MPEG-TS, MTS oder TS) ist der Name für ein standardisiertes Kommunikationsprotokoll zur Übertragung von Audio, Video und Daten. Es ist spezifiziert in MPEG-2 Part 1, Systems (ISO/IEC 13818-1 oder ITU-T Rec. H.222.0).
Mit MPEG-TS wird kontinuierlich digitales Video und digitales Audio gebündelt übertragen. Transportströme werden bei Übertragungswegen wie DVB (Satellit, Antenne, Kabel) und ATSC eingesetzt. MPEG-TS ist das Pendant zum Programmstrom (MPEG-PS), der für Medien wie DVDs entwickelt wurde.

## Einführung

Ein Transportstrom besteht aus einer kontinuierlichen Bytefolge, die in jeweils 188 Byte große Pakete unterteilt ist. Dies erlaubt den schnellen Zugriff (Synchronisation) auf den Inhalt nach Programmwechsel oder anderen Empfangsunterbrechungen.
Deshalb wird der Transportstrom vorzugsweise auf Kanälen wie zum Beispiel Satellit, Antenne (auch mobiler Empfang) oder Kabel verwendet, also solche mit hohem Fehlerquotient. Aber auch optische Speichermedien, bei denen Kratzer und Verschmutzung zu Fehlern beim Auslesen führen, profitieren von diesem Ansatz. Trotz der Fehlerkorrekturverfahren dieser Übertragungswege kann es, je nach Empfangsqualität, immer wieder zu Übertragungsfehlern kommen, die dann zum Verlust einzelner Pakete führen.
Durch kurze Pakete gewährleistet man, dass kleine Übertragungsfehler auch nur kleine Auswirkungen haben bzw. die Zeit bis zur Resynchronisation kurz bleibt. Die Länge von 188 Byte ist an die Größe der zur Zeit der Erstellung des MPEG-2-Standards als zukunftsträchtig erachteten Übertragungstechnik ATM angepasst (ein Transportstrompaket passt in vier ATM-„Zellen“).
Transportströme mit mehreren Fernsehprogrammen werden auch beim weit verbreiteten Digitalfernsehstandard DVB eingesetzt. Bei der Übertragung von DVB-T werden, abhängig von der verwendeten Modulation und Datenrate sowie der verwendeten Videokomprimierung, mehrere (in Deutschland ein bis sechs) Fernsehprogramme in einem Transportstrom untergebracht und über einen Kanal abgestrahlt.
Zusätzlich zu Video- und Audiokanälen sind auch Datenkanäle vorgesehen. Über die Datenkanäle können weitere Serviceinformationen, wie zum Beispiel Verschlüsselungsinformationen oder eine „elektronische Programmzeitschrift“ übertragen werden.
In den Transportstrom wiederholt eingebettete Tabellen (Program Association Table, Program Map Table) gruppieren Video-, Audio- und Datenkanäle zu Fernsehprogrammen. Die einzelnen Kanäle werden Elementarströme genannt.

## Elemente des Transportstroms
### Paket

Ein Paket ist die Basiseinheit eines Transportstroms. Es beginnt mit einem Synchronisierungs-Byte, dessen Wert 47$_{16}$ beträgt, gefolgt von drei 1-Bit-Flags und einem 13 Bit großen Packet Identifier (PID). Dann kommt ein 2-Bit-Feld zur Beschreibung einer eventuellen Verschlüsselung (00 bedeutet unverschlüsselt), ein weiteres 2-Bit-Feld, welches anzeigt, ob noch optionale Felder (10) oder Nutzlast (01) oder beides (11) folgen, sowie ein 4-Bit-Kontinuitätszähler. Zusätzliche optionale Felder würden sich daran anschließen. Der Rest des Pakets besteht gegebenenfalls aus den eigentlichen Daten eines Elementarstroms. Eines der 1-Bit-Flags ist ein Startkennzeichen, um den Anfang einer logischen Blockstruktur eines Elementarstroms oder einer Tabelle der Program Specific Information (PSI) bzw. Service Information (SI) anzuzeigen.

### Packet Identifier (PID)

Jedes Paket enthält einen Packet Identifier (PID), der durch einen 13-Bit-Wert in den Kopfdaten dargestellt wird. Alle Pakete mit derselben PID enthalten zusammenhängende Informationen. Durch die Suche nach identischen PIDs extrahiert ein Demultiplexer einen Elementarstrom oder PSI- und SI-Tabellen aus dem Transportstrom. Im Sender wird in den meisten Fällen das Zeitmultiplexverfahren eingesetzt, um zu entscheiden, wann und wie oft eine bestimmte PID im Transportstrom erscheint. Ist nichts zu übertragen, werden leere Pakete gesendet, um den Transportstrom nicht abbrechen zu lassen.
Der 4-Bit-Kontinuitätszähler im Paketkopf dient der Erkennung fehlender Transportstrom-Pakete eines Elementarstroms.
Der Elementarstrom mit PID 0 ist für das regelmäßige Senden der Programm-Tabelle (PAT) reserviert. Auch andere regelmäßig gesendete Tabellen belegen jeweils eine eigene PID (u. a. PMT, SIT, EPG). Mit diesen Informationen können die Video- und Audioströme den Programmen zugeordnet werden.

### Programme

Das grundsätzliche Konzept von Transportströmen sind Programme (Services), die aus Gruppen von einem oder mehreren in Beziehung stehenden Inhalten stehen, die in Paketen mit unterschiedlichen PIDs transportiert werden. Die Lokalisierung der zusammenhängenden Daten erfolgt über diverse Tabellen. Wobei die absolut notwendigen Tabellen (Program Specific Information (PSI)) in der IEC 13818-1, die darüber hinausgehenden Tabellen (Service Information (SI)) in der ETSI EN 300 468 beschrieben sind.

### Program Association Table (PAT)

PAT steht für Program Association Table. Pakete, die die PAT-Information enthalten, haben immer die PID 0. Sie enthält neben der Transportstromidentifikation (transport_stream_id) für jedes enthaltene Programm die Programmnummer (program_number) und die PID (program_map_pid) für die zugehörige Program Map Table (PMT).

### Program Map Table (PMT)

Die Program Map Table (PMT) enthält Informationen über die Programme. Für jedes Programm gibt es eine PMT, assoziiert mit ihrer eigenen PID. Die PMTs beschreiben, welche PIDs Daten für das Programm enthalten. PMTs stellen ebenso Metadaten für die Streams und ihre einzelnen PIDs bereit. Zum Beispiel sind bei einem Programm, bestehend aus einem MPEG-2-Videostrom, die PID des Videostroms und zusätzlich die Art der Daten, also in diesem Fall MPEG-2, enthalten. Die PMT kann außerdem zusätzliche Deskriptoren zur Beschreibung der einzelnen Ströme enthalten.
Senden Programme zeitweise das gleiche Programm, so kann die PMT der Programme für diese Zeit die gleichen Elementarströme enthalten, so dass die Elementarströme nicht mehrfach gesendet werden müssen.

### Program Clock Reference (PCR)

Um dem Dekoder eine zeit- und geschwindigkeitsrichtige Darstellung zu ermöglichen, enthält das Programm eine Program Clock Reference (PCR). Der 33+9 bit große Zahlenwert gibt den jeweils aktuellen Zählerstand zum Zeitpunkt der Aussendung (bzw. Transportstromerstellung) einer mit 27 MHz angetriebenen Referenzuhr wieder. Die PCR unterteilt sich in 33 bit mit 90 kHz und weitere 9 bit mit 300-fach höherer zeitlicher Auflösung (d. h. 27 MHz).
Um den PCR-Wert des gewählten Programms zu finden, müssen die Pakete untersucht werden, deren PID der in der dem Programm zugehörigen PMT im Feld PCR_PID angegeben ist. Üblicherweise wird die PID verwendet, in der das Video des Programms übertragen wird. Ist in den Paketen ein Adaptationsfeld vorhanden, dies ist typischerweise alle 40 ms der Fall, enthält das Adaptationsfeld (u. a.) den PCR-Wert.
Der PCR-Wert ist sehr eng toleriert. Zum einen darf die absolute Zeit zwischen zwei Paketen mit einer PCR-Information nicht mehr als 50 ms betragen, zum anderen darf das Jitter der einzelnen Werte nicht größer als 500 ns sein.

### Service Description Table (SDT)

Die Service Description Table nennt den Programmnamen (z. B. „ZDF“) und gibt weitere Informationen der einzelnen Programme (Services); sie wird auf PID 17 übertragen.

### Event Information Table (EIT)

Die Event Information Table enthält Informationen zu laufenden, folgenden und geplanten Sendungen, wie z. B. den Namen der Sendung („Tagesschau“). Diese Informationen beziehen sich auf den empfangenen Transportstrom sowie optional auf andere Transportströme. Aus dieser Tabelle kann eine elektronische Programmzeitschrift zusammengestellt werden. Sie wird mit PID 18 übertragen.

### Nullpakete

Bestimmte Übertragungsprotokolle wie ATSC und DVB schreiben eine konstante Bitrate vor (CBR). Um dieses sicherzustellen, kann es vorkommen, dass ein Multiplexer zusätzliche Pakete einfügen muss. Hierfür ist die PID 8191 reserviert, die dann keine Daten enthält und vom Empfänger ignoriert wird. (8191 ist die größte und somit letzte Zahl, die mit 13 Bits dargestellt werden kann.)

## Dekodierung

Programme zur Dekodierung der Inhalte gehen in der Regel wie folgt vor:
* Lokalisierung der Paketanfänge im Bytestrom. Hierzu sind fünf aufeinander im Abstand von 188 Bytes liegende Synchronisierungs-Bytes (47$_{16}$) zu lokalisieren. Dies ist notwendig, da der Wert 47$_{16}$ auch in den anderen Daten der Transportstrominhalte vorhanden ist. Es darf nicht davon ausgegangen werden, dass das erste gelesene Byte ein Paketanfang ist, bloß weil es sich um ein Byte mit dem Wert 47$_{16}$ handelt.
* Lesen der Program Association Table (PAT). Hierzu wird aus den Paketen mit der PID 0 die Tabelle gelesen. Aus dieser Tabelle, die normalerweise zweimal pro Sekunde gesendet wird, wird die Anzahl der Programme, deren Identifikationsnummer (Program_number) und die jeweilige PID der PMT ermittelt. Bei einem typischen Transportstrom für digitales Fernsehen in Deutschland enthält die PAT fünf Einträge, je einen für die vier gesendeten Programme sowie vorangestellt eine Angabe für die PID der Network Information Table (NIT).
* Lesen der Program Map Table (PMT) für alle in der PAT annoncierten Programme. Diese enthält die in der PAT angegebene Identifikationsnummer sowie für jeden Elementarstrom (Video, Audio, Teletext etc.) einen Eintrag, aus dem die Eigenschaft und die PID des Elementarstroms hervorgeht. Mit diesen Informationen lassen sich die eigentlichen Dekoder für die Elementarströme auswählen und konfigurieren.
* Lesen der Elementarströme für das ausgewählte Programm und Dekodierung der Elementarstrominhalte.
Ergänzend können weitere Informationen ausgelesen werden.
* Die Service Description Table (SDT), die in Paketen mit der PID 17 gesendet werden, enthält für jede Identifikationsnummer der PAT (in der SDT Service_ID genannt) einen Eintrag, aus dem der Name des Programms, wie z. B. „Das Erste“ hervorgeht.
* Die Event Information Table (EIT), die in Paketen mit der PID 18 gesendet wird, enthält in der Regel Einträge, aus denen eine Beschreibung der gegenwärtigen, folgenden und geplanten Sendungen hervorgeht.

## Speicherformate

Einige Festplattenempfänger und viele Computer-TV-Karten können Aufnahmen von Transportströmen einzelner Sender und teilweise auch von kompletten Transpondern aufzeichnen. Das häufigstbenutzte Containerformat ist dabei der oben beschriebene Transportstrom mit der Dateiendung *.ts. DVB-Dateien beginnen als MPEG-Transportstrom mit dem Byte 47$_{16}$, welches sich alle 188 Byte wiederholt.
Vantage verwendet das TRP-Container-Format und Topfield speichert diese als *.rec. Einige dieser Transportstrom-Container lassen sich in andere konvertieren. Weil häufig mehrere Programme innerhalb eines Transponders zu einem Transportstrom zusammengefasst werden, erlauben einige Empfänger ohne Doppeltuner, dennoch mehrere Programme zu sehen oder aufzunehmen.