DVD2AVI & MPEG2DEC

Neulich ist ein Decoder PlugIn für Avisynth erschienen, der das Frameserving aus DVD2AVI beträchtlich beschleunigt. Dies wird durch Beibehaltung des DVD-eigenen Farbraums YUV2 erreicht, wogegen bei der VFAPI Methode in RGB gearbeitet wird, sodass der Videostrom erst zeitintensiv gewandelt werden muss. Auch die MMX-Optimierung von Avisynth lässt eine Leistungsverbesserung erwarten. Im Vergleich zu VFAPI erzielte ich bei der DivX Enkodierung 4fps mehr Leistung mit der optimierten Avisynth und dem MPEG2DEC PlugIn. Obwohl dieses Verfahren schneller ist, ist es wesentlich komplexer. Nur wer mit der VFAPI Methode (wie in jeder DVD2AVI Anleitung beschrieben) vertraut ist, sollte diese Methode hier ausprobieren.

Da Avisynth in dieser Anleitung nicht nur zum einfachen Frameserving, sondern auch für die Crop und Resize Funktionen genutzt wird, würde ein Blick in die Avisynth-Anleitung und in die Befehlsübersicht auf der Avisynth Homepage (auf Englisch) nicht schaden. Wie bei jedem komplexeren Programm gilt RTFM (Read The Fucking Manual = Lies das beschissene Handbuch).

Folgende Software wird benötigt:

MMX optimiertes Avisynth
DVD2AVI 1.76 oder neuer
MPEG2DEC Avisynth PlugIn

Schritt 1: Ein DVD2AVI Projekt anlegen.

Als erstes werden die VOB Dateien geladen. Sind diese aufsteigend nummeriert reicht es die Erste zu wählen, die Folgenden werden automatisch hinzugefügt.

Um herauszufinden welcher TV Norm der Film entspricht "F5" für Vorschau drücken und den Film eine Weile laufen lassen; dabei das Statusfenster beobachten.

Das Statusfenster liefert wichtige Informationen: Das Seitenverhältnis, also 4:3 oder 16:9, die Frame Rate mit typischerweise 23,976fps, 25fps oder 29.970fps und gegebenenfalls der Video Typ. Für Deutschland gilt normalerweise PAL 25fps non-film.

Frame Rate = 25.000 fps: Das Quellmaterial ist PAL. Man kann die folgenden Schritte über IVTC überspringen.

Frame Rate = 29.970 fps: Ist der Video Type nach ein paar Minuten Abspielen "FILM" mit 95% Wahrscheinlichkeit oder höher, sollte Forced FILM (siehe Bild) aktiviert werden. Anderenfalls muss der IVTC Prozess gesondert durchgeführt werden. Siehe IVTC Anleitung.

 

 

 

 

 

Zur Audio Dekodierung. Hier hängt es davon ab, ob man einen bevorzugten Audio Decoder verwenden will, ansonsten übernimmt dies DVD2AVI.

Einfach den gewünschten Track (entspricht der gewünschten Sprache) wählen. Wer zum Beispiel die GraphEdit Methode bevorzugt wählt None. Wenn nötig, kann im 48->44.1KHz Untermenü Downsampling gewählt werden. Wenn man dieses Features benutzt, ist die Einstellung "High" zu empfehlen.

Als letztes noch Decode im Dolby-Digital-Untermenü aktivieren.



Wie Eingangs erwähnt wird der YUV2 Farbraum verwendet; also überprüfen (s. Bild), sonst ist der Geschwindigkeitsvorteil dahin.

Um die Werte fürs Cropping (Beschneiden des Bildes um z.B. schwarze Ränder loszuwerden) zu ermitteln, mit dem Navigator an eine Stelle irgendwo im Film fahren. Im Video-Untermenu die Clip & Resize Funktion anklicken und durch Setzen des Häkchens im rechten oberen Eck aktivieren:

Anmerkung: Einige der Funktionen in diesem Menu funktionieren noch nicht sind aber in Arbeit.

Mit den Schiebern Top (Oben) und Bottom (Unten) die schwarzen Ränder wegschneiden. Leider ist Pixel-genaues Schneiden zur Zeit nicht möglich, also: lässt der eine Wert einen schwarzen Rand stehen, wohingegen ein höherer Wert das Bild beschneidet, einfach den Wert dazwischen nehmen. Hier die Werte für Top, Bottom und die Werte für Width (Horizontale Auflösung) und Height (Vertikale Auflösung) notieren.

