www.radonmaster.de/robernd/    Stand: 22. Feb 2004

home

MPEG, GOP und Videoschnitt

In Ausführungen über MPEG-Video tauchen immer wieder Begriffe wie GOP und I-Frame auf. Was bedeuten die eigentlich?
Was müssen wir beachten, wenn wir MPEG-Videos nachbearbeiten möchten?


MPEG-Video

Das wesentliche am Digitalfernsehen (DVB) und auch an der Speicherung auf der Video-DVD ist eine Datenreduktion, ohne die es nicht ginge. Die Abkürzung MPEG beschreibt dabei nicht das mathematisch-technische Verfahren der Datenreduktion sondern das Standardisierungs-Gremium (Motion Pictures Expert Group) dieses Verfahrens. Ein Gerät oder Computerprogramm, das derartige datenkomprimierte Videos erzeugt heißt MPEG-Encoder oder einfach Coder. Der Vorgang selbst ist die Encodierung oder Codierung. Bekannter ist der Begriff Decoder für ein Gerät oder Programm, das aus dem komprimierten Video wieder eine leicht darstellbare unkomprimierte Normalform erzeugt.
Bemerkenswert ist, dass MPEG bei allen seinen Verfahren nur jeweils die Decoder, nicht aber die Encoder standardisiert hat. So erklärt es sich, dass unterschiedliche Encoder auch (etwas) unterschiedliche Ergebnisse liefern. Natürlich lassen sich alle so erzeugten Videos mit dem gleichen Decoder wiedergeben.

Die Datenreduktion geschieht in drei Stufen und berücksichtigt dabei, dass die aufeinanderfolgenden Phasenbilder (Frames) eines Films ähnliche Inhalte haben.
Am wenigsten komprimiert sind sogenannte I-Frames (I, intra-). Hier erfolgt eine verlustbehaftete Datenkompression innerhalb eines Filmbildes. Ähnlich funktioniert auch die JPEG-Kompression von Standbildern.
In der nächsten Stufe werden nur Veränderungen gegenüber dem letzten I-Frame gespeichert, die es ermöglichen, eines der folgenden Bilder vorherzusagen. Das ist ein P-Frame (P, predicted).
Die letzte Stufe erzeugt B-Frames (B, bidirectional). Damit werden die Lücken zwischen I und P oder zwischen zwei P aufgefüllt. Um also ein B-Frame zur Darstellung zu rekonstruieren, benötigt man neben übertragenen Differenzinformationen auch das letzte P oder I sowie das erste folgende P oder I.

Bei einer MPEG-Aufzeichnug ergibt sich eine Bilderfolge nach ungefähr dem Muster

Struktur IBBBPBBBPBBBIBBBPBBBPBBBIB...

Den ständig wiederholten Bereich IBBBPBBBPBBB bezeichnet man als GOP (Group Of Pictures). Der Aufbau der Standardreihenfolge wird dem Encoder vom Anwender vorgegeben. Für DVD und DVB verwendet man meistens GOPs wie oben angedeutet. Die Anzahlen der aufeinanderfolgenden B-Frames und der P-Frames innerhalb einer GOP kann der Anwender beliebig variieren.
Unabhängig von dieser festen Struktur eines GOP gibt es bei Filmschnitten (Wechsel des gesamten Bildinhaltes) fast immer ein I-Frame. Ein MPEG-Encoder muss also Filmschnitte erkennen, um die außerhalb der Standardreihenfolge nötigen I-Frames zu erzwingen. Leider ist das nicht immer der Fall. Speziell bei Sat-Übertragung tauchen bei Filmschnitten P-Frames auf, deren Dateninhalt größer ist als der entsprechender I-Frames mit gleicher Information.

Die Abspielreihenfolge (Betrachtungsreihenfolge) der Bilder (Frames) eines Videos unterscheidet sich von der Übertragungsreihenfolge. Das ist erkennbar, wenn wir jedem Frame eine Nummer geben.

Zur Abspielreihenfolge der Bilder

Folge 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

gehört die Übertragungsreihenfolge

Folge 00 04 01 02 03 08 05 06 07 12 09 10 11 15 13 14 18 16 17 21 19 20 24 22 23 ... 25

