x264-Kommandozeilenreferenz
Wir sprechen in diesem Kapitel nahezu sämtliche Parameter von x264 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 2145. Bei Problemen hilft zunächst ein x264 --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 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 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.
Encoding-Vorlagen
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.
Es gibt keinen guten Grund, die Vorlagen nicht zu verwenden. Finger weg von handgeklöppelten Kommandozeilen mit obskuren Optionen und Werten! Die sind praktisch immer schlechter als eine gut gewählte Vorlage. Manuelle Anpassungen sind nur sinnvoll, um Restriktionen der Abspielgeräte zu berücksichtigen; z.B. wenn wir blu-ray-kompatibles Video erzeugen.
Die drei Vorlagenkomponenten, manuell angegebene Optionen und die internen x264-Standardwerte überschreiben sich gegenseitig in folgender Reihenfolge:
- Interne Standardwerte von x264.
- Kompressionsvorlage (
--preset
). - Tuningvorlage (
--tune
). - Vom Benutzer in der Kommandozeile angegebene Optionen.
- H.264-Profil (
--profile
).
In welcher Reihenfolge wir Optionen und Vorlagen in der Kommandozeile angeben, spielt keine Rolle.
- --preset <Kompressionsvorlage>
-
Werte: ultrafast
,superfast
,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:
- ultrafast
--no-8x8dct --aq-mode 0 --b-adapt 0 --bframes 0 --no-cabac --no-deblock --no-mbtree --me dia --no-mixed-refs --partitions none --rc-lookahead 0 --ref 1 --scenecut 0 --subme 0 --trellis 0 --no-weightb --weightp 0
- superfast
--no-mbtree --me dia --no-mixed-refs --partitions i8x8,i4x4 --rc-lookahead 0 --ref 1 --subme 1 --trellis 0 --weightp 1
- veryfast
--no-mixed-refs --rc-lookahead 10 --ref 1 --subme 2 --trellis 0 --weightp 1
- faster
--no-mixed-refs --rc-lookahead 20 --ref 2 --subme 4 --weightp 1
- fast
--rc-lookahead 30 --ref 2 --subme 6 --weightp 1
- medium
- Keine Veränderung der x264-Standardeinstellungen.
- slow
--b-adapt 2 --direct auto --me umh --rc-lookahead 50 --ref 5 --subme 8
- slower
--b-adapt 2 --direct auto --me umh --partitions all --rc-lookahead 60 --ref 8 --subme 9 --trellis 2
- veryslow
--b-adapt 2 --bframes 8 --direct auto --me umh --merange 24 --partitions all --ref 16 --subme 10 --trellis 2 --rc-lookahead 60
- placebo
--bframes 16 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 16 --subme 11 --trellis 2
- --tune <Tuningvorlage>
-
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.
- film
-
Allgemeine Psy-Optimierung für Kinofilme.
--deblock -1:-1 --psy-rd 1.0:0.15
- animation
-
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.
--bframes <um 2 erhöhen> --deblock 1:1 --psy-rd 0.4:0.0 --aq-strength 0.6 --ref <verdoppeln, falls größer als 1>
- grain
-
Psy-Optimierung für körniges/verrauschtes Material, falls das Korn/Rauschen beibehalten werden soll. Führt zu vergleichsweise hohen Bitraten.
--aq-strength 0.5 --no-dct-decimate --deadzone-inter 6 --deadzone-intra 6 --deblock -2:-2 --ipratio 1.1 --pbratio 1.1 --psy-rd 1.0:0.25 --qcomp 0.8
- stillimage
-
Psy-Optimierung für unbewegte Einzelbilder.
--aq-strength 1.2 --deblock -3:-3 --psy-rd 2.0:0.7
- psnr
-
Psy-Optimierung auf möglichst hohe PSNR-Werte. Ist für normale Encodings uninteressant.
--aq-mode 0 --no-psy
- ssim
-
Psy-Optimierung auf möglichst hohe SSIM-Werte. Ist für normale Encodings uninteressant.
--aq-mode 2 --no-psy
- fastdecode
-
Deaktivierung der für die Wiedergabe CPU-intensivsten Optionen.
--no-cabac --no-deblock --no-weightb --weightp 0
- zerolatency
-
Deaktiviert alle Optionen, die die Encoding-Latenz erhöhen. Kann für manche Streaming-Anwendungen nützlich sein.
--bframes 0 --force-cfr --no-mbtree --sync-lookahead 0 --sliced-threads --rc-lookahead 0
- --profile <H.264-Profil>
-
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.
- baseline
--no-8x8dct --bframes 0 --no-cabac --cqm flat --weightp 0
. Interlaced Video und verlustloses Encoding sind nicht möglich.- main
--no-8x8dct --cqm flat
. Verlustloses Encoding ist nicht möglich.- high
- Verlustloses Encoding ist nicht möglich, ansonsten keine Restriktionen.
- high10
high422
high444 - Unterstützen neben der normalen Bittiefe von 8 Bit auch 10 Bit. Außerdem sind Farbräume mit höherer Farbauflösung als das übliche YV12 möglich. Mit DVD oder Blu-ray als Quelle spielen diese Profile keine Rolle.
Frametypen
- --keyint <Frames>
-
Werte: positive ganze Zahlen oder infinite
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. Mit
infinite
deaktivieren wir erzwungene IDR-Frames ganz. Sie werden dann nur an Szenenwechseln gesetzt. - --min-keyint <Frames>
-
Werte: Untergrenze: der kleinere Wert von Framerate und keyint
/10, Obergrenze:keyint
/2+1Standard: 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.
- --scenecut <Empfindlichkeit>
-
Werte: ganze Zahlen von 0
bis100
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. - --no-scenecut
- Deaktiviert genauso wie
--scenecut 0
die Szenenerkennung zur intelligenten Verteilung von I-Frames. - --no-cabac
- CABAC (Context Adaptive Binary Arithmetic Coding) ist eine Neuheit des H.264-Standards. Es handelt sich um eine Kompressionsmethode in der verlustlosen Phase des Encodingprozesses, die gerade bei hohen Datenraten die nötige Bitrate deutlich senken kann. CABAC ist ein zentrales Element von H.264 und sollte nicht deaktiviert werden.
- --ref <Frames>
-
Werte: Ganze Zahlen zwischen 1
und16
Standard: 3
Beispiel: --ref 3
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.
- --deblock <alpha>:<beta>
-
Werte: Für alpha
sowiebeta
ganze Zahlen zwischen-6
und6
Standard: für beide 0
Beispiel: --deblock 0:0
Konfiguriert die Stärke des Inloop-Deblocking-Filter, mit dem wir uns schon ausführlicher im x264-Technikkapitel beschäftigt haben.
- --no-deblock
- Deaktiviert den Deblocking-Filter. Sollte ohne sehr guten Grund nie gesetzt werden.
- --tff
- Aktiviert den Modus für interlaced Encoding und gibt an, das im Quellvideo zuerst das obere Field folgt, das die ungeraden Zeilen enthält (top field first). Ist zwingend erforderlich, wenn schon das Quellmaterial interlaced vorliegt und wir das fürs Zielvideo beibehalten wollen. Der Normalfall ist ein Deinterlacing vor dem Encoding, um progressives Material zu erhalten.
--tff
oder--bff
darf dann nicht gesetzt werden. - --bff
- Wie
--tff
, aber für Quellvideos, bei denen das untere Field mit den geraden Zeile zuerst folgt (bottom field first). - --open-gop
- Erlaubt offene GOPs, d.h. B-Frames dürfen direkt vor I-Frames stehen. Da ein solches B-Frame auf das I-Frame referenziert, können wir an der Grenze zwischen offenen GOPs den Film nicht schneiden. Dafür steigt die Effizienz des Encodings besonders bei sehr kurzen Keyframe-Intervallen (etwa im Bereich von 1 Sekunde). Sollte ohne guten Grund nicht gesetzt sein.
- --b-adapt <Modus>
-
Werte: 0
(aus),1
(schnell),2
(optimal)Standard: 1
Beispiel: --b-adapt 1
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 und2
für den optimaleren, aber auch langsameren. I.d.R. sollten wir--b-adapt 2
wählen. - --bframes <Maximum>
-
Werte: Ganze Zahlen von 0
bis16
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 von16
zusammen mit--b-adapt 1
oder4
bis5
mit--b-adapt 2
. - --b-bias <Empfindlichkeit>
-
Werte: Ganze Zahlen von -100
bis100
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.
- --b-pyramid <Modus>
-
Werte: none
,strict
,normal
Standard: normal
Beispiel: --b-pyramid normal
Erlaubt es, B-Frames als Referenzframes zu verwenden. Siehe auch das x264-Technikkapitel. Erfordert
--bframes 2
oder höher.Der
strict
-Modus ist qualitativ etwas schlechter alsnormal
. Er ist zwingend notwendig für Blu-Ray-kompatible B-Pyramide, ansonsten aber wenig nützlich. - --direct <Modus>
-
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. - --no-weightb
- Deaktiviert die gewichtete Bewegungssuche für B-Frames. Siehe auch das x264-Technikkapitel. Sollte für beste Qualität nicht angegeben werden.
- --slices <Anzahl>
-
Werte: 0
(keine Slices) und positive ganze ZahlenStandard: 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.
- --slice-max-size <Maximalgröße>
- Legt die Maximalgröße eines Slice in Byte fest. Hat Priorität gegenüber
--slices
. Sollte ohne guten Grund nie gesetzt sein.--slice-max-mbs <Macroblocks>Legt die Maximalgröße eines Slice in Macroblocks fest. Hat Priorität gegenüber--slices
. Sollte ohne guten Grund nie gesetzt sein.
Encoding-Modus
- --crf <Qualitätsfaktor>
-
Werte: 1.0
bis51.0
Standard: 23.0
Beispiel: --crf 23
Führt ein 1-Pass-Encoding mit einer Zielqualität durch (Constant Rate Factor). Der Qualitätsfaktor entspricht grob dem zu erwartenden durchschnittlichen Quantizer. 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
und25
. - --qp <P-Frame-Quantizer>
-
Werte: ganze Zahlen zwischen 0
und69
Beispiel: --qp 20
Führt ein 1-Pass-Encoding mit festem Quantizer durch.
--qp 0
aktiviert den verlustlosen Modus von x264. I.d.R. sollten wir ein CRF-Encoding bevorzugen. - --pass <Modus>
-
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 --fast-pskip
; 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. - --slow-firstpass
- Deaktiviert die Geschwindigkeitsoptimierungen im 1st Pass. Sollte ohne guten Grund nicht verwendet werden.
- --bitrate <kbit/s>
- Definiert die Bitrate in kbit/s. Für ein 1-Pass-ABR-Encoding (also nicht
--qp
oder--crf
) stellt der Wert die angestrebte durchschnittliche Datenrate dar. Im 2-Pass-Encoding definiert--bitrate
die gewünschte Zielgröße der Videospur. - --bluray-compat
-
Erzwingt ein blu-ray-kompatibles Encoding und ist wichtig, wenn wir eine standardkonforme Video-Blu-ray erstellen. Der Schalter allein reicht aber für garantierte Kompatibilität zur Blu-ray nicht aus. Genauere Informationen dazu finden wir auf x264bluray.com.
Der Schalter hat keine Bedeutung, wenn lediglich unser Quellvideo von einer Blu-ray stammt! Solange die Blu-ray nicht das Zielformat ist, schadet
--bluray-compat
dem Encoding.
Quantisierung, Ratecontrol
- --no-mbtree
-
Deaktiviert die standardmäßig aktive Macroblocktree-Ratecontrol. Ist nur für sehr schnelle Encodings auf Kosten der Qualität interessant.
- --rc-lookahead <Frames>
-
Werte: 0
bis zum Kleineren aus250
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.
- --vbv-maxrate <kbit/s>
-
Werte: 0
(nicht definiert) und positive ganze ZahlenStandard: 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.
- --vbv-bufsize <kbit>
-
Werte: 0
(nicht definiert) und positive ganze ZahlenStandard: 0
Legt die Größe des VBV-Pufferspeichers (Video Buffer Verifier) fest. Ist hauptsächlich für die Hardware-Wiedergabe interessant.
- --vbv-init <Füllstand>
-
Werte: 0.0
(leer) bis1.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.
- --qpmin <Quantizer>
-
Werte: Ganze Zahlen von 1
bis69
Standard: 0
Definiert den minimalen Quantizer, den x264 niemals unterschreitet. Eine Anpassung ist nicht nötig.
- --qpmax <Quantizer>
-
Werte: Ganze Zahlen von 1
bis69
Standard: 69
Definiert den maximalen Quantizer, den x264 niemals überschreitet. Eine Anpassung ist nicht nötig.
- --qpstep <Quant-Delta>
-
Werte: Ganze Zahlen von 1
bis50
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.
- --ratetol <Schwankung>
-
Werte: 0.1
bis100.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.
- --ipratio <Faktor>
-
Werte: 1.00
bis10.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.
- --pbratio <Faktor>
-
Werte: 1.00
bis10.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.
- --chroma-qp-offset <Quant-Delta>
-
Werte: Ganze Zahlen von -12
bis12
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.
- --aq-mode <Modus>
-
Werte: 0
(aus),1
(Variance AQ),2
(Auto-VAQ).Standard: 1
Beispiel: --aq-mode 1
Wählt den Algorithmus zur adaptiven Quantisierung, der wenig detaillierte Bildbereiche stärker quantisiert. Die eingesparten Bits können dann in anderen Teilen des Bilds verwendet werden, um dort Details besser zu erhalten.
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 Standardwert1
ist die sichere Wahl.2
sollte zwar keine Probleme verursachen, ist aber noch zu neu, um endgültige Aussagen zu treffen. - --aq-strength <Stärke>
-
Werte: positive Zahlen; nützlicher Bereich ca. 0.0
bis2.0
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. - --qcomp <Kurvenkompression>
-
Werte: 0.0
bis1.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. Wenn Macroblock-Tree aktiv ist, beeinflusst
--qcomp
dessen Stärke. Ansonsten entspricht der Wert0.0
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. - --cplxblur <Stärke>
-
Werte: 0.0
bis999.0
Standard: 20
Verringert beim 2-Pass-Encoding die Schwankungen bei der Quantizervergabe vor der Kurvenkompression. Den Standardwert sollten wir beibehalten.
- --qblur <Stärke>
-
Werte: 0.0
bis99.0
Standard: 0.5
Dieser Parameter verringert beim 2-Pass-Encoding die Schwankungen bei der Quantizervergabe nach der Kurvenkompression. Den Standardwert sollten wir beibehalten.
- --qpfile "<Dateiname>"
-
Gibt den Namen einer Textdatei an, in der für bestimmte Einzelbilder des Films Frametyp und Quantizer individuell festgelegt werden können. 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-Frame
Quantizer
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
- --cqm <Matrix>
-
Werte: jvt
,flat
Standard: flat
Beispiel: --cqm flat
Wählt eine der beiden Standard-Quantisierungsmatrizen. Siehe auch das x264-Technikkapitel.
- --cqmfile "<Matrixdatei>"
-
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.
Analyse
- --partitions <Partitionen>
-
Werte: none
,all
oder mit Komma getrennte Kombination ausp8x8
,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 auchp8x8
. Füri8x8
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. - --me <Modus>
-
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-Suche
Beim Standard
hex
zu bleiben, ist nur auf langsameren Computern sinnvoll. Ansonsten sollten wir eherumh
verwenden. Die geringe Genauigkeitssteigerung vonesa
undtesa
ist deren deutlich höheren Rechenaufwand meistens nicht wert. - --merange <Radius>
-
Werte: Ganze Zahlen zwischen 4
und1024
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 als16
sind selten sinnvoll. Achtung: Hohe Werte sind extrem langsam! - --mvrange <Pixel>
-
Werte: positive Zahlen und -1
(auto)Standard: -1
Definiert die maximal erlaubte Länge eines Bewegungsvektors. Wir sollten die standardmäßig aktive Automatik beibehalten.
- --mvrange-thread <Puffer>
-
Werte: Ganze Zahlen und -1
(auto)Standard: -1
Setzt den Bewegungsvektor-Puffer, der zwischen zwei Encodingthreads verwendet wird. Benötigt keine Anpassung.
- --subme <Qualität>
-
Werte: Ganze Zahlen zwischen 0
und11
.Standard: 7
Beispiel: --subme 7
Definiert die Qualitätsstufe für die Subpixel-Bewegungssuche und die Partitionsentscheidung.
1
ist schnell und ungenau,11
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
= wie5
, und RDO für I- und P-Frames7
= wie5
, und RDO für alle Frames8
= wie7
, zusätzlich verfeinerte RDO für I- und P-Frames9
= wie7
, zusätzlich verfeinerte RDO für alle Frames10
= wie9
, und QP-RDO. Benötigt aktiviertes AQ und--trellis 2
.11
= vollständige RDO. Wie10
, nur ohne vorzeitige Abbruchbedingungen.
Mindestens
--subme 7
ist i.d.R. eine gute Wahl. Werte unter5
sollten wir für qualitativ hochwertige Encodings nie verwenden. - --psy-rd <rd>:<trellis>
-
Werte: jeweils 0.0
bis10.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
. - --no-psy
- Schaltet alle psychovisuellen Optimierungen ab. Das betrifft PsyRD, PsyTrellis und AQ sowie einige interne Psy-Optimierungen, die über die Kommandozeile nicht erreichbar sind.
- --trellis <Modus>
-
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. - --weightp <Modus>
-
Werte: 0
(deaktiviert),1
(Blindmodus),2
(intelligente Analyse)Standard: 2
Beispiel: --weightp 2
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 lange Zeit eine ungenutzte Funktion des H.264-Standards waren, kommen v.a. Manche Hardwareplayer mit solchen Videos nicht zurecht.
- --no-mixed-refs
- Verbietet es dem Encoder, Referenzbilder nicht nur für jeden Makroblock, sondern für jede Blockpartition einzeln auszuwählen. Sollte normalerweise nicht gesetzt werden.
- --no-chroma-me
- Standardmäßig verwendet x264 neben den Helligkeitsinformationen (Luma) auch die Farbinformationen (Chroma) zur Bewegungssuche. Mit
--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. - --no-8x8dct
- Deaktiviert die 8×8-DCT-Transformation aus dem H.264 High Profile. Sollte nicht gesetzt werden.
- --no-fast-pskip
-
Deaktiviert die beschleunigte Verarbeitung von P-Frames. Wird normalerweise nicht benötigt.
- --no-dct-decimate
- Verhindert, dass im Rahmen der DCT sehr kleine Koeffizienten auf Null gerundet werden. Wird normalerweise nicht benötigt.
- --deadzone-inter <Größe>
-
Werte: Ganze Zahlen zwischen 0
und32
.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. - --deadzone-intra <Größe>
-
Werte: Ganze Zahlen zwischen 0
und32
.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
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.
- In einer Zone kann
me
nur dann aufesa
odertesa
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.- Die Anzahl an Referenzframes kann nie den Wert überschreiten, der global mit
--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:
- Für die ersten 10.000 Frames des Videos ein konstanter Quantizer von 22.
- Die Frames 20.000 bis 25.000 sollen bei der Bitratenverteilung als doppelt so wichtig wie der Rest des Films behandelt werden. Außerdem wollen wir Trellis 2 verwenden und den Deblocking-Filter abschalten.
Die dazu passende Kommandozeile sieht folgendermaßen aus:
--zones 0,9999,q=22/20000,25000,b=2.0,trellis=2,no-deblock
Dateinamen und Videoeigenschaften
- "<Quelldatei>"
-
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.
- --output "<Zieldatei>"
-
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. - --stats "<Statistikdatei>"
-
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. - --sar <x:y>
-
Werte: Für x
sowiey
ganze Zahlen zwischen1
und65535
.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
undy
), 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. - --frame-packing <L-/R-Anordnung>
-
Werte: 0
,1
,2
,3
,4
,5
Beispiel: --frame-packing 3
Gibt für 3D-Video an, wie die Pixel für linkes (L) und rechtes (R) Auge im Quellvideo angeordnet sind. x264 verändert diesen Wert nicht, benötigt ihn aber, um die Quelle korrekt zu verarbeiten. Die Werte
0
bis4
kombinieren L- und R-Bild in einem großen Frame.0
= Schachbrett: Einzelpixel immer abwechselnd für L und R1
= Einzelpixel für L und R spaltenweise abwechselnd2
= Einzelpixel für L und R zeilenweise abwechselnd3
= Komplettbild für L auf der linken Seite, für R rechts daneben4
= Komplettbild für L oben, für R darunter5
= frameweise abwechselnd für L und R
- --fps <Framerate>
-
Werte: typischerweise 23.976
,25.0
oder29.97
Beispiel: --fps 25.0
Definiert die Bildrate der Zieldatei in Bildern pro Sekunde (fps). Wird bei AviSynth als Quelle automatisch ermittelt.
- --level <Level>
-
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.
Steuerung von x264.exe
- --threads <Anzahl>
-
Werte: Ganze Zahlen von 1
bis128
,auto
.Standard: auto
Beispiel: --threads 6
Hier stellen wir ein, wie viele Threads x264 zum Encodieren verwenden soll. Die Standardeinstellung
auto
ist meistens ausreichend, um den Prozessor voll auszulasten. x264 verwendet in dem Fall das 1,5-fache der logischen CPU-Anzahl, z.B. sechs Threads für einen Quad-Core-Prozessor. Falls wir damit keine Vollauslastung erreichen, passen wir die Threadanzahl manuell an. Aber Vorsicht: Fast immer ist nicht x264 der Flaschenhals sondern das Decodieren/Filtern des Quellvideos. - --thread-input
- Verwendet für die Verarbeitung des AviSynth-Skripts einen eigenen Thread. Wie schon
--threads
ist das nur für Multicore-Systeme interessant und sollte dann auch gesetzt werden. x264 aktiviert die Option automatisch, wenn mehr als ein Encodingthread benutzt wird. - --seek <Startframe>
- Framenummer des Bildes, an dem das Encoding starten soll. Das erste Bild des Videos hat die Nummer
0
. - --frames <Frameanzahl>
- Maximale Anzahl an zu encodierenden Frames. Ist die Zahl erreicht, bricht x264 ab, auch wenn das Ende des Quellvideos noch nicht erreicht ist.
- --verbose
- Gibt Statusinformationen zu jedem einzelnen Frame am Bildschirm aus.
- --no-progress
- Deaktiviert die allgemeine Fortschrittsanzeige.
- --quiet
- Unterdrückt sämtliche Statusmeldungen.
- --psnr
- Aktiviert die Berechnung des PSNR-Wertes, der für ein normales Backup nicht notwendig ist.
- --ssim
- Aktiviert die Berechnung des SSIM-Wertes, der für ein normales Backup nicht notwendig ist.
- --sync-lookahead <Frames>
-
Werte: Ganze Zahlen zwischen (<Anzahl Threads> + <B-Frame-Puffergröße>)
und250
.Standard: B-Frame-Anzahl + 1 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.
Kommentare
Kommentar von Frank Streibel | 16.11.2011
__"b-pyramid" (normal oder strict) zusätzlich zu/ zusammen mit "mb-tree"?__
In einer früheren Version (ich weiß nicht welche) hast Du geschrieben: "Grundsätzlich ist die B-Pyramide eine gute Idee, arbeitet aber noch nicht mit der standardmäßig aktivierten MB-Tree-Ratecontrol zusammen. Da MB-Tree i. d. R. den höheren Qualitätsvorteil bietet, sollten wir im Moment auf die B-Pyramide verzichten."
Diesen Hinweis finde ich jetzt nicht mehr und die Einstellung b-pyramid= normal ist ja inzwischen Standard geworden.
Kann man nun also MB-Tree und B-Pyramid zusammen verwenden?
Kommentar von Brother John | 16.11.2011
Ja, kann man inzwischen vollkommen problemlos.
Kommentar von Jürgen Erdmann | 9.2.2012
Hallo John,
was passiert, wenn in einem H.264 Stream plötzlich das Profil 4.2 auf 4.1 und wieder zurück wechselt und an
dieser Stelle neben den I und P Frams plötzlich B Frams eingebaut werden.
Passiert beim Schneiden mit Powerdirektor 10, Material 1080 50p 28Mbit/sek durch SVRT Rendering,
an Übergängen und Titeln. Zwei Blurayplayer LG BD 390 und Samsung BD C 5500 kommen an diesem Übergangs
ins stottern. Bei harten Cut´s ist alles i. o., die o. g. Playerspielen das von DVD ruckelfrei ab.
Danke im voraus für die Rückinfo.
M. f. G.
Jürgen Erdmann
Kommentar von Brother John | 13.2.2012
Der Levelwechsel sollte eigentlich keine Probleme machen. Wenn 4.2 geht, sollte das niedrigere 4.1 genauso funktionieren. Ich kann mir besser vorstellen, das Powerdirector irgendwo anders verkackt – oder die Player sind unfähig. Vielleicht kommt beim Re-Encoding die VBV-Pufferung durcheinander, vielleicht PD mit den Eigenschaften des Quellvideos nicht zurecht (Open GOP vielleicht …). Stottern und VBV würde jedenfalls zusammenpassen. Aber mehr als spekulieren kann ich auch nicht.
Kommentar von indoor07 | 13.2.2012
Hallo Brother John,
Danke für die Antwort.
Der Frank von der " Cypheros Software Seite"
hat sich den Stream angesehen, der nach dem Übergang zu ruckeln
anfing. Seine Antort:
=== Zitate:
"An der Übergangsstelle ändert sich das Profil von High@4.2 auf High@4.1 und plötzlich tauchen B-Frames auf, die in der ursprünglichen Aufnahme nicht vorhanden sind. Das bringt Deinen Player offenbar durcheinander."
und
"Könnte ein Problem mit dem Interlace-Modus sein oder der Frame-Reihenfolge. Kameras zeichnen so auf, dass die Frame-Reihenfolge mit der Darstellungs-Reihenfolge übereinstimmt, weshalb auch keine B-Frames vorkommen.
PD aber verwendet die Standard-Encodierung mit B-Frames und da stimmt die Reihenfolge im Stream nicht mit der Reihenfolge überein, die für die Darstellung verwendet wird. Rechnet der Mediaplayer nicht mit so einer ungewöhnlichen Änderung, springen die Bilder hin und her.
Code: [Auswählen]
-> startet mit Kameratypischer Kodierung (Reihenfolge im Stream = Reihenfolge bei der Darstellung) <-
000000000002B30F [P] 00:00:10.860 977400
000000000002B50F [P] 00:00:10.880 979200
000000000002B58A [P] 00:00:10.900 981000
000000000002B78F [P] 00:00:10.920 982800
000000000002B80B [P] 00:00:10.940 984600
000000000002BA1A [P] 00:00:10.960 986400
000000000002BAA0 [P] 00:00:10.980 988200
-> ab hier ändert sich die Reihenfolge der Frames (Der PTS-Timer muss beachtet werden um die richtige Darstellungs-Reihenfolge einzuhalten)<-
000000000002BF45 [I] 00:00:11.000 990000
000000000002C42B [P] 00:00:11.060 995400
000000000002C4F0 [B] 00:00:11.020 991800
000000000002C713 [B] 00:00:11.040 993600
000000000002CAC4 [P] 00:00:11.120 1000800
000000000002CC98 [B] 00:00:11.080 997200
000000000002CE6C [B] 00:00:11.100 999000
000000000002CFC6 [P] 00:00:11.180 1006200
000000000002D028 [B] 00:00:11.140 1002600
000000000002D0BB [B] 00:00:11.160 1004400
000000000002D274 [P] 00:00:11.240 1011600
000000000002D323 [B] 00:00:11.200 1008000
Gruß
Frank "
Zitat Ende===
Und nach dem Übergang geht das springen, bzw. die Standbilder los. Einfache Schnitte machen keine Probleme.
M. f. G.
Jürgen
Kommentar von gunman | 17.3.2012
--no-fast-pskip
Deaktiviert die beschleunigte Verarbeitung von P-Frames. Wird normalerweise nicht benötigt.
Das ist nicht aussagekräftig.
0=aus 1=an ist klar, aber was wird nicht benötigt?