MPEG2 für DVD Encoden - the FreeWay

Aus FeM Streaming Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Ziel

DVD-konformes Material encoden unter Verwendung von Freeware bzw OpenSourceSoftware

Voraussetzungen

Benötigte Software:

Vorgehensweise

Erster Schritt - Software installieren

  • Den WavDest Filter registrieren siehe auch [Registrieren von DirectShowFiltern]
  • Avisynth installieren. Hier gibt es nichts besonderes zu beachten.
  • FFDshow installieren. Wichtig sind die Codecs und das VFW Interface

Zweiter Schritt - Ton rausziehen und Encoden

Die WMV-Datei mit Graphedit öffnen und alle Blöcke aus dem Videozweig entfernen. Alle Blöcke hinter dem WindowsMediaAudio Decoder entfernen. Über STRG+F 2 Filter einfügen: Wavdest und Filewriter (beide unter DirectShow Filter zu finden). Im OpenDialog des Filewriter einen Namen .wav angeben. Jetzt auf den Ausgabe-Pin des AudioDecoder rechts klicken (kleines Quatrat am Filterblock) und Render Pin wählen. Normalerweise sollte jetzt der Graph sich aufgebaut haben. Er sollte so ausehen: Block mit Quelldatei -> WMAudio Decoder -> Wav Dest -> Filewriter. Wenn das der Fall ist dann oben auf Play drücken und warten....

Wenn er fertig ist (Play is wieder grün) kann GraphEdit geschlossen werden. Die WavDatei in BeSweet öffnen und als MP2 mit einer Bitrate von mindestens 224 kbit und einer Samplerate von 48 kHz encoden.

Dritter Schritt - Script erstellen

Da aus lizensrechtlichen Gründen kann VirtualDub kein asf oder wmv direk öffnen. Es bleibt (nur) der Umweg über Avisynth. Ich gehe mal hier von einem korrekt installiertem Avisynth und WindowsMedia Codec aus.

Wir erstellen und nun eine Textdatei mit der Endung .avs. Diese wird in einem beliebigen Texteditor geöffnent und es werden folgende Zeilen ergänzt:

 v = DirectshowSource("Pfad_zur_WMV-Datei")
 v = v.lanczosresize(720,576)
 
 return(v)

Die erste Zeile lädt die WMV Datei über die entsprechenden DirectShowFilter. Mit der 2. Zeile wird das Bild dann auf die richtige (DVD-konforme) Größe gebracht. Die letzte Zeile gibt das Bild an die aufrufenden Applikation aus. Wer mag kann noch ein

 v = v.sharpen(0.3)

vor das return schreiben um das Material etwas zu schärfen...

Vierter Schritt - Encoden mit VirtualDub

Die avs-Datei jetzt in VirtualDub öffnen. Bei Bedarf noch weitere Filterungen oder Schnitte (es kann framegenau geschitten werden) vornehmen. Anmerkung: VirtualDub-Filter arbeiten im RGB-Farbraum und sind daher langsamer als die Filter in Avisynth, weil die Verarbeitung im RGB wohl etwas langsamer ist als auch eine Konvertierung des Farbraums des Videos von Nöten ist.

Die noch enthaltene Tonspur deaktivieren:

VirtualDub: Audio -> No audio VirtualDubMod: Streams -> List -> Stream markieren und dann "Disable" klicken

jetzt F7 für den Speichern-Dialog drücken. Der Name der AVI ist egal.

Haken für Batch mode setzen. Videomode auf Fast Recompress (nur wenn keine VirtualDub Filter benutzt werden) und dann auf "change" um den Codec auszuwählen.

Hier den FFDShow auswählen und ihn konfigurieren:

  • Encoder: MPEG2, FOURCC MPEG, Mode: two passes - 1st pass
  • Generic: Max I-Frame Interval: 15, b frames aktivieren, Anzahl 1, Anzahl der Threads nach belieben (>1 nicht getestet)
  • Quatization: Quatizationtype MPEG, MPEG2 DC precision: 9 (bei viel Bitrate kanns auch 10 sein)

Rest auf Standard belassen ok, ok drücken und dann speichern.

Nochmal F7, change, configure, jetzt:

  • Size: Größe der Videodatei in KBytes einstellen (größe des Tons mit beachten)
  • Encoder: Mode: two passes - 2nd pass int
  • Two passes 2nd pass: Max Bitrate: 8000 kbit
  • Output: store frames to external file: Raw Frames und Ausgabedatei wählen (.m2v)

ok, ok, speichern.

F4 für die Joblist und Joblist starten. warten...

Wenn er fertig is dann weiter bei Schritt 5

'Oder:'

Alternative - Encoden mit GraphEdit

Das File mit GraphEdit öffnen. Diesmal den kompletten Audiozweig entfernen. Dann den FFDShow Encoder einfügen (Filter, Videoencoder) und mit dem Ausgang des Videodecoders verbinden. Den Ausgang des FFDShow dann noch mit einem Filewriter verbinden. Dateiname ist egal, da das nur ein Dummyfile ist, damit der Graph überhaupt spielen kann.
Über rechtsklick auf den FFDshow die Optionen aufrufen. Einstellungen wie bei VirtualDub. Diesmal aber noch bei "Input" Enable Imageprocessing wählen und Configurieren. Unter "Größe und Seitenverhältnis" 720x576 angeben, keine SV-Korrektur. Den Filter Größe und Seitenverhältnis auch aktivieren.
ok, ok und dann den Graph abspielen.
Wenn nach endlicher Zeit der 1st pass fertig ist, den 2nd einstellen wie oben und dann wieder den Graph abspielen und warten...

Leider gibts bei GraphEdit kein Statusfenster. Eine Abschätzung is lediglich während des 2nd pass über die Größe der m2v-Datei möglich...

Fünfter und letzter Schritt - mpeg File patchen

irgendwas macht FFDShow da noch falsch. Egal was man für eine AspectRatio im Encoder einstellt (also das was in den Header geschrieben wird) es steht nie 4:3 drinne. Also mal fix [DVDPatcher] angeworfen und das file gepatcht. Die Werte:

  • Bitrate: 3,5 MBit
  • Aspect Ratio: 4:3
  • Horizontal Size: 720
  • Vertical Size: 576
  • Frame Rate: 25 fps

Den ersten Header zu patchen reicht meines Erachtens nach aus (muss man experimentieren). Dann das file patchen und fertig.