Übertragen werden die B-Frames erst nach den I- oder P-Frames zu denen sie gehören. Das ist zunächst verwirrend, aber unter technischen Gesichtspunkten einigermaßen verständlich. Für die MPEG-Decodierung ist offenbar ein kleinerer technischer Aufwand nötigt, weil beide P- bzw. I-Frames bereits gespeichert sind, wenn die sich darauf beziehenden B-Frames eintreffen. Schnittprogramme (siehe unten) tun sich damit etwas schwer, weil bei der Datenspeicherung aufeinanderfolgende GOPs an den Enden vermischt sind.

Der Unterschied zwischen Übertragung und Anzeige lässt sich sehr schön nachvollziehen mit dem Programm MPEG-Stream-Eye von Elecard/Moonlight ( www.elecard.com ). Es bietet die Möglichkeit, ein MPEG-Video Bild für Bild anzuzeigen und dabei zwischen Abspielreihenfolge (Decoder order) und Übertragungsreihenfolge (Stream order) umzuschalten. Allerdings vertausch es auch selbst bei der Wiedergabe manchmal einige Frames. Das gleiche Problem hat übrigens auch der Elecard MPEG Player.


Bildqualität

Die Bildqualität hängt zunächst einmal von der Datenrate, also dem Umfang der angewendeten Datenkompression ab. Sie lässt sich verbessern, wenn man auf B-Frames vollständig verzichtet. Falls das codierte Material zur Nachbearbeitung vorgesehen ist, verzichtet man gern auch auf die P-Frames. Die Bilderfolge besteht dann nur aus I-Frames. Damit sind Datenrate und -struktur der DV-Band-Aufzeichnung sehr ähnlich. MPEG arbeitet meistens mit variabler Datenrate, während DV prinzipiell auf eine konstante Rate optimiert ist.

Je höher die Anzahlen von P-Frames und I-Frames sind, desto höher ist auch die zur Übertragung nötige Datenrate. Zusätzlich beeinflusst auch die gewählte Qualität die Datenrate. In der Praxis verwendet man folgende Mittelwerte:

SVCD:  2 MBit/sec
   DVD:  4 MBit/sec bis 10 MBit/sec
   DVB:  3 MBit/sec bis 5 MBit/sec
      DV:  28 MBit/sec

Bei vorgegebener Datenrate (durch Filmlänge und Speicherkapazität z.B. einer DVD) kann der Anwender die Encoder-Einstellungen für das vorliegende Material optimieren (z.B. bessere Bildschärfe oder bessere Bewegungswiedergabe). Im fortgeschrittenen Stadium wechseln diese Einstellungen im Laufe eines Filmes. Dadurch erreicht man auch auf einer DVD noch eine gute Bildqualität.


Videoschnitt

Probleme hat ein Video-Fan, der bereits fertige MPEG-Aufzeichnungen nachträglich verändern möchte. Wenn ein Video nur geteilt und anders zusammengesetzt werden soll, schneidet man nicht an beliebiger Stelle sondern nur direkt vor einem I-Frame. Selbst das bringt Probleme mit sich, weil es ohne zusätzliche Maßnahmen einige herrenlose B-Frames gibt. Beim Abspielen werden diese dann einem falschen P-Frame zugeordnet, und es gibt eine kurze Bildstörung mit Klötzchen. Es folgen drei Beispiele, wie Bildschnitte in der Praxis ausgeführt werden können.


GOP-Genauer Schnitt mit herrenlosen P-Frames

Die Schnittmöglichkeit des bekannten MPEG-Encoders TMPGEnc ist ein Beispiel für ein Programm, das GOP-genau schneidet. Es produziert den bereits oben angedeuteten Bildfehler durch herrenlose B-Frames. Das wird deutlich, wenn wir uns das Ergebnis eines Videoschnittes genauer ansehen. Zur Darstellung wird der MPEG-Stream-Eye von Elecard/Moonlight www.elecard.com verwendet.

