Brother Johns Projekte: Gordian Knot
Gordian Knot ist veraltet. Deshalb pflege ich diese Anleitung nicht mehr und es kann vorkommen, dass an der einen oder anderen Stelle das Vorgehen nicht mehr exakt so funktioniert. Besonders betrifft das die Encoder-Kommandozeilen.
Akapumas Gordian-Knot-Personalisierer, was für ein Name! Viel zu lang, um nicht sofort eine Abkürzung zu kreieren, was akapuma praktischerweise gleich höchstselbst getan hat: agkp. Was genau es mit diesem Ding auf sich hat, dazu jetzt.
Agkp ist eine von akapuma entwickelte externe Erweiterung von Gordian Knot mit drei Hauptfunktionen:
Wir werden uns nur mit der Unterstützung für x264 CLI und MKVMerge beschäftigen, denn das sind zweifellos die beiden wichtigsten Funktionen. Gordian Knot selbst verwendet ja nur den x264 VfW-Encoder, der hässlich verbogene Streams erzeugt. Und VirtualDubMods Matroskafähigkeiten sind für heutige Verhältnisse rudimentär.
Agkp ist also dann interessant, wenn wir x264 und den Matroska-Container verwenden wollen. In diesem Fall rate ich sogar ganz ausdrücklich von reinem Gordian Knot ab, eben wegen der vergewaltigten Videostreams des VfW-Encoders.
Die aktuelle Version von agkp erhalten wir im ersten Posting des Entwicklungsthreads im Gleitz-Forum. Die Installation erfolgt in den VirtualDubMod-Ordner. Dafür muss vorher natürlich VirtualDubMod installiert sein. Wir entpacken das komplette agkp-Archiv in den VDubMod-Ordner. Dort treffen wir folgende Einstellung für alle drei Dateien agkpv.exe
, agkpa.exe
und agkpAR.exe
: Mit einem Rechtsklick auf die Datei und den Menüpunkt Eigenschaften gelangen wir in den Eigenschaftendialog.
Im Register Programm stellen wir sicher, dass Nach Beenden schließen angehakt ist, was unter Windows XP schon von Haus aus so sein sollte.
Die Datei agkp.ini
enthält die Pfade zu den benötigten externen Programmen. Die Datei können wir mit jedem Texteditor bearbeiten und dort eintragen, wo agkp mkvmerge.exe
und x264.exe
finden kann. Diese beiden Pfade sind wichtig und müssen immer angepasst werden. Der Player für Preview ist nur für agkps eigene Vorschaufunktion wichtig und MP4Box ist nur dann nötig, wenn wir trotz agkp den x264-VfW-Encoder verwenden. Dann ist MP4Box dafür zuständig, den verbogenen VfW-Stream in natives MPEG-4 zurückzuverwandeln, so dass das Video ordentlich in Matroska gemuxt werden kann.
Damit können wir Gordian Knot starten und ins Register Program Paths wechseln.
Unter Where is VirtualDubMod.exe located stellen wir mit dem Locate-Button die agkpV.exe
ein. Gordian Knot denkt also, dass es ganz normal VDubMod aufruft. Tatsächlich tritt aber agkp in Aktion. Entsprechend einfach ist es, trotz installiertem agkp ein klassisches GK-Encoding durchzuführen. Dazu ändern wir die VDubMod-Einstellung wieder zurück auf die VirtualDubMod.exe
.
Als letzter Punkt müssen wir darauf achten, dass der x264 VfW-Encoder installiert ist. Auch wenn wir ihn nicht benutzen, braucht ihn Gordian Knot, um das Skript für VDubMod korrekt erstellen zu können, das agkp dann auswertet. Welche Version des VfW-Encoders, ist egal. Er dient ausschließlich dazu, dass Gordian Knot nicht ins Schleudern gerät. Die x264.exe (der CLI-Encoder) sollte natürlich aktuell sein.
Gordian Knot können wir fast wie gewohnt benutzen. Als Container stellen wir MKV ein und als Videocodec x264. Anschließend konfigurieren wir wie gewohnt das komplette Encoding, ohne jedoch auf die Codec-Konfiguration zu achten. Agkp hat seine eigenen x264-Profile und berücksichtigt die VfW-Konfiguration nicht.
Ist alles fertig eingestellt und das Encoding gestartet, erscheint das Auswahlfenster von agkp, das sogar die Maus unterstützt. :)
Die Einträge am Anfang betreffen die Filterkonfiguration, mit der wir uns hier nicht beschäftigen. Interessant sind die letzten drei Zeilen.
Damit haben wir die Agkp-Konfiguration beendet und können das Encoding mit einem Klick auf den OK-Button unten in der Mitte starten. Im Fenster der agkpV.exe
lässt sich der Fortschritt verfolgen.
Das Encoding läuft nun genauso automatisch ab wie von Gordian Knot gewohnt.
Die Konfiguration von x264 erfolgt über die Datei agkpx264.bat
im VirtualDubMod-Ordner. Das ist eine Batchdatei, wie sie mancher vielleicht noch aus guten alten DOS-Zeiten kennt. Da es sich um eine reine Textdatei handelt, können wir sie mit jedem Texteditor bearbeiten. Und genau das tun wir jetzt. Alle folgenden Zeilennummern gelten für die unveränderte agkpx264.bat
, die agkp Version 37 mitbringt.
Bevor wir uns auf die Einzelheiten stürzen, hier ein paar grundlegende Dinge, die man über Batchdateien wissen sollte.
Die erste interessante Zeile ist Zeile 9.
set subme=7
An dieser Stelle setzen wir den Parameter --subme der x264-Konfiguration zentral für die ganze Datei. Mögliche Werte sind ganze Zahlen zwischen 1 und 7.
Weiter unten sind alle Abschnitte interessant, die mit xname beginnen. Jeder dieser Abschnitte steht für eine x264-Konfiguration, die wir auswählen können. Die folgenden Zeilen enthalten die Standardkonfiguration für ein 2-Pass-Encoding.
52 :xnametwopass 53 ECHO 2-pass 54 rem default 55 echo %2 -p 1 -B %3 -I 300 -i 120 -r 6 --mixed-refs ... 56 %2 -p 1 -B %3 -I 300 -i 120 -r 6 --mixed-refs ... 57 echo %2 -p 2 -B %3 -I 300 -i 120 -r 6 --mixed-refs ... 58 %2 -p 2 -B %3 -I 300 -i 120 -r 6 --mixed-refs ... 59 goto ende
Mit dem gerade besprochenen Schema können wir einen neuen Encoder-Abschnitt einfügen, womit uns eine zusätzliche Auswahlmöglichkeit fürs Encoding zur Verfügung steht. Die passende Stelle für die neue Konfiguration ist nach dem letzten xname-Abschnitt.
Vor dem Marker :ende, da wohin der Pfeil zeigt, fügen wir z.B. folgende Zeilen ein.
:xnameencwissen echo Encwissen echo %2 -B %3 -r 5 --mixed-refs -t 1 -f 0:0 -b 3 --direct auto --b-pyramid -w --bime -m %subme% -A i4x4,p8x8,p4x4,b8x8 %agkpzones% --no-psnr --progress -p 1 -o NUL %5 %2 -B %3 -r 5 --mixed-refs -t 1 -f 0:0 -b 3 --direct auto --b-pyramid -w --bime -m %subme% -A i4x4,p8x8,p4x4,b8x8 %agkpzones% --no-psnr --progress -p 1 -o NUL %5 echo %2 -B %3 -r 5 --mixed-refs -t 1 -f 0:0 -b 3 --direct auto --b-pyramid -w --bime -m %subme% -A i4x4,p8x8,p4x4,b8x8 %agkpzones% --no-psnr --progress -p 3 -o %4 %5 %2 -B %3 -r 5 --mixed-refs -t 1 -f 0:0 -b 3 --direct auto --b-pyramid -w --bime -m %subme% -A i4x4,p8x8,p4x4,b8x8 %agkpzones% --no-psnr --progress -p 3 -o %4 %5 goto ende
Die x264-Konfiguration können wir natürlich ganz nach Bedarf anpassen. Mehr dazu im x264-Konfig-Kapitel des Encodingwissens. Wichtig sind zunächst die fett markierten Bestandteile.
x264.exe
, wie wir ihn in der Datei agkp.ini
konfiguriert haben.Im Auswahlfenster von agkp haben wir nun eine zusätzliche Option namens Encwissen, mit der wir die neue Konfiguration verwenden können.
Ehrlich gesagt wundert es mich ein bisschen, dass noch niemand auf die dumme Idee gekommen ist, agkp auszutricksen und anstelle von x264 den Xvid-Kommandozeilenencoder zu verwenden. Das funktioniert nämlich prächtig. Einzige Einschränkung: Zonen (und damit Credits-Encoding) können wir nur manuell konfigurieren, nicht in Gordian Knot, da Xvid eine andere Syntax benutzt als x264.
Der Xvid-CLI-Encoder heißt XvidEncraw und wird im Xvid-CLI-Kapitel des Encodingwissens näher besprochen. Der Ort für die Xvid-Konfiguration ist die bekannte Datei agkpx264.bat
im VirtualDubMod-Ordner. Dort fügen wir wie oben einen neuen Encoder-Abschnitt hinzu, diesmal allerdings für XvidEncraw. Den fett markierten Pfad zur xvid_encraw.exe
müssen wir anpassen, je nachdem, wo wir die Datei abgelegt haben.
:xnamexvid echo Xvid ;-) echo "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -progress 50 -bquant_ratio 162 -bquant_offset 0 -bvhq -qtype 1 -qpel -vhqmode 2 -zones 0,w,1,O "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -progress 50 -bquant_ratio 162 -bquant_offset 0 -bvhq -qtype 1 -qpel -vhqmode 2 -zones 0,w,1,O echo "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -mkv %4 -pass2 -bitrate %3 -progress 50 -overhead 0 -bquant_ratio 162 -bquant_offset 0 -bvhq -qtype 1 -qpel -vhqmode 2 -zones 0,w,1,O "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -mkv %4 -pass2 -bitrate %3 -progress 50 -overhead 0 -bquant_ratio 162 -bquant_offset 0 -bvhq -qtype 1 -qpel -vhqmode 2 -zones 0,w,1,O goto ende
Die Konfiguration ist in etwa die, wie sie in der Xvid-Konfiguration erklärt ist. Natürlich können wir sie nach Belieben anpassen.
Mehr Veränderungen sind an der agkpx264.bat
nicht nötig. Wir können die Datei speichern und Gordian Knot laden. Dort tun wir so, als hätten wir es mit einem x264-Encoding zu tun. Denn prinzipiell haben wir gerade ein neues x264-Profil für agkp erstellt. Nur, dass dieses Profil eben gar nicht den x264-Encoder verwendet. Das heißt, wir wählen natürlich MKV als Container und wie vorhin x264 als Encoder, ohne allerdings an dessen Konfiguration Zeit zu verschwenden. Xvid kommt erst später ins Spiel. Wie auch für Xvid VfW sollte die Option Calculate Frame-Overhead im Bitrate-Register deaktiviert sein.
Der Kompressionstest wird trotz Trickserei weiterhin mit x264 durchgeführt, liefert also ein nutzloses Ergebnis. Um trotzdem auf den Test nicht verzichten zu müssen, können wir erst wie gewohnt XviD als Codec wählen, den Test durchführen und dann auf x264 mit agkp umschalten.
Haben wir alles fertig konfiguriert und das Encoding gestartet, erscheint das nun schon bekannte Agkp-Auswahlfenster.
Die Zeile x264-Encoder hat einen neuen Eintrag bekommen, hinter dem sich unsere Xvid-Konfiguration verbirgt. Natürlich können wir uns an dieser Stelle noch anders entscheiden und auf eines der x264-Profile umstellen. Für mkvmerge AR gilt das gleiche wie weiter oben im x264-Abschnitt.
Dann fehlt nur noch ein Klick auf OK und ein paar Stunden Geduld. Und dann soll noch einer sagen, Gordian Knot käme mit aktueller Encodingtechnologie nicht zurecht! :-)
Anamorphe Encodings erfordern schon mit Gordian Knot an sich ein paar Tricks. Und auch agkp bietet ausschließlich die Möglichkeit, das AR-Flag im Matroska-Container zu setzen. Da sowohl x264.exe als auch XvidEncraw das Setzen des MPEG-4-AR-Flags unterstützen, können wir die fehlende Funktion über die agkpx264.bat
nachrüsten.
Dafür öffnen wir die agkpx264.bat
und definieren nach der subme-Zeile (Zeile 9 in der unveränderten Datei) eine neue Variable.
Beim Encodingstart werden wir nun aufgefordert, das richtige PAR anzugeben (dürfte unter den alten Windows-9x-Versionen nicht funktionieren). Dieses können wir anschließend über %pixelar%
ansprechen und an den Encoder weitergeben, damit es ins MPEG-4-AR-Flag geschrieben wird. Wir verwenden beim Eintippen immer die Form x:y
, also würde z.B. 16:11
eine 16:9-PAL-DVD bezeichnen. Welches für den jeweiligen Film der richtige Wert ist, können wir der inzwischen sicher schon wohlbekannten PAR-Tabelle entnehmen. Für ein klassisches nicht-anamorphes Encoding setzen wir die Variable auf 1:1
.
Nun müssen wir die Encoder-Abschnitte anpassen. Für x264 fügen wir jeder Kommandozeile die Option --sar %pixelar%
(doppelter Bindestrich!) hinzu, z.B.:
:xnameencwissen echo Encwissen echo %2 -B %3 --sar %pixelar% -r 5 --mixed-refs ... %2 -B %3 --sar %pixelar% -r 5 --mixed-refs ... echo %2 -B %3 --sar %pixelar% -r 5 --mixed-refs ... %2 -B %3 --sar %pixelar% -r 5 --mixed-refs ... goto ende
Für XvidEncraw heißt die Option -par %pixelar%
(einfacher Bindestrich!):
:xnamexvid echo Xvid ;-) echo "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -par %pixelar% -progress 50 ... "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -par %pixelar% -progress 50 ... echo "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -mkv %4 -pass2 -par %pixelar% -bitrate %3 ... "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -mkv %4 -pass2 -par %pixelar% -bitrate %3 ... goto ende
Schließlich löschen wir ganz am Ende der Datei die PAR-Variable, indem wir diese neue Zeile einfügen:
set pixelar=
Damit sind wir bereit zum Encoding. Gordian Knot konfigurieren wir wie gewohnt. Im agkp-Auswahlfenster setzen wir zusätzlich das Seitenverhältnis im Matroska-Container. Dazu klicken wir in der Zeile mkvmerge AR auf Eingabe, setzen den passenden Wert ein (mit dem Punkt als Dezimaltrenner, nicht dem Komma) und bestätigen mit einem Druck auf die Enter-Taste.
Achtung! Matroska arbeitet nicht mit dem PAR, sondern mit dem DAR! Der richtige Wert ist der gleiche, den wir in MKVMerge GUI unter Aspect Ratio eintragen müssten. Details dazu stehen im Matroska-Muxing-Kapitel des Encodingwissens.
Zum Schluss startet ein Klick auf OK das Encoding. Das Ergebnis ist trotz des VfW-zentrierten Gordian Knot eine anständig gemuxte Matroska-Datei mit beiden AR-Flags und einem nativen MPEG-4-Videostream. An der Stelle haben wir uns dann wieder einmal einen Kaffee verdient. :)