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

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

gehört die
Übertragungsreihenfolge

Ü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 ( http://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 http://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 http://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 http://www.dvd-tipps-tricks.de/ nicht
herum.
Empfehlenswert ist auch das Programm MPEGanalizzatore von http://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
[email-masked]

home