Die obere Grafik zeigt die Bilder schematisch in der Übertragungsreihenfolge. Dabei stellt jeder Balken ein Frame dar. Die Höhe der Balken entspricht dem Dateninhalt des entsprechenden Frames. Die Bilderreihe zeigt die Abspielreihenfolge, wie sie der Bildschirm anzeigt. Die weißen Linien geben an, welches angezeigte Frame(Bild) zu welchem übertragenen Frame gehört. Im Bereich des zweiten GOP (mit "Schnitt" bezeichnet) wurde durch die Zeitangabe der Cut-Out Punkt des ersten Videoteils festgelegt.
TMPGEnc schneidet den Datenstrom nach dem letzten P-Frame (mit O bezeichnet) ab (die zwei auf dieses P-Frame folgenden B-Frames werden noch vorher angezeigt). Das zweite Videostück beginnt mit einem I-Frame (ebenfalls mit O bezeichnet). Danach folgen in der Übertragung zwei mit X bezeichnete herrenlose B-Frames. Entsprechend der Wiedergabekonvention (siehe weiter oben) wird bei der MPEG-Decodierung die Information XX zwischen den beiden mit O bezeichneten Frames interpoliert. Das geht natürlich nicht gut, weil die O O zu völlig unterschiedlichen Filmstücken gehören. Das Ergebnis sind zwei störende Bilder mit gemischten Inhalten und Klötzchen.


GOP-genauer Schnitt ohne herrenlose P-Frames

Wesentlich günstger verhält sich die Schnittmöglichkeit des (inzwischen vom Autor zurückgezogenen) Programms ds.jar (siehe auch Fehler in DVB-Aufzeichnung beheben ). Es gibt ein neues, leistungsfähigeres Programm des selben Autors sogar mit Vorschaufenster. Es heißt einfach nur X. Sein Sourcecode ist freigegeben, übersetzten muss es sich der Anwender selbst. Zu finden in www.radonmaster.de/robernd/tools/

Es wurden die gleiche Videos wie mit TMPGEnc an den gleichen Stellen geschnitten. Der vereinbarte Schnittzeitpunkt liegt an der mit "Schnitt" bezeichneten Stelle (die im geschnittenen Videostrom nicht mehr vorhanden ist). DS entfernt beim Cut-out bereits das letzte I-Frame vor dem angegebenen Schnittzeitpunkt und alle darauf folgenden Frames. Ein Cut-in liegt immer direkt vor dem ausgewählten I-Frame. Ist ein anderes Frame angegeben, so wird das letzte I-Frame vor diesem ausgewählt. Außerdem entfernt es beim Cut-in immer die erste Gruppe von B-Frames. Es gibt also keine herrenlosen B-Frames und der Schnitt ist sauber.
Auch ds.jar ist kein typisches Schnittprogramm, deshalb muss man es "blind" bedienen. Die Schnittpunkte werden als Frame-Nummern in eine Schnittliste geschrieben. Der Nachfolger X hat ein Vorschaufenster, das das ausgewählte Bild anzeigt und zur Übernahme in die Schnittliste bereit stellt.


P-Frame-genauer Schnitt

Ausgezeichnet ist das Programm Mpeg2Schnitt von Martin Dienert, zu finden bei http://www.mdienert.de/mpeg2schnitt/index.htm Damit zusammenhängende Probleme werden in http://forum.lucike.info/ diskutiert.
Martin hat alles ausgereizt, das ohne Neucodierung eines Videos denkbar ist. Beim Cut-In erfolgt der Schnitt wie üblich beim I-Frame. Dabei werden die herrenlosen B-Frames (selbstverständlich?) entfernt. Beim Cut-Out leistet es "einen Löffel mehr". Hier kann es bei beliebigen P- und I-Frames schneiden. Abhängig von der GOP-Struktur lässt sich das Cut-In auf ungefähr eine halbe Sekunde genau festlegen. Das Cut-Out ist fast 0,1 sec genau.

