Wir sprechen in diesem Kapitel nahezu sämtliche Parameter von x264.exe kurz an. Wenn wir noch überhaupt nicht mit x264 vertraut sind, sollten wir besser im Kapitel x264-Detailkonfiguration einsteigen, wo das Zusammenspiel der Optionen bei einem konkreten Encoding erklärt wird.
Wir sollten auf jeden Fall eine aktuelle Version von x264 verwenden; zum einen, weil sich der Encoder ständig weiterentwickelt, zum anderen, damit sich die Kommandozeile tatsächlich so verhält wie beschrieben. Dieses Kapitel bezieht sich auf x264 Revision 1400. Bei Problemen hilft zunächst ein x264.exe --fullhelp
, das mit einer kurzen Erklärung sämtliche verfügbaren Parameter auflistet. Außerdem verrät uns der Befehl ganz am Anfang seiner Ausgabe die x264-Revisionsnummer und ob der Encoder mit Unterstützung für AviSynth und MP4 compiliert wurde. AviSynth ist Grundvoraussetzung, damit wir arbeiten können. MP4-Unterstützung benötigen wir nur dann, wenn wir uns für MP4 als Container der Zieldatei entschieden haben.
Ein Stern-Symbol dient zur Kennzeichnung aller Optionen, die für ein 2-Pass- oder CRF-Encoding interessant sind. Die wichtigsten davon haben wir uns schon im x264-Konfigurationskapitel näher angesehen. Zum Querlesen sollten wir uns Selurs man x264 ansehen, das zu manchen Optionen eine etwas ausführlichere Erklärung als das Encodingwissen bietet. Allerdings ist man x264 stark veraltet und deshalb nur bedingt geeignet, um damit konkrete Kommandozeilen zu erstellen.
Manche Optionen besitzen Standardwerte, d.h. wir müssen sie nur dann angeben, wenn wir einen abweichenden Wert verwenden wollen. Ansonsten arbeitet x264.exe automatisch mit dem Standard. Optionen ohne Standardwert sind nur dann aktiv, wenn wir sie ausdrücklich angeben.
Normalerweise beginnen x264-Paramter mit zwei Strichen (--
). Daneben existieren für einige besonders häufig verwendete Optionen Kurzformen, die aus einem einzelnen Buchstaben bestehen und im Gegensatz zur ausgeschriebenen Variante mit einem einfachen Strich beginnen (z.B. --bframes
und -b
). Zur Übersichtlichkeit habe ich darauf verzichtet, die Kurzformen aufzulisten.
Das mit den Revisionen 1177 und 1197 eingeführte Vorlagensystem fasst jeweils eine Reihe von Optionen abgestimmt für eine bestimmten Zweck in einer Vorlage zusammen. Es unterteilt sich in Kompressionsvorlagen (--preset
), Tuningvorlagen (--tune
) und H.264-Profilvorlagen (--profile
). Vorlagen sind lediglich eine Kurzform für eine bestimmte Kombination aus Kommandozeilenoptionen. Alles, was wir über das Vorlagensystem einstellen können, lässt sich auch manuell einzeln konfigurieren.
Die drei Vorlagenkomponenten, manuell angegebene Optionen und die internen x264-Standardwerte überschreiben sich gegenseitig in folgender Reihenfolge:
--preset
).--tune
).--profile
).In welcher Reihenfolge wir Optionen und Vorlagen in der Kommandozeile angeben, spielt keine Rolle.
Werte: | ultrafast , veryfast , faster , fast , medium , slow , slower , veryslow , placebo |
---|---|
Standard: | medium |
Beispiel: | --preset slower |
Kompressionsvorlagen treffen eine Abwägung zwischen Geschwindigkeit und Größe/Qualität. Für ein Encoding mit einem durchschnittlich schnellen Computer ist --preset slow
eine gute Wahl. Hinter den einzelnen Vorlagen stehen folgende Einstellungen:
--scenecut 0
--no-cabac
--ref 1
--no-deblock
--b-adapt 0
--bframes 0
--no-mbtree
--aq-mode 0
--partitions none
--me dia
--subme 0
--trellis 0
--weightp 0
--no-mixed-refs
--no-weightb
--no-8x8dct
--ref 1
--no-mbtree
--partitions i8x8,i4x4
--me dia
--subme 1
--trellis 0
--weightp 0
--no-mixed-refs
--ref 2
--no-mbtree
--subme 4
--weightp 1
--no-mixed-refs
--ref 2
--rc-lookahead 30
--subme 6
--ref 5
--b-adapt 2
--direct auto
--rc-lookahead 50
--me umh
--subme 8
--ref 8
--b-adapt 2
--direct auto
--rc-lookahead 60
--partitions all
--me umh
--subme 9
--trellis 2
--ref 16
--b-adapt 2
--bframes 8
--direct auto
--rc-lookahead 60
--partitions all
--me umh
--merange 24
--subme 10
--trellis 2
--ref 16
--b-adapt 2
--bframes 16
--direct auto
--rc-lookahead 60
--partitions all
--me tesa
--merange 24
--subme 10
--trellis 2
--no-fast-pskip
--slow-firstpass
Werte: | film , grain , animation , psnr , ssim , touhou , fastdecode , zerolatency |
---|---|
Standard: | nicht gesetzt |
Beispiel: | --tune grain |
Tuningvorlagen enthalten Optimierungen für entweder bestimmte Typen von Quellmaterial oder für spezielle Anforderungen bei der Wiedergabe. Wir können mehrere Vorlagen anwenden, indem wir sie durch ein Komma (,
) getrennt hintereinander hängen. Es darf aber immer nur eine Psy-Vorlage aktiv sein.
Allgemeine Psy-Optimierung für Kinofilme.
--deblock -1:-1
--psy-rd 1.0:0.15
Psy-Optimierung für körniges/verrauschtes Material, falls das Korn/Rauschen beibehalten werden soll. Führt zu vergleichsweise hohen Bitraten.
--deblock -2:-2
--ipratio 1.1
pbratio 1.1
--aq-strength 0.5
--qcomp 0.8
--psy-rd 1.0:0.25
--no-dct-decimate
--deadzone-intra 6
--deadzone-inter 6
Psy-Optimierung für klassischen Zeichentrick wie z.B. Tom & Jerry. 3D-Animationen, z.B. Monsters Inc., gehören nicht dazu und sollten wie normaler Realfilm behandelt werden.
--ref <verdoppeln, falls größer als 1>
--deblock 1:1
--bframes <um 2 erhöhen>
aq-strength 0.6
--psy-rd 0.4:0.0
Psy-Optimierung auf möglichst hohe PSNR-Werte. Ist für normale Encodings uninteressant.
--aq-mode 0
--no-psy
Psy-Optimierung auf möglichst hohe SSIM-Werte. Ist für normale Encodings uninteressant.
--aq-mode 2
--no-psy
Psy-Optimierung für Aufzeichnungen aus Touhou-Spielen. x264-Entwickler Dark Shikari nutzt solche Videos gerne zum Testen, da sie den Encoder extrem fordern.
--ref <verdoppeln, falls größer als 1>
--deblock -1:-1
--aq-strength 1.3
--partitions <zusätzlich p4x4, wenn p8x8 aktiv>
--psy-rd 1.0:0.2
Deaktivierung der für die Wiedergabe CPU-intensivsten Optionen.
--no-cabac
--no-deblock
--no-weightb
--weightp 0
Deaktiviert alle Optionen, die die Encoding-Latenz erhöhen. Kann für manche Streaming-Anwendungen nützlich sein.
--bframes 0
--rc-lookahead 0
--sync-lookahead 0
--sliced-threads
Werte: | baseline , main , high |
---|---|
Standard: | high |
Beispiel: | --profile main |
Erzwingt die Kompatibilität mit dem angegebenen H.264-Profil. H.264-Level, VBV-Einstellungen etc. sind davon nicht betroffen.
Standard: | 250 |
---|---|
Beispiel: | --keyint 250 |
Maximales IDR-Frame-Intervall. Siehe auch das x264-Technikkapitel. Als Daumenregel hat sich das Zehnfache der Bildrate eingebürgert. Deshalb können wir den Standardwert problemlos übernehmen.
Standard: | 25 |
---|---|
Beispiel: | --min-keyint 25 |
Mindestabstand, der zwischen zwei IDR-Frames liegen muss. Siehe auch das x264-Technikkapitel. Als Daumenregel hat sich die Bildrate eingebürgert. Deshalb können wir den Standardwert problemlos übernehmen.
Werte: | Ganze Zahlen von 0 bis 100 |
---|---|
Standard: | 40 |
Beispiel: | --scenecut 40 |
Szenenwechselerkennung. Legt fest, wie stark sich der Bildinhalt von einem Frame zum nächsten ändern muss, damit ein I-Frame eingefügt wird. Der Wert 0
deaktiviert die Szenenerkennung, d.h. I-Frames werden unabhängig vom Bildinhalt im mit --keyint
definierten Abstand eingefügt. Wir sollten die Standardeinstellung beibehalten.
--scenecut 0
die Szenenerkennung zur intelligenten Verteilung von I-Frames.Werte: | Ganze Zahlen zwischen 1 und 16 |
---|---|
Standard: | 3 |
Beispiel: | --ref 5 |
Anzahl der erlaubten Referenzframes. x264 erlaubt maximal 16 Stück; sinnvoll sind 4 bis 5. Mehr steigert hauptsächlich die Codierzeit, nicht mehr die Qualität. Lediglich Zeichentrick profitiert oft von deutlich höheren Werten. Die Einstellung wirkt sich auch auf B-Frames aus.
Werte: | Für alpha sowie beta ganze Zahlen zwischen -6 und 6 |
---|---|
Standard: | für beide 0 |
Beispiel: | --deblock 0:-1 |
Konfiguriert die Stärke des Inloop-Deblocking-Filter, mit dem wir uns schon ausführlicher im x264-Technikkapitel beschäftigt haben. Hohe Datenraten sollten vorsichtig gefiltert werden (z.B. mit 0:0
oder 0:-1
), niedrige vertragen etwas mehr (etwa 1:2
).
--interlaced
darf dann nicht gesetzt werden.Werte: | 0 (aus), 1 (schnell), 2 (optimal) |
---|---|
Standard: | 1 |
Beispiel: | --b-adapt 2 |
Legt fest, welcher Algorithmus für die adaptive (»intelligente«) Verteilung von B-Frames verwendet wird. Siehe auch das x264-Technikkapitel. Mit dem Wert 0
schalten wir die intelligente Verteilung ab, was nicht empfehlenswert ist. 1
steht für den klassischen schnellen Algorithmus und 2
für den optimaleren, aber auch langsameren. I.d.R. sollten wir --b-adapt 2
wählen.
Werte: | Ganze Zahlen von 0 bis 16 |
---|---|
Standard: | 3 |
Beispiel: | --bframes 3 |
Legt fest, wie viele B-Frames maximal direkt hintereinander stehen dürfen. Siehe auch das x264-Technikkapitel. Ein Wert von 0
deaktiviert B-Frames vollständig. Empfehlenswert ist das Maximum von 16
zusammen mit --b-adapt 1
oder 4
bis 5
mit --b-adapt 2
.
Werte: | Ganze Zahlen von -100 bis 100 |
---|---|
Standard: | 0 |
Beispiel: | --b-bias 0 |
Steuert x264s Vorliebe für B-Frames. Negative Werte halten den Encoder vom B-Frame-Einsatz ab, positive ermuntern ihn, öfter B-Frames zu setzen. Benötigt in der Regel keine Anpassung.
Werte: | none , strict , normal |
---|---|
Standard: | none |
Beispiel: | --b-pyramid normal |
Erlaubt es, B-Frames als Referenzframes zu verwenden. Siehe auch das x264-Technikkapitel. Erfordert --bframes 2
oder höher.
Funktioniert im Moment (November 2009) nicht zusammen mit der Macroblock-Tree-Ratecontrol; das soll sich aber bald ändern. x264 schaltet die B-Pyramide automatisch ab, wenn MB-Tree aktiv ist (Voreinstellung), da MB-Tree grundsätzlich höhere Qualitätsvorteile bietet. Wenn wir die B-Pyramide verwenden wollen, müssen wir also ausdrücklich MB-Tree mit --no-mbtree
abschalten.
Wenn wir die B-Pyrmide verwenden, sollten wir i.d.R. den normal
-Modus verwenden. strict
ist qualitativ etwas schlechter, allerdings erfordert Blu-Ray-kompatibles Encoding zwingend strict
oder none
.
Werte: | spatial , temporal , auto |
---|---|
Standard: | spatial |
Beispiel: | --direct auto |
Gibt an, ob in B-Frames zeitliche oder räumliche Informationen zur Komprimierung von Direct-Blocks (d.h. Blocks ohne eigenen Bewegungsvektor) herangezogen werden. Siehe auch das x264-Technikkapitel. Die Entscheidung können wir mit auto
x264 überlassen.
Werte: | 0 (keine Slices) und positive ganze Zahlen |
---|---|
Standard: | 0 |
Beispiel: | --slices 4 |
Legt die Anzahl an Slices fest, in jedes Bild zerlegt werden soll. Slices senken die Effizienz. Für ein normales Encoding sind sie unnötig und sollten deaktiviert bleiben. Lediglich wer H.264-Material für eine Video-BluRay erzeugt, muss mindestens vier Slices verwenden.
--slices
. Sollte ohne guten Grund nie gesetzt sein.--slices
. Sollte ohne guten Grund nie gesetzt sein.Werte: | 1.0 bis 51.0 |
---|---|
Standard: | 23.0 |
Beispiel: | --crf 20 |
Führt ein 1-Pass-Encoding mit eine Zielquantizer durch (Constant Rate Factor). Kommawerte müssen zwingend mit dem Punkt als Dezimaltrenner angegeben werden. Dieser Modus ist interessant, wenn wir keine exakte Zielgröße anstreben. Sinnvolle Werte liegen grob zwischen 18
und 25
.
Werte: | ganze Zahlen zwischen 0 und 51 |
---|---|
Beispiel: | --qp 20 |
Führt ein 1-Pass-Encoding mit festem Quantizer durch. --qp 0
aktiviert den verlustlosen Modus von x264. Ist für unsere Zwecke uninteressant.
Werte: | 1 , 2 , 3 |
---|---|
Beispiel: | --pass 2 |
Steuert ein Multipass-Encoding. 1
führt einen 1st Pass durch, in dem die Statistikdatei angelegt wird. 2
führt einen Nth- bzw. 2nd-Pass durch, ohne die Statistikdatei zu aktualisieren. 3
führt ebenfalls einen Nth- bzw. 2nd-Pass durch und aktualisiert dabei die Statistikdatei. Mit der Durchführung eines 2-Pass-Encodings haben wir uns im x264-Konfigurationskapitel schon ausführlicher befasst.
Im 1st Pass werden einige Optionen, die nur bremsen und zu diesem Zeitpunkt noch nicht nötig sind, automatisch deaktiviert. Im einzelnen bedeutet das --ref 1 --no-8x8dct --me dia --trellis 0
; außerdem --partitions none
, wenn vom Benutzer keine i4×4-Partitionen vorgegeben sind, ansonsten --partitions i4x4
; und schließlich --subme 2
, wenn ursprünglich ein höherer Wert gesetzt war.
--qp
oder --crf
) stellt der Wert die angestrebte durchschnittliche Datenrate dar. Im 2-Pass-Encoding definiert --bitrate
die gewünschte Zielgröße der Videospur.Deaktiviert die standardmäßig aktive Macroblocktree-Ratecontrol. Ist nur für sehr schnelle Encodings auf Kosten der Qualität interessant.
Es gibt Berichte, dass MB-Tree unter Umständen zu verstärkter Blockbildung in gleichförmigen, dunklen Flächen führen kann. Mir selbst ist das Problem noch nicht untergekommen, es kann jedoch nicht schaden, wenn wir vorerst fertige Encodings mit aktivem MB-Tree intensiver kontrollieren als normalerweise.
Werte: | 0 bis zum Kleineren aus 250 oder maximalem Keyframe-Intervall (keyint ). |
---|---|
Standard: | 40 |
Beispiel: | --rc-lookahead 60 |
Legt fest, wie viele Frames die Macroblocktree- und VBV-Algorithmen in die Zukunft schauen dürfen. Je höher der Wert, desto mehr Arbeitsspeicher und Rechenzeit wird benötigt. Den Standard beizubehalten, ist sinnvoll.
Werte: | 0 (nicht definiert) und positive ganze Zahlen |
---|---|
Standard: | 0 |
Legt im Rahmen des VBV (Video Buffer Verifier) die maximal erlaubte Datenrate des Videos fest. Ist hauptsächlich für die Hardware-Wiedergabe interessant.
Werte: | 0 (nicht definiert) und positive ganze Zahlen |
---|---|
Standard: | 0 |
Legt die Größe des VBV-Pufferspeichers (Video Buffer Verifier) fest. Ist hauptsächlich für die Hardware-Wiedergabe interessant.
Werte: | 0.0 (leer) bis 1.0 (voll) |
---|---|
Standard: | 0.9 |
Legt fest, zu welchem Prozentsatz der VBV-Puffer (Video Buffer Verifier) gefüllt werden muss, bevor zu die Wiedergabe startet. Ist hauptsächlich für die Hardware-Wiedergabe interessant.
Werte: | Ganze Zahlen von 1 bis 51 |
---|---|
Standard: | 10 |
Definiert den minimalen Quantizer, den x264 niemals unterschreitet. Eine Anpassung ist nicht nötig.
Werte: Ganze Zahlen von 1
bis 51
Standard: 51
Definiert den maximalen Quantizer, den x264 niemals überschreitet. Eine Anpassung ist nicht nötig.
Werte: | Ganze Zahlen von 1 bis 50 |
---|---|
Standard: | 4 |
Legt für die Encodingmethoden 2-Pass und 1-Pass Bitrate fest, wie stark der Quantizer von einem Frame zum nächsten schwanken darf. Eine Anpassung ist nicht nötig.
Werte: | 0.1 bis 100.0 , inf |
---|---|
Standard: | 1.0 |
Definiert für die Encodingmethode 1-Pass Bitrate, wie stark die Bitrate eines einzelnen Frames von der angestrebten durchschnittlichen Bitrate abweichen darf.
Werte: | 1.00 bis 10.00 |
---|---|
Standard: | 1.40 |
Legt fest, um welchen Faktor ein P-Frame stärker quantisiert werden soll als das I-Frame, das es als Referenz verwendet. Der Standardwert ist gut abgestimmt und sollte ohne sehr guten Grund nicht verändert werden.
Werte: | 1.00 bis 10.00 |
---|---|
Standard: | 1.30 |
Legt fest, um welchen Faktor ein B-Frame stärker quantisiert werden soll als das P-Frame, das es als Referenz verwendet. Der Standardwert ist gut abgestimmt und sollte ohne sehr guten Grund nicht verändert werden.
Werte: | Ganze Zahlen von -12 bis 12 |
---|---|
Standard: | 0 |
Ermöglicht es, die Farbinformationen (Chroma) des Bildes anders zu quantisieren als die Helligkeitsinformationen (Luma). Da Chroma weniger wichtig ist als Luma, ist die üblichere Wahl eine stärkere Quantisierung des Chroma-Anteils. Im Normalfall sollten wir die Option jedoch weglassen.
Achtung: Die Option hat sich mit Revision 968 und Revision 1184 geändert. Hier ist der aktuelle Stand beschrieben.
Werte: | 0 (aus), 1 (Variance AQ), 2 (Auto-VAQ). |
---|---|
Standard: | 1 |
Beispiel: | --aq-mode 2 |
Wählt den Algorithmus zur adaptiven Quantisierung, der die Quantisierung von Makroblocks anpasst, je nachdem, wie empfindlich der menschliche Sehapparat für den jeweiligen Bildbereich ist. 0
deaktiviert AQ, 1
verwendet das normale statische Variance AQ, 2
nutzt die automatische VAQ-Variante, die die Stärke des Algorithmus je nach Eigenschaften der Szene anpasst. Der Standardwert 1
ist die sichere Wahl. 2
sollte zwar keine Probleme verursachen, ist aber noch zu neu, um endgültige Aussagen zu treffen.
Werte: | sinnvoll ca. 0.5 bis 1.5 |
---|---|
Standard: | 1.0 |
Beispiel: | --aq-strength 1.0 |
Wählt die Stärke der adaptiven Quantisierung. Auch hier sollte normalerweise der Standardwert 1.0
genutzt werden.
Werte: | 0.0 bis 1.0 |
---|---|
Standard: | 0.6 |
Legt fürs 2-Pass-Verfahren fest, ob im Verlauf des Films eher eine konstante Qualität oder konstante Bitrate erzielt werden soll. Der Wert 0.0
entspricht einem CBR-Encoding, d.h. jedes Bild erhält unabhängig von seiner Komplexität die gleiche Anzahl an Bits. 1.0
führt zu einem Encoding mit konstantem Quantizer, d.h. die Zielgröße kann nicht mehr eingehalten werden. Der Standardwert sollte nicht verändert werden.
Werte: | 0.0 bis 999.0 |
---|---|
Standard: | 20 |
Verringert beim 2-Pass-Encoding die Schwankungen bei der Quantizervergabe vor der Kurvenkompression. Den Standardwert sollten wir beibehalten.
Werte: | 0.0 bis 99.0 |
---|---|
Standard: | 0.5 |
Dieser Parameter verringert beim 2-Pass-Encoding die Schwankungen bei der Quantizervergabe nach der Kurvenkompression. Den Standardwert sollten wir beibehalten.
Gibt den Namen einer Textdatei an, in der für die Einzelbilder des Films Frametyp und Quantizer individuell festgelegt werden können. Ab Revision 1076 können mit dieser Datei vereinzelte Frames angepasst werden, bei älteren Revisionen muss für jedes Frame des Films ein Eintrag vorhanden sein. Jedes veränderte Frame steht in der Textdatei auf einer eigenen Zeile mit folgender Syntax:
<Framenummer> <Frametyp> <Quantizer>
Frametyp
ist ein einzelner Buchstabe mit folgender Bedeutung:
I
= IDR-Framei
= normales I-FrameP
= P-FrameB
= referenziertes B-Frameb
= nicht-referenziertes B-FrameQuantizer
ist ein gültiger H.264-Quantizer oder -1
, um x264 automatisch entscheiden zu lassen. Um für Frame Nummer 1000 ein IDR-Frame mit Quantizer 25 zu erzwingen, müsste in der Datei also folgende Zeile auftauchen:
1000 I 25
Werte: | jvt , flat |
---|---|
Standard: | flat |
Beispiel: | --cqm jvt |
Wählt eine der beiden Standard-Quantisierungsmatrizen. Siehe auch das x264-Technikkapitel.
Werte: | Gültiger Pfad zu einer Matrixdatei. |
---|---|
Beispiel: | --cqmfile "D:\Matrizen\eqm_avc_hr.cfg" |
Verwendet die benutzerdefinierte Quantisierungsmatrix aus der angegebenen Datei. Siehe auch das x264-Technikkapitel. --cqmfile
hat eine höhere Priorität als --cqm
, falls beide angegeben werden.
Werte: | none , all oder mit Komma getrennte Kombination aus p8x8 , p4x4 , b8x8 , i8x8 , i4x4 |
---|---|
Standard: | p8x8,b8x8,i8x8,i4x4 |
Beispiele: | --partitions p8x8,b8x8 oder --partitions all |
Legt fest, welche Partitionsgrößen für Makroblocks verwendet werden dürfen. Siehe auch das x264-Technikkapitel. Mehrere Werten werden mit einem Komma (,
) getrennt. p4x4
benötigt auch p8x8
. Für i8x8
muss die 8x8-DCT-Transformation aktiv sein, d.h. der Schalter --no-8x8dct
darf nicht gesetzt sein.
Da Partitionen maßgeblich die Effizienz von x264 beeinflussen, sollten wir sie nicht zu sehr einschränken. Lediglich auf p4x4
können wir i.d.R. verzichten. Die Berechnung, ob diese Partitionierung sinnvoll ist, drückt spürbar auf die Geschwindigkeit, sie fällt aber bei unseren üblichen Auflösungen (und erst recht bei den noch höheren HD-Auflösungen) nur sehr selten positiv aus, so dass im fertigen Encoding so oder so kaum P4×4-Partitionen auftauchen.
Werte: | dia , hex , umh , esa , tesa |
---|---|
Standard: | hex |
Beispiel: | --me umh |
Wählt den Algorithmus für die Bewegungssuche auf der Ebene von ganzen Pixeln. In der oben angegebenen Reihenfolge werden die Modi genauer und langsamer.
dia
= diamantförmige Suche mit Radius 1hex
= hexagonale Suche mit Radius 2umh
= ungerade Multihex-Sucheesa
= erschöpfende Suchetesa
= erschöpfende Hadamard-SucheBeim Standard hex
zu bleiben, ist nur auf langsameren Computern sinnvoll. Ansonsten sollten wir eher umh
verwenden. Die geringe Genauigkeitssteigerung von esa
und tesa
ist deren deutlich höheren Rechenaufwand meistens nicht wert.
Werte: | Ganze Zahlen zwischen 4 und 1024 |
---|---|
Standard: | 16 |
Beispiel: | --merange 16 |
Legt die Größe des Bereichs fest, in dem nach Bewegung gesucht wird. Ist nur relevant für die Modi ab --me umh
. Höhere Werte als 16
sind für DVD-Quellen nicht sinnvoll. Achtung: Hohe Werte sind extrem langsam!
Werte: | Ganze Zahlen und -1 (auto) |
---|---|
Standard: | -1 |
Definiert die maximal erlaubte Länge eines Bewegungsvektors. Wir sollten die standardmäßig aktive Automatik beibehalten.
Werte: | Ganze Zahlen und -1 (auto) |
---|---|
Standard: | -1 |
Setzt den Bewegungsvektor-Puffer, der zwischen zwei Encodingthreads verwendet wird. Benötigt keine Anpassung.
Achtung: Die Bedeutung der Werte hat sich mit Revision 996 wie unten beschrieben geändert. Die Option wurde mit Revision 1027 um den Wert 0
und mit Revision 1187 um den Wert 10
erweitert.
Werte: | Ganze Zahlen zwischen 0 und 10 . |
---|---|
Standard: | 7 |
Beispiel: | --subme 8 |
Definiert die Qualitätsstufe für die Subpixel-Bewegungssuche und die Partitionsentscheidung. 1
ist schnell und ungenau, 10
sehr langsam mit den besten Ergebnissen.
0
= keine Subpixel-Bewegungssuche.1
= SAD, ein QPel-Durchlauf.2
= SATD, zwei QPel-Durchläufe3
= HPel für den Makroblock, QPel für die MB-Partitionen.4
= immer QPel5
= Multi-QPel, zusätzlich bidirektionale Bewegungssuche6
= wie 5
, und RDO für I- und P-Frames7
= wie 5
, und RDO für alle Frames8
= wie 7
, zusätzlich verfeinerte RDO für I- und P-Frames9
= wie 7
, zusätzlich verfeinerte RDO für alle Frames10
= wie 9
, und QP-RDO. Benötigt aktiviertes AQ und --trellis 2
.Mindestens --subme 7
ist i.d.R. eine gute Wahl. Werte unter 5
sollten wir für qualitativ hochwertige Encodings nie verwenden.
Werte: | jeweils 0.0 bis 10.0 |
---|---|
Standard: | 1.0:0.0 |
Beispiel: | --psy-rd 1.0:0.15 |
Steuert Einsatz und Stärke der psychovisuellen Algorithmen, die bei der Kompressionsentscheidung die Komplexitätswahrnehmung des menschlichen Sehapparats berücksichtigen. Setzt sich aus PsyRD <rd>
und PsyTrellis <trellis>
zusammen. 0.0
schaltet den jeweiligen Algorithmus ab. PsyRD benötigt --subme 6
oder höher. PsyTrellis benötigt --trellis 1
oder --trellis 2
.
Werte: | 0 (deaktiviert), 1 (nur für endgültigen Block), 2 (bei jeder Entscheidung) |
---|---|
Standard: | 1 |
Beispiel: | --trellis 1 |
Trellis wägt zwischen Detailerhalt und geringerer Datenrate ab, indem es Koeffizienten nach bestimmten Kriterien auf- oder abrundet. Je nach Einstellung der Option --psy-rd
wird PsyTrellis oder klassisches Trellis verwendet. --trellis 2
ist recht langsam, erreicht aber besonders in der Psy-Variante etwas bessere Ergebnisse als --trellis 1
. Ganz abschalten sollten wir Trellis nicht.
Werte: | 0 (deaktiviert), 1 (Blindmodus), 2 (intelligente Analyse) |
---|---|
Standard: | 2 |
Beispiel: | --weightp 1 |
Steuert die gewichtete Bewegungskompensierung für P-Frames. 0
deaktiviert die Funktion, 1
verwendet den blinden Modus ohne Analyse. 2
sucht im Video nach Überblendungen und passt die Gewichtung entsprechend an.
Da gewichtete P-Frames bisher eine ungenutzte Funktion des H.264-Standards waren, gibt es im Moment (November 2009) zwei Software-Decoder, die mit solchen Videos nicht zurechtkommen: CoreAVC und Apple TV.
--no-chroma-me
können wir das auf die Luminanz beschränken. Da die zusätzliche Chroma-Suche die Geschwindigkeit nicht zu sehr beeinträchtigt, sollte der Schalter nicht gesetzt werden.Deaktiviert die beschleunigte Verarbeitung von P-Frames. Wird normalerweise nicht benötigt.
Werte: | Ganze Zahlen zwischen 0 und 32 . |
---|---|
Standard: | 21 |
Deadzones setzen an derselben Stelle an wie Trellis, arbeiten aber deutlich simpler und deshalb weniger effektiv. Niedrige Deadzone-Werte vernichten weniger Bilddetails, erhöhen aber die Datenrate deutlich. Hohe Deadzones glätten das Bild stärker im Tausch für eine höhere Komprimierbarkeit.
--deadzone-inter
setzt die für P- und B-Frames gültige Deadzone. Ist Trellis aktiv, wird die Deadzone-Einstellung praktisch bedeutungslos. Eine Anpassung ist demnach nur dann evtl. sinnvoll, wenn wir Trellis nicht nutzen.
Werte: | Ganze Zahlen zwischen 0 und 32 . |
---|---|
Standard: | 11 |
--deadzone-intra
ist das Gegenstück zu --deadzone-inter
und gilt für I-Frames. Auch hier ist eine Anpassung nur dann evtl. sinnvoll, wenn Trellis nicht aktiv ist.
Zonen definieren Abschnitte im Video, für die individuell das Qualitätsniveau und eine Reihe von anderen Einstellungen angepasst werden können.
--zones <Start>,<Ende>,<Modus>[,<Optionen>][/<Start>,<Ende>,<Modus>[,<Optionen>]]...
Die einzelnen Parameter einer Zone trennen wir mit Komma (,
). Zwischen mehreren Zonen steht ein Schrägstrich (/
) als Trennzeichen. Jede Zone besitzt drei Pflichtparameter.
Start
steht für die Nummer des ersten Frames der Zone. Das erste Frame des gesamten Videos hat die Nummer 0. Ende
steht für die Nummer des letzten Frames der Zone.
Modus
definiert den Encodingmodus der Zone. Mit q=<Quant>
legen wir fest, dass die Zone mit einem konstanten Quantizer (zwischen 0
und 51
) encodiert wird. Mit b=<Gewicht>
definieren wir eine Zone, die mit einem relativen Gewicht zum restlichen Film behandelt wird. Werte liegen zwischen 0.01
und 100.0
(Punkt als Dezimaltrenner!).
Optionen
sind weitere x264-Einstellungen, die pro Zone angepasst werden können. Sie werden in der Form Option=Wert
angegeben. Die Notation von Wert
folgt der entsprechenden x264-Option. Möglich sind: b-bias
, chroma-me
, dct-decimate
, deadzone-inter
, deadzone-intra
, deblock
, direct
, fast-pskip
, me
, merange
, mixed-refs
, no-8x8dct
, no-b-pyramid
, no-chroma-me
, no-dct-decimate
, no-deblock
, no-fast-pskip
, no-mixed-refs
, nr
, psy-rd
, ref
, scenecut
, subme
, trellis
.
Einige Einschränkungen im Gegensatz zur globalen Verwendung der Optionen den müssen wir beachten.
me
nur dann auf esa
oder tesa
gesetzt werden, wenn global --me esa
oder --me tesa
definiert ist.Merange
kann den global definierten Wert nicht überschreiten, wenn --me esa
oder --me tesa
gesetzt ist.Subme
kann nur geändert werden, wenn global nicht --subme 0
definiert ist.--ref
gesetzt wurde.Scenecut
kann in einer Zone nur verändert werden, nich an- oder ausgeschaltet. Außerdem darf global die Szenenerkennung nicht deaktiviert sein (d.h. kein --no-scenecut
).Machen wir uns diese Syntax an einem Beispiel klar. Nehmen wir an, wir möchten für einen Film zwei Zonen definieren:
Die dazu passende Kommandozeile sieht folgendermaßen aus:
--zones 0,9999,q=22/20000,25000,b=2.0,trellis=2,no-deblock
Werte: | Pfad zu einer unterstützten Quelldatei oder - (stdin). |
---|---|
Beispiel: | "D:\Quellscript.avs" |
Gibt die Quelldatei an. Deren Format muss RAW YUV 4:2:0 (Y4M), AVI oder AviSynth-Skript (AVS) sein. Für unsere Zwecke ist im Wesentlichen nur AviSynth interessant.
Werte: | Gültiger Dateipfad. |
---|---|
Beispiel: | --output "D:\Zielvideo.mkv" |
Wählt Dateinamen und Format der Zieldatei. Mit der Dateiendung .264
wird ein roher H.264-Datenstrom erzeugt. Die Endungen .mkv
, .mp4
oder .flv
verpacken das Video in den Matroska-, MP4- oder Flash-Container. AVI ist nicht möglich.
Werte: | Gültiger Dateipfad. |
---|---|
Standard: | x264_2pass.log |
Beispiel: | --stats "D:\Video\x264.stats" |
Legt Pfad und Dateinamen der für ein N-Pass-Encoding nötigen Statistikdatei fest. Standardmäßig wird eine Datei x264_2pass.log
im aktuellen Ordner erzeugt.
Werte: | Für x sowie y ganze Zahlen zwischen 1 und 65535 . |
---|---|
Beispiel: | --sar 16:11 |
Definiert das Pixel Aspect Ratio der Zieldatei. Das entspricht dem Setzen des AR-Flags, von dem im Anamorph-Kapitel die Rede ist. Für klassische Encodings mit quadratischen Pixeln geben wir immer --sar 1:1
an oder lassen die Option ganz weg.
Für PARs definiert H.264 zwei Felder (für x
und y
), die je einen vorzeichenlosen 16-Bit-Integer enthalten. D.h. der maximale Wert, der darin gespeichert werden kann, ist 65535. Auch wenn sich x264 nicht darüber beschwert, sollten wir deshalb größere Werte niemals eingeben, denn die können nicht in den Videostream geschrieben werden.
Werte: | typischerweise 23.976 , 25.0 oder 29.97 |
---|---|
Beispiel: | --fps 25.0 |
Definiert die Bildrate der Zieldatei in Bildern pro Sekunde (fps). Wird bei AviSynth als Quelle automatisch ermittelt.
Werte: | Gültige H.264-Level: 1 , 1.1 , 1.2 , 1.3 , 2 , 2.1 , 2.2 , 3 , 3.1 , 3.2 , 4 , 4.1 , 4.2 , 5 , 5.1 |
---|---|
Standard: | Automatik |
Schreibt das gewünschte H.264-Level als Information in den Bitstream. x264 passt die Anzahl an Referenzframes falls nötig an das gewünschte Level an, es sei denn, wir haben ausdrücklich mit --ref
einen Wert vorgegeben. Davon abgesehen stellt x264 in keiner Weise sicher, dass die Beschränkungen des angegebenen Levels auch tatsächlich eingehalten werden. Darum müssen wir uns wenn nötig selbst kümmern.
Werte: | Ganze Zahlen von 1 bis 16 , auto . |
---|---|
Standard: | auto |
Beispiel: | --threads 3 |
Hier stellen wir ein, wie viele Threads x264 zum Encodieren verwenden soll. Für Computer mit nur einer CPU sollten wir die Option weglassen. Wer ein System mit Hyperthreading, mehreren Prozessorkernen oder tatsächlich mehreren CPUs sein Eigen nennt, sollte zunächst mit --threads auto
die Entscheidung x264 überlassen. Falls die Prozessoren damit nicht genug ausgelastet werden, passen wir die Threadanzahl manuell an.
--threads
ist das hauptsächlich für Multicore-Systeme interessant und sollte dann auch gesetzt werden.0
.Werte: | Ganze Zahlen zwischen (<Anzahl Threads> + <B-Frame-Puffergröße>) und 250 . |
---|---|
Beispiel: | --sync-lookahead 50 |
Definiert die Puffergröße in Frames für die in die Zukunft gerichteten Algorithmen. Sollte ohne konkreten Grund nicht gesetzt werden.
--no-8x8dct
ersetzt.--subme
integriert.--subme
integriert.--no-mixed-refs
ersetzt.--b-adapt
ersetzt.--psnr
ersetzt.--ssim
ersetzt.--no-progress
ersetzt.--no-weightb
ersetzt.