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 [H], 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 dem 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. Wenn wir empfohlenerweise mit dem x264 Cli-Encoder encodieren, können wir uns die grafische Konfiguration des VfW-Encoders in Gordian Knot sparen. 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.
Mkvmerge AR ist für das Setzen des AR-Flags im Matroska-Container zuständig. Um das AR-Flag im MPEG-4-Stream kümmert sich agkp nicht – unschön. Deshalb empfehle ich anamorphe Encodings [H] mit der agkp-Standardfunktionalität ausdrücklich nicht. Das gilt nicht, wenn wir den VfW-Encoder verwenden, denn der setzt das MPEG-4-Flag wie von uns vorher konfiguriert. Wie wir auch mit agkp ein anamorphes Encoding einschließlich MPEG-4-Flag erreichen, dazu mehr weiter unten auf dieser Seite.
Für ein klassisches nicht-anamorphes Encoding bleibt die AR-Angabe unverändert – so wie im Screenshot zu sehen.
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. In der VfW-Konfiguration heißt die Option Partition Decision. 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 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 Konfiguration entspricht der aus dem x264 Cli-Kapitel. Wichtig sind die fett markierten Bestandteile.
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 Xvid_Encraw und besteht aus einer einzelnen Datei: xvid_encraw.exe. Damit das Encoding funktioniert, muss aber zusätzlich das ganz normale Xvid-Paket installiert sein! Die xvid_encraw.exe können wir in einen beliebigen Ordner kopieren.
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 Xvid_Encraw.
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 -vbvsize 1833216 -vbvmax 8000 -vhqmode 4 -qpel -max_bframes 2 -bquant_ratio 163 -bquant_offset 0 -bvhq -nopacked -qtype 1 -progress 10 -zones 0,w,1,O
"C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -vbvsize 1833216 -vbvmax 8000 -vhqmode 4 -qpel -max_bframes 2 -bquant_ratio 163 -bquant_offset 0 -bvhq -nopacked -qtype 1 -progress 10 -zones 0,w,1,O
echo "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -mkv %4 -pass2 -bitrate %3 -vbvsize 1833216 -vbvmax 8000 -vhqmode 4 -qpel -max_bframes 2 -bquant_ratio 163 -bquant_offset 0 -bvhq -nopacked -qtype 1 -progress 10 -zones 0,w,1,O
"C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -mkv %4 -pass2 -bitrate %3 -vbvsize 1833216 -vbvmax 8000 -vhqmode 4 -qpel -max_bframes 2 -bquant_ratio 163 -bquant_offset 0 -bvhq -nopacked -qtype 1 -progress 10 -zones 0,w,1,O
goto ende
Die Konfiguration ist genau die, wie sie in der Xvid-VfW-Konfiguration erklärt ist. Prinzipiell handelt es sich um die leicht angepassten Kommandozeilen aus dem Xvid-Cli-Kapitel.
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 nur 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.
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.
Wie auch für Xvid VfW sollte die Option Calculate Frame-Overhead im Bitrate-Register deaktiviert sein.
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. Im Xvid-Fall ist es sinnvoll, auch den mkvmerge fourcc auf XVID zu ändern. 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 Xvid_Encraw 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.
Für alle Befehle weiter unten in der Datei existiert nun eine neue Variable, die wir über %pixelar% ansprechen können. Darin enthalten ist der PAR, der ins MPEG-4-Flag geschrieben werden soll. Die 16:11 im Screenshot bezeichnen eine 16:9-PAL-DVD. 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 Xvid_Encraw heißt die Option -par %pixelar% (einfacher Bindestrich!):
:xnamexvid
echo Xvid ;-)
echo "C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -par %pixelar% -vbvsize 1833216 ...
"C:\Encoder\xvid_encraw.exe" -i %5 -type 2 -pass1 -par %pixelar% -vbvsize 1833216 ...
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. Bevor wir den Encoding-Job starten – also bevor das agkp-Auswahlfenster erscheint – müssen wir, falls nötig, in der agkpx264.bat in der Zeile set pixelar den richtigen Wert für den jeweiligen Film eintragen. Dann erhalten wir ein Encoding mit gesetztem MPEG-4-AR-Flag.
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.
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. :)