Neue Presets und Tuning System

  • ... der im Moment *eigentlich* auch aktuell sein müsste. Aber wie Selur schon sagt: brandaktuell für die jeweilige Version siehst du die Vorlagendetails mit x264.exe --fulhelp.


    Sorry, wollte deine Seite hier auch nicht irgendwie diffamieren oder kritiseren ;)

    Hab jetzt in die fullhelp reingeschaut, da steht ja doch alles beschrieben. Das --fullhelp Kommando kannte ich vorher noch nicht, habs immer mit der --longhelp versucht und da den entscheidenden Hinweis auf die --fullhelp übersehen :redface:

    Danke für die Hilfe

  • Yup :)


    Hm, ich hab mich jetzt mal ein bissl in das Thema "threaded lookahead" eingelesen.
    Anscheinend wurde das Priorität des threads von lookahead innerhalb der x264-Prozess hochgesetzt, lookahead selbst ist allerdings noch nicht multithreaded.

    Was ist jetzt mit mbtree? Das arbeitet soviel ich weiß viel mit lookahead, (rc-lookahead), ist das quasi das gleiche und somit auch nicht multithreaded?

  • Macht es Sinn beim 2-pass coding im ersten Durchlauf preset=ultrafast zu nehmen und im zweiten Durchlauf dann "slow"? Wie ist der Zeitvorteil mit der Qualität des Ergebnis? Brauche über 30h für das 2-pass coding.

  • Ich glaube, in diesem Fall würde das Ergebnis sehr ungenau werden, weil dann zwischen den Presets doch erhebliche Unterschiede in der Komplexität bestehen, die auch die Komprimierbarkeit beeinflussen. Es besteht sogar die Gefahr, dass bei einem Schnelleren ersten Durchlauf Funktionen nicht ausgeführt werden, die ein langsamerer zweiter Durchlauf zwingend benötigen würde (z.B. müsste MBTree schon in beiden Durchläufen verwendet werden).

    Die Entwickler von x264 haben schon darauf geachtet, dass im ersten Durchlauf automatisch diejenigen Funktionen reduziert werden, die sich reduzieren lassen ("Turbo Mode" automatisch an), ohne die Komprimierbarkeit und dadurch die Genauigkeit der Größenabschätzung allzu stark zu beeinflussen. Man sollte daher schon für beide das gleiche Preset wählen.

    Der zweite Durchlauf wird ohnehin bei vielen Presets recht wesentlich länger dauern als der erste, deshalb ist es unnütz, nur den ersten zu beschleunigen. "Gut Ding will Weile haben" ... entweder beide Durchläufe schneller, oder ein hinreichend leistungsstarker PC - aber "Tricksereien" werden wahrscheinlich schiefgehen.

  • Wenn man sich das mal anguckt, wird man feststellen, dass die "Fast Firstpass" Einstellungen, die ja ohnehin im ersten Durchlauf Anwendung finden (es sei denn, man übergibt explizit "--slow-firstpass" als Parameter), das meiste bereits abdecken, was man mit dem "ultrafast" Preset erzwingen würde:

    Code
    static int x264_param_apply_preset( x264_param_t *param, const char *preset ){if( !strcasecmp( preset, "ultrafast" ) )    {        param->i_frame_reference = 1;        param->i_scenecut_threshold = 0;        param->b_deblocking_filter = 0;        param->b_cabac = 0;        param->i_bframe = 0;        param->analyse.intra = 0;        param->analyse.inter = 0;        param->analyse.b_transform_8x8 = 0;        param->analyse.i_me_method = X264_ME_DIA;        param->analyse.i_subpel_refine = 0;        param->rc.i_aq_mode = 0;        param->analyse.b_mixed_references = 0;        param->analyse.i_trellis = 0;        param->i_bframe_adaptive = X264_B_ADAPT_NONE;        param->rc.b_mb_tree = 0;        param->analyse.i_weighted_pred = X264_WEIGHTP_NONE;    }    [...]}

    Darüber hinaus deaktiviert das "ultrafast" Preset aber unter anderem MB-Tree und B-Frames komplett! Diese gravierenden Einschränkungen gelten automatisch auch für den zweiten Durchlauf (weil die Frame-Type Entscheidung ja bereits im ersten Durchlauf getroffen wird) und damit für das Endergebnis. Das kann nun eigentlich niemand wollen :nein:

    Daher würde ich dringend empfehlen, für beide Durchgänge das selbe Preset zu benutzen. Die Sache mit dem "Fast Firstpass" hat schon seinen Sinn...

  • Danke für die Erklärungen. Hab ich wohl verstanden.

    Wie codiert ihr eure Videos eigentlich, 1-pass oder 2-pass? Bei 2-pass kann man ja die bitrate angeben, bei 1-pass nicht, sondern nur den Qualitätsfaktor (wenn ich das richtig verstanden habe). Dummerweise schrumpfen die 25GB-Videos nicht besonders bei diesem Verfahren.

  • Danke für die Erklärungen. Hab ich wohl verstanden.

    Wie codiert ihr eure Videos eigentlich, 1-pass oder 2-pass? Bei 2-pass kann man ja die bitrate angeben, bei 1-pass nicht, sondern nur den Qualitätsfaktor (wenn ich das richtig verstanden habe). Dummerweise schrumpfen die 25GB-Videos nicht besonders bei diesem Verfahren.

    Das hängt natürlich von der Zielsetzung ab!

    Wenn ich eine bestimmte Größe treffen muss, etwas um das ganze auf eine DVD-5 zu packen, und dennoch die bestmögliche Qualität für die Zielgröße rausholen möchte, dann wird natürlich ein 2-Pass Encode fällig. Für alles andere verwende ich den 1-Pass CRF Modus. Ein CRF Wert um die ~20 sollte anständige Qualität liefern. Es sei an dieser Stelle aber nochmal erwähnt, dass der selbe CRF-Wert nur "ungefähr" die selbe Qualität für unterschiedliche Quellen liefert. Eine objektive Qualitätsmetrik, die zu 100% mit der menschlichen Wahrnehmung übereinstimmt, existiert defakto (noch) nicht. Wenn dir die Datei mit deinem derzeitigen CRF-Wert zu groß wird, bleibt nur eins: CRF Wert hoch schrauben und die resultierenden Qualitätseinbußen in Kauf nehmen. Zaubern kann auch x264 nun mal nicht. Ein 2-Pass Encode holt bei gleicher Dateigröße auch nich mehr Qualität raus, als der CRF Modus. Einziger Vorteil ist, dass man die resultierende Größe bei 2-Pass vorher kennt...

  • Ziel wäre die Dateien auf ca. 10GB zu komprimieren. Die soll nicht auf ne DVD5 passen. Hab ne große Platte :) 1 Video und 2 Audiospuren sollen es schon sein. Und dann komm ich grob auf 10mbit/s für das Video. Das Original ist bei 25mbit/s. Ich werde einfach mal mit einem kurzen Filmchen probieren.

  • Ziel wäre die Dateien auf ca. 10GB zu komprimieren. Die soll nicht auf ne DVD5 passen. Hab ne große Platte :) 1 Video und 2 Audiospuren sollen es schon sein. Und dann komm ich grob auf 10mbit/s für das Video. Das Original ist bei 25mbit/s. Ich werde einfach mal mit einem kurzen Filmchen probieren.

    Naja, dann liegt es ja auf der Hand, dass du einen 2-Pass Encode durchführen solltest. Die Ziel-Bitrate errechnet sich wie folgt:
    Mittlere Bitrate in kbit/s = (10 * 1024 * 1024 * 1024 * 8) / (1000 * Spieldauer in Sekunden)

    Zu beachten ist natürlich, dass da für Audio und für den Container-Overhead noch ne Reserve drin sein muss ;)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!