Brother Johns gesammeltes Encodingwissen

Konfiguration des x264-Codecs Rev 263A

Der x264-Codec entwächst immer mehr den Kinderschuhen und ist schon ein recht robustes Stück Software. Wir können uns also mit einer Ecke weniger Bastlermentalität als bisher an die Konfiguration wagen. Trotzdem eignet sich nach wie vor Selurs Wissenswertes rund um x264 sehr gut zum Querlesen.

Einstellungen für den 1st Pass

Wie bei den anderen Codecs auch, interessieren uns die 1-Pass-Einstellungen nicht. Wir klicken also Multipass an und wählen First pass. Auch den Fast first pass können wir ohne Bedenken einschalten. Diese Funktion beschleunigt ähnlich wie bei XviD den ersten Durchgang, ohne spürbar negativ auf die Qualität zu wirken. Den Statsfile name und die Bitrate setzt Gordian Knot automatisch ein.

Unter Threads können wir die Multiprozessor-Unterstützung einschalten. Einige Berechnungen werden dann auf den verschiedenen (virtuellen) Prozessoren parallel abgearbeitet, was die Geschwindigkeit erhöht. Wer einen Pentium 4 mit Hyperthreading sein Eigen nennt, darf hier 2 eintragen. Wer gar ein echtes Multiprozessorsystem besitzt, tippt seine Anzahl an Prozessoren ein, allerdings maximal 4. Alle anderen können die Funktion nicht nutzen und müssen bei 1 bleiben.

Und nun weiter zu den Details im Advanced-Dialog.

AVC besitzt viele Encoding-Features, die wir schon von XviD und DivX kennen. Ein paar, wie GMC, sind hier nicht verfügbar, dafür hat AVC einige Neuheiten. Kümmern wir uns zuerst um den oberen linken Teil der Advanced Settings.

Eine AVC-Neuheit heißt CABAC (Context-Adaptive Binary Arithmetic Coding). Das ist eine Kompressionsmethode, die gerade bei hohen Datenraten die nötige Bitrate deutlich senken kann. Da CABAC verlustfrei arbeitet, leidet die Qualität nicht darunter. Allerdings sinkt die Geschwindigkeit. Wenn wir nicht gerade mit einem uralten Rechner ausgerüstet sind, sollte die Funktion aktiviert bleiben.

Deblocking filter kennen wir bis jetzt nur von Decodern, die damit Blockartefakte im Bild zu übertünchen versuchen. x264 setzt einen solchen Filter schon beim Encodieren ein, und zwar nachdem ein Bild codiert wurde, aber bevor es als Referenz für das nächste Bild dient. Dadurch kann Bild 2 mit einer Referenz arbeiten, die weniger Artefakte enthält. Das tut der Qualität gut. Der Nachteil ist die sinkende Geschwindigkeit, um zwar sowohl beim Encoding als auch beim Decoding. Denn damit Bild 2 korrekt decodiert werden kann, muss das vorangehende Bild in gefilterter Form vorliegen. Das ähnelt einem XviD-Encoding bei dem wir gezwungen sind, beim Anschauen den Deblocking-Filter zu aktivieren.
Strength und Threshold. Beide Werte sollten wir aber als Einheit betrachten und auch gemeinsam verändern. Die Normaleinstellung 0 ist ein brauchbarer Standard. Negative Werte führen zu schwächerem Deblocking, positive zu stärkerem. Für hohe Datenraten bietet es sich an, das Deblocking etwas zu verringern (etwa auf -2), während für die niedrigen Raten von 1-CD-Encodings etwas höhere Werte angebracht sein können.

Kommen wir zu Max ref Frames. In XviD und DivX sind P-Frames auf genau ein Referenzbild beschränkt, und zwar auf das vorangehende Bild. x264 erlaubt auch mehrere Referenzframes. Wie viele, stellen wir mit Max ref Frames ein. Maximal dürfen es 16 sein. Allerdings steigert mehr als etwa 5 nur noch die Codierzeit, nicht mehr die Qualität. Die Einstellung wirkt sich übrigens auch auf B-Frames aus.

Apropos B-Frames: Max B-Frames legt die maximale Anzahl aufeinander folgender B-Frames fest. Eine 3 heißt, dass nicht mehr als drei B-Frames direkt hintereinander vorkommen dürfen. Ob diese Zahl auch erreicht wird, bestimmt x264 automatisch je nach Bedarf. 0 schaltet die B-Frames ganz ab.
Use as reference erlaubt es x264, ein B-Frame als Referenzframe zu verwenden. Das erhöht zwar die Anforderungen beim Decoding, sollte aber im Sinn der Qualität aktiviert werden, wenn es der verwendete Decoder unterstützt. Bei ffdshow z. B. ist das der Fall.
Ein Haken bei Adaptive verteilt proportional mehr B-Frames an langsame Szenen. Da sich diese gerade für den B-Frame-Einsatz anbieten, hat das auch Sinn.
Bias geht in eine ähnliche Richtung, beeinflusst aber insgesamt, wie gerne der Codec B-Frames setzt. Die Funktion ist also mit XviDs BVOP sensitivity vergleichbar. Werte über 0 drängen x264 häufiger zum B-Frame-Einsatz - ohne allerdings das unter Max consecutive definierte Maximum zu überschreiten -, Werte unter 0 halten den Codec eher vom B-Frame ab. Genau wie bei XviD können wir ruhigen Gewissens die 0 stehen lassen.

