11 | 12 | 2017

FFMpeg und M2TS

FFMPEG mit MPEG 2 Transport Stream (M2TS) Unterstützung

 

MPEG 2 Transport Ströme sind erst mit Erscheinen der Bluray bekannt geworden. Im Grunde handelt es sich um einen normalen Transport Strom. Allerdings sind die Pakete nicht 188 Byte groß, sondern 192 Byte. Die 4 Byte mehr kommen auf Grund des erweiterten Headers zustande. Dieser Header befindet sich vor jedem 0x47-Startcode und beinhaltet einen Zeitstempel. Viele stellen sich die Frage, warum überhaupt noch ein weiterer Zeitstempel? Aber der Hintergrund ist folgender. Bei normalen Transportströmen handelt es sich um Ströme mit einer variablen Datenrate. Optische Medien, dass ist seit der Audio CD bekannt, benötigen einen konstanten Datenstrom. Erzeugt man einen Transport Strom mit einer konstanten Datenrate erzeugen, dann werden sehr viele sogenannte Null-Pakete (Füll Bytes) hinzugefügt. Das bläht einen Transport Strom sehr auf und verschwendet Platz. Die Null-Pakete werden bei einem M2TS weggelassen. Die Zeitstempel geben nun an, wie viele Null-Pakete theoretisch kommen müssten, damit der Datenstrom konstant ist.

FFMPEG kann MPEG 2 Transport Ströme lesen. Eigentlich auch kein Problem, denn hierfür müssen ja nur die 4 Byte übersprungen werden eines jeden Paketes übersprungen werden. Im Downloadbereich findet Ihr einen Patch. Installiert wird dieser Patch mit

patch -p1 < mpegtsenc.patch.

Dieser Befehl muss im ffmpeg-Verzeichnis ausgeführt werden.

Danach kompiliert man ffmpeg neu. Anschließend kann ffmpeg auch m2ts-Dateien erzeugen.

 

Viel Spaß!