Die im Bild verwendeten Werte gelten für einen 16:9 Film mit einem Seitenverhältnis von 1:2.35. PAL besitzt ein Seitenverhältnis von 4:3 => 1.33. Diese Werte also individuell ermitteln und nicht nur irgendwo im Web abschreiben.

Sind die richtigen Werte gefunden, das Häkchen im rechten oberen Eck wieder entfernen



Im File-Menu mit Save Project [F4] das DVD2AVI Projekt speichern. Diese Projektdatei wird im Folgenden verwendet.

Schritt2: Avisynth einrichten und Erstellen eines Skriptes

Zum Installieren das Archiv entpacken und die Avisynth.dll abhängig vom Betriebssystem in folgendes Verzeichnis kopieren:

Windows 9x/ME: c:\windows\system
Windows NT/2000: c:\winnt\system
Windows XP: c:\windows\system32

Dann Doppelklick auf die Install.reg, danach den Rechner neu starten!

Um zu Überprüfen ob Avisynth korrekt installiert ist Notepad öffnen und folgende Zeile eintragen.

AviSource("c:\temp\test.avi") # c:\temp\test.avi durch den vollständigen Pfad zu einer beliebigen avi-Datei ersetzen

Dies als c:\test.AVS speichern. Darauf achten, dass im Speichern-Dialog *.* Alle Dateien als Dateityp gewählt ist, sonst speichert Notepad die Datei als .TXT Datei!
Rechtsklick auf die Datei test.avs und "Öffnen mit…" auswählen, hier Microsofts Media Player wählen. Wird der Film wiedergegeben, ist Avisynth richtig installiert. Eine Datei mit der avs Endung wird im Folgenden Skriptdatei genannt, da sie die Steuerbefehle für Avisynth enthält.

Um das mit DVD2AVI erstellte Projekt zu verwenden, muss der MPEG2DEC PlugIn für Avisynth verwendet werden. Dies geschieht in der Skriptdatei mit dem LoadPlugIn Befehl. Diesem Befehl wird als Argument der vollständige Pfad zu und der Name des entsprechenden PlugIns in Klammern und "" angegeben. In diesem Fall also der vollständige Pfad zu der MPEG2DEC.DLL.
Im nächsten Schritt wird in der Skriptdatei das mit DVD2AVI erstellte Projekt mittels des mpeg2source Befehls geladen. (Zu beachten ist, dass MPEG2Dec diese Funktion bietet, also ohne LoadPlugIn nicht funktioniert.) Folgendes Beispiel lädt den PlugIn und öffnet ein DVD2AVI Projekt:

LoadPlugIn("c:\temp\mpeg2dec.dll")
Mpeg2Source("d:\video\matrix.d2v")

Lädt man dieses Skript in ein Enkodierungs-Programm, das avs Skripte verarbeiten kann (z.B. VirtualDub), wird über MPEG2DEC zur Dekodierung und Avisynth zum Frameserving der Inhalt des DVD2AVI Projekts angezeigt. Bisher ist noch kein Resize (Änderung der Auflösung) durchgeführt, was zu einem falschen Seitenverhältnis führt.

Der nächste Schritt, das Cropping (Beschneiden des Materials um z.B. störende Ränder loszuwerden) des Videos ist für SVCD nicht notwendig. Der Crop Befehl wird ebenfalls in der Skriptdatei ausgeführt und benötigt 4 Argumente: Links, Oben, Horizontale Ausgabeauflösung, Vertikale Ausgabeauflösung. In DVD2AVI haben wir beispielsweise notiert: Top: 60, Bottom: 60, Width:720 Height:480. Beispiel:

Crop(0,60,720,360)

Oben und Unten werden jeweils 60 Bildpunkte beschnitten => Oben=60. Der Wert für die Vertikale Ausgabeauflösung ergibt sich aus: 480-2x60=360. Horizontale Ausgabeauflösung wird beibehalten =>720. Der linke Bildrand wird ebenfalls beibehalten => Links=0.
Aus diesem Crop Befehl (wenn man ihn zur Scriptdatei hinzufügt) ergibt sich ein Videostrom mit 720x360 Bildpunkten ohne schwarze Balken.