Im mittleren Teil des Fensters lassen wir die More encoder settings auf der linken Seite unverändert. Interessanter ist rechts der Ratecontrol-Abschnitt.

B-frames reduction steuert die Qualität der B-Frames. Der Wert gibt an, wie viel Prozent relative Bitrate ein B-Frame weniger bekommt als das vorangehende P-Frame. Je höher also der Wert, desto stärker werden B-Frames komprimiert. Gerade bei sehr niedrigen oder sehr hohen Datenraten bietet sich diese Option als Spielzeug an, um die B-Frames ein wenig kleiner oder ein wenig größer werden zu lassen. Wichtig ist dabei, nicht zu übertreiben, weil zu hohe Werte schnell Artefakte erzeugen und zu niedrige den Nutzen der B-Frames stark schmälern. Wenn wir uns eine sehr schwache Reduktion leisten können, sollten wir überlegen, ob wir die B-Frames nicht gleich ganz abschalten.steuert die Qualität der B-Frames. Der Wert gibt an, wie viel Prozent relative Bitrate ein B-Frame weniger bekommt als das vorangehende P-Frame. Je höher also der Wert, desto stärker werden B-Frames komprimiert. Mit dieser Einstellung zu spielen könnte sich möglicherweise lohnen.
Bitrate variability schließlich gibt an, wie stark die Bitrate über den ganzen Film hinweg schwanken darf. 0 würde zu einem CBR-Encoding führen, 100 steht für den Constant-Quality-Modus. Vorsicht bei Änderungen, denn wie genau x264 die gewünschte Dateigröße treffen kann, hängt nicht zuletzt von dieser Einstellung ab.
Alle anderen Einstellungen sollten immer auf ihren Standards bleiben.

Wenden wir uns dem unteren Bereich des Fensters zu.

x264 erlaubt es, einen 16×16 Pixel großen Macroblock in kleinere Einheiten (Partitionen) zu zerlegen, um so die Bewegungssuche zu verfeinern. Mit den gezeigten Schaltern können wir einstellen, welche Zerlegungen für I-, P- und B-Frames erlaubt sind. Die Partitionierung senkt zwar die Encoding-Geschwindigkeit deutlich, steigert aber gleichzeitig die Kompression genauso deutlich. Deshalb sollten wir dem Codec nur mit gutem Grund nicht alle Partitionsmöglichkeiten erlauben.
Chroma ME entspricht XviDs Chroma motion, d. h. ein gesetzter Haken veranlasst x264 neben den Helligkeitsinformationen (Luminanz) auch die Farbinformationen (Chrominanz) zu Bewegungssuche zu verwenden. Meistens reichen zwar die Luminanzinfos aus, da aber die Option die Geschwindigkeit nicht zu sehr beeinträchtigt, sollte der Haken gesetzt bleiben.

Auf der rechten Seite des Analysis-Abschnitts konfigurieren wir weiter.

Partition decision quality steuert die die Genauigkeit der Bewegungssuche innerhalb der Partitionen. Interessant zu wissen ist, dass unabhängig von der Einstellung der letzte Suchdurchlauf immer mit einem Viertel Pixel Genauigkeit geschieht. D. h. in altgewohnter ASP-Terminologie, QPel ist immer aktiv. Da uns ja die Qualität am Herzen liegt, sollten wir 5 (Max Quality) unverändert lassen oder höchstens auf 4 senken.

ME Method bestimmt den Algorithmus, der zur Bewegungssuche verwendet wird. Von oben nach unten werden die Methoden immer genauer, aber auch immer langsamer. Der Standard Hexagonal Search ist ein sinnvoller Kompromiss zwischen Geschwindigkeit und Qualität und sollte immer beibehalten werden. Ungenauere Modi bieten sich wegen der niedrigeren Qualität nicht an, genauere Modi treiben den Rechenaufwand im Vergleich zum Qualitätsgewinn einfach zu weit in die Höhe. Deswegen ist auch ME Range kaum interessant, wo der Suchradius für den Modus Uneven Multi-Hexagon definiert werden kann.

Direct Mode schließlich gibt an, nach welchem Verfahren B-Frames komprimiert werden. Temporal verwendet zur Komprimierung die zeitlichen Änderungen zwischen den Bildern, Spatial die räumlichen innerhalb des Frames. In der Regel sollten wir Temporal wählen, da es die höhere subjektive Qualität bietet.

Die Einstellungen für den 1st Pass sind damit abgeschlossen. Bleibt noch kurz der zweite Durchgang zu konfigurieren.

Einstellungen für den Nth Pass

Wir stellen im Hauptfenster um auf Multipass Nth pass und aktivieren Update stats file. x264 unterstützt genau wie DivX mehr als zwei Durchgänge. Ob das tatsächlich eine Qualitätssteigerung ergibt, die den Mehraufwand rechtfertigt, müssen wir ausprobieren. Ähnlich wie bei DivX dürften mehr als drei Passes kaum Sinn haben. Ich selbst bin von XviD verwöhnt und einfach zu faul für mehr als zwei Durchgänge. :-)
Um die Einstellung der Bitrate kümmert sich Gordian Knot automatisch. Deshalb überprüfen wir noch, ob die Advanced-Einstellungen mit dem 1st Pass übereinstimmen und sind auch schon fertig. Noch existiert für x264 keine Möglichkeit, Credits extra zu encodieren, weshalb wir uns darum keine Gedanken zu machen brauchen.

<< DivX Codec-Konfiguration   |   Seitenanfang   |   Bitrate kalkulieren >>