Die Grafik soll das anschaulich darstellen. Sie zeigt das Ergebnis für vier unterschiedliche Schnitte mit Cut-Out an benachbarten P/I-Frames. Das Cut-In liegt immer an dem selben I-Frame.
So weit die Theorie. Das Beste ist aber die Praxis: Mpeg2Schnitt spielt das gesamte Video (Video- und Audio-Files sind separat) auch ab. Eine raffinierte Navigation lässt uns von Bild zu Bild oder in größeren Intervallen springen. Jeder mögliche IN- und OUT-Punkt lässt sich exakt ansteuern. An verbotenen Stellen lassen sich gar nicht erst Schnitte festlegen. Von Anfang an ist also bereits klar, an welcher Stelle ein Schnitt wirklich sitzt.
Mehrere Schnitte aus unterschiedlichen Videos lassen sich in eine Schnittliste übernehmen. Mpeg2Schnitt erzeugt daraus anschließend ein neues Video, dessen Bild und Ton nur aus Originalinformationen bestehen.
Meine Prognose: Dieses Programm wird zukünftig DER Standard für hochwertigen und preisgünstigen MPEG2-Schnitt sein. Zur Zeit ist es eine kostenlose Betaversion.


Frame-genauer Schnitt

Ein bildgenauer Schnitt ist nur möglich, wenn in der Nachbarschaft des Schnittes die Bilder decodiert und wieder neu encodiert werden. Das verspricht MPEG2VCR (120 $, keine Demo für MPEG2 erhältlich) von www.womble.com - und hält es auch. Außerdem bietet es auch Überblendungsmöglichkeiten. Die Zuverlässigkeit des Programms und seine Handhabung sind allerdings noch sehr schlecht. So sieht der Womble-Schnitt aus:

MPEG2VCR berechnet die Umgebung des Schnittzeitpunktes neu und setzt ein zusätzliches I-Frame an die Schnittstelle (innerhalb der ursprünglichen GOPs).
Mit der Bearbeitung von DVB-Aufzeichnungen habe ich erhebliche Probleme, weil das Ergebnis viele Fehler enthält, die Programme zur Weiterverarbeitung nicht akzeptieren. Selbst Womble's eigenes Tool zur Fehlerkorrektur beißt sich daran die Zähne aus.


Weitere Möglichkeiten

Ein schlechter Weg ist es auch, das gesamte Video zu decodieren und es vollständig neu zu encodieren. Das bringt nämlich einen kräftigen Qualitätsverlust und sehr lange Rechenzeiten mit sich. Genau das machen leider viele Schnittprogramme.
Ulead's MediaStudioPlus (30-Tage Trial erhältlich) kann tatsächlich auch MPEG2-Aufzeichnungen "smart" rendern. D.h. unveränderte Bereiche werden ohne neue Encodierung übernommen. Dafür muss die Feldreihenfolge B statt der voreingestellten Reihenfolge A verwendet werden. Allerdings enthält der erzeugte MPEG2-Datenstrom nach der Bearbeitung von DVB-Aufzeichnungen viele Fehler. Im Gegensatz zu anderen Brennprogrammen weigert sich Ulead's DVD Factory zwar nicht, DVDs zu brennen. Im Ergebnis sind allerdings Bild und Ton asynchron. Das habe ich mir nur einmal angetan. Wie häufig derartige Fehler vorkommen, kann ich nicht sagen.

Seit einiger Zeit gibt es Camcorder, die MPEG-Videos aufzeichnen. Diese verlangen ebenfalls eine Nachbearbeitungstechnik mit den von uns benötigten Eigenschaften. Deshalb können wir durchaus noch auf eine preisgünstige und gute "native" MPEG Bearbeitung hoffen. Damit meinen wir Programme, die auch intern mit MPEG-Darstellung arbeiten.


Ich habe diese Beschreibung gemacht, obwohl ich auch nur halb mit den Einzelheiten der MPEG-Codierung vertraut bin. Wer sich richtig schlau machen möchte, kommt um die Seiten www.dvd-tipps-tricks.de nicht herum.
Empfehlenswert ist auch das Programm MPEGanalizzatore von www.offeryn.de/dv.html/. Es zeigt einem die Struktur eines MPEG-Stromes bis herunter zu
einzelnen Frames.

Vielen Dank an Matt (Autor von ds.jar) für Informationen zum Unterschied zwischen Abspiel- und Übertragungsreihenfolge. Wer Korrekturen an dieser Seite für nötig hält, möge mir diese bitte schicken. Ich freue mich jedenfalls über alle Hinweise und werde versuchen, sie hier einzubauen.

Gruß RoBernd
robernd@radonmaster.de

home