DivX Resizing: Anpassen der Auflösung

Avisynth bietet zwei Algorithmen, bilinear und bikubisch, zur Umrechnung der Auflösung an. Bikubisch ist genauer und dadurch langsamer, und empfiehlt sich daher für höhere Qualitäten z.B. bei 2CD Rips oder SVCD.
Als Argumente wird die gewünschte horizontale und vertikale Auflösung übergeben. Dies ist bei beiden Funktionen gleich. Der Befehl für Bilinear Resizing in eine Auflösung von 640x272 Bildpunkten würde folglich lauten:

BilinearResize(640,272)

Das Selbe für bikubische Anpassung:

BicubicResize(640,272)

Danach lautet das avs-Skript bisher:

LoadPlugIn("c:\temp\mpeg2dec.dll ")
Mpeg2Source("d:\video\matrix.d2v")
Crop(0,60,720,360)
BilinearResize(640,272)

Anmerkung: Es ist auch möglich die Funktionen Crop und Resize zu vereinen. Es werden einfach die Crop Argumente nach denen fürs Resizing angegeben:

BilinearResize(640,272,0,60,720,360)

Anpassen der Auflösung bei SVCD

Wie zuvor erwähnt ist Cropping beim Erstellen einer SVCD nicht notwendig. Allerdings muss das so genannte Letterboxing - schwarze Ränder oben und unten - selbst durchgeführt werden. Dafür stellt Avisynth den Befehl AddBorders zur Verfügung. Analog zum Crop Befehl werden hier vier Argumente für Links, Oben, Rechts und Unten übergeben. Die Auflösung muss SVCD konform auf 480x360 (NTSC) bzw. 480x432 (PAL) angepasst werden.

AddBorders(0,60,0,60)

Daraus ergibt sich folgendes Skript:
Für PAL:

LoadPlugIn("c:\temp\mpeg2dec.dll ")
Mpeg2Source("d:\video\matrix.d2v")
BiCubicResize(480,432)
AddBorders(0,72,0,72)

Für NTSC:

LoadPlugIn("c:\temp\mpeg2dec.dll ")
Mpeg2Source("d:\video\matrix.d2v")
BiCubicResize(480,360)
AddBorders(0,60,0,60)


Audio:

Hat DVD2AVI die Audio Dekodierung übernommen, kann die Tonspur gleich ins AVS Skript integriert werden. Für die Tonspur steht der Befehl

WavSource("c:\temp\test.wav")

zur Verfügung. Wird der Befehl WavSource() direkt nach Mpeg2Source() verwendet, scheint Avisynth alle Befehle wie Crop, Resize, usw. auch auf die Tonspur anzuwenden, was zu Fehlern führt. Dies kann durch Definition von temporären Variablen für Video und Audio umgangen werden. Beispiel:

Video = Mpeg2Source("d:\video\matrix.d2v") # Die Variable Video "enthält" das Videomaterial
Audio = WavSource("d:\video\matrix.wav") # Die Variable Audio "enthält" die Tonspur
AudioDub(Video,Audio) # Video und Audio werden zu einem Datenstrom zusammengeführt

Jetzt können die weiteren Befehle sicher folgen:

LoadPlugIn("c:\temp\mpeg2dec.dll")
Video = Mpeg2Source("d:\video\matrix.d2v")
Audio = WavSource("d:\video\matrix.wav")
AudioDub(Video,Audio)
Crop(0,60,720,360)
BilinearResize(640,272)

Obiges Beispiel steht für ein komplettes DivX Enkodierungs-Skript.

Dieses Skript kann nun in ein beliebiges Enkodierungsprogramm geladen werden. Siehe weitere Anleitungen zum Thema Encoding.

DivX und VirtualDub Anmerkung:
In VDub muss im Video-Menu auf Fast Recompress geschalten werden, um den Geschwindigkeitsvorteil dieser Methode zu erhalten. Dies bedeutet, es können keine VDub-eigenen Filter angewandt werden :/


Last edited on: 06/18/2002 | German translation by: The Monk | Content by Doom9.net - The definitive DVD backup resource