Videoverarbeitung

In diesem Kapitel beschäftigen wir uns mit dem Bearbeiten und encodieren des Videos. Wir konzentrieren uns dabei aufs 1-Pass-Encoding. Zum einen, weil die festgelegte Zielgröße – und damit 2-Pass – an Bedeutung verliert. Zum anderen müssten wir zum Ausrechnen der passenden Videobitrate für ein 2-Pass-Encoding auch den Container-Overhead manuell ausrechnen, was extrem lästig ist. Ein Frontend wie StaxRip ist in dem Fall einfach besser geeignet.

Skripterstellung mit AvsP

Die komplette Aufbereitung des Quellvideos für den Encoder übernimmt AviSynth. AviSynth ist ein skriptgesteuerter Frameserver und Videoeditor, d.h. er liest Bild für Bild das Quellvideo, bearbeitet es und leitet es an den Encoder weiter, der die Zieldatei erstellt. Um AviSynth mitzuteilen, was es genau zu tun gibt, schreiben wir eine kleine Textdatei mit der Endung .avs, das AviSynth-Skript.

AviSynth ist ein umfangreiches Thema, das wir hier nur sehr sehr grundlegend anreißen. Ausführlichere Doku finden wir im Unterordner Docs des AviSynth-Programmordners und auf der AviSynth-Homepage.

Um beim Skripten den nötigen Komfort zu haben, benutzen wir AvsP. Der folgende Screenshot zeigt ein typisches einfaches Skript für ein DVD-Encoding.

Folgendes Skript, jede Funktion steht auf eigener Zeile: LoadPlugin("C:\Encoding\DGMPGDec\DGDecode.dll") MPEG2Source("V:\Video\Amélie\amélie.d2v") Crop(2,70,-2,70) LanczosResize(608,256)

Die ersten beiden Zeilen sind immer notwendig. Mit

LoadPlugin("C:\Encoding\DGMPGDec\DGDecode.dll")

binden wir das DGDecode-Plugin von DGMPGDec ein, das für den Zugriff auf die Videospur in den VOBs notwendig ist. Die nächste Zeile

MPEG2Source("V:\Video\Amélie\amélie.d2v")

lädt über DGDecode das Quellvideo. Als Datei geben wir immer die mit DGIndex erstellte D2V-Datei an. Für das von einer Blu-ray demuxte MKV-Video benötigen wir stattdessen FFmpegSource, genauso wie für die meisten anderen Nicht-DVD-Quellen. Die ersten beiden Zeilen sehen dann so aus:

LoadPlugin("C:\Encoding\ffms2\ffms2.dll")
FFVideoSource("V:\Video\Blu-ray\Quellvideo.mkv")

Wenn wir nun F5 drücken, erscheint im unteren Bereich von AvsP das gefilterte Video. Wir können hier also jederzeit kontrollieren, welche Auswirkungen die Filter im Skript haben. Mit FFmpegSource dauert das erste Öffnen einige Minuten, da der Decoder das komplette Video erst Indexieren muss.

Auf jeden Fall müssen wir die schwarzen Balken an den Rändern abschneiden. Natürlich könnten wir den entsprechenden Befehl dafür manuell ins Skript tippen. Komfortabler geht es mit dem Crop editor, den wir über das Kontextmenü des Vorschau-Bilds oder Strg+C erreichen.

Im AvsP-Hauptfenster springen wir an eine möglichst helle Stelle im Film, damit sich die schwarzen Balken gut vom Bild abheben. Per Linksklick in die entsprechenden Bildränder legen wir grob fest, wie viel an jeder Seite beschnitten werden soll. Im Crop-editor-Fenster passen wir die Werte dann im Detail an. Da wir es mit YV12-Video zu tun haben, können wir nur gerade Pixelanzahlen wegschneiden. Nicht erlaubte Werte färbt AvsP rot ein.

Haben wir für alle vier Seiten die passenden Werte gefunden, aktivieren wir über Apply das Cropping. AvsP fügt im Skript die fertige Crop()-Funktion ein und aktualisiert das Vorschauvideo auf die zugeschnittene Version.

Wenn wir nicht anamorph encodieren – und nur dann –, bleibt noch die Skalierung auf die Zielauflösung. Die passende Breite und Höhe müssen wir selbst ausrechnen. Wie das funktioniert, haben wir schon im Kapitel zur Wahl der Zielauflösung behandelt. Die Zeile für den Resizer muss im Skript immer nach der Crop()-Zeile stehen!

AviSynth bringt eine ganze Reihe von verschiedenen Resize-Filtern mit. Da wir normalerweise das Bild um einen nur moderaten Faktor verkleinern, ist es nicht besonders kritisch, welchen davon wir nehmen. Am weitesten verbreitet ist Lanczos.

Der Funktionsaufruf für den Filter sieht folgendermaßen aus:

LanczosResize(Breite,Höhe)

Wir schreiben die Zeile ans Ende des Skripts und setzen die berechneten Werte für Breite und Höhe ein. Mit einem Druck auf F5 aktualisieren wir das Video, kontrollieren, ob Auflösung und Seitenverhältnis tatsächlich stimmen, und speichern das Skript mit Strg+S.

Encoding

Für ein anamorphes Encoding (z.B. von einer 16:9-PAL-DVD und ohne Resizer) könnte die Kommandozeile für x264 typischerweise so aussehen:

Weiter vorne im Kapitel zur x264-Konfiguration haben wir uns schon im Detail angesehen, wie wir x264 bedienen. Wenn wir auf XvidEncraw setzen, unterscheidet sich das Vorgehen nicht. Nur die Kommandozeile ändert sich und könnte typischerweise so aussehen:

Mit den Details der Konfiguration haben wir uns ebenfalls schon im Kapitel zur XvidEncraw-Konfiguration auseinander gesetzt.

Es soll ja noch Leute geben, die auf VirtualDub (oder VirtualDubMod) setzen. ;-) Natürlich lässt sich auch dort unser AviSynth-Skript laden und mit Xvid-VfW oder DivX-VfW encodieren. Wichtig ist nach dem Laden des Skripts die richtige Konfiguration im Video-Menü.

Als Verarbeitungsmodus wählen wir Fast recompress. So bleibt durchgehend der YV12-Farbraum der Quelle erhalten, was einerseits der Qualität gut tut und andererseits einen kleinen Geschwindigkeitsgewinn bringt. In diesem Modus können wir zwar keine VirtualDub-Filter verwenden, aber fürs Filtering ist sowieso AviSynth zuständig.

Mit Compression gelangen wir in den Auswahldialog für den Encoder.

Links in der Codecliste klicken wir den gewünschten Encoder an. Der Configure-Button bringt uns dann in den entsprechenden VfW-Dialog, den wir schon aus dem Xvid-VfW-Kapitel oder dem DivX-Kapitel kennen.

Über File › Save as (VirtualDubMod) bzw. File › Save as AVI (VirtualDub) starten wir anschließend das Encoding und lehnen uns zurück. Denn auch auf einem modernen Rechner sollte jetzt Zeit für eine Kaffeepause sein.

Kommentare