Filtering + 2P-Encoding: Zweiter Filterdurchlauf nötig?

  • Hallo zusammen,

    ich kodiere Filme normalerweise im 2-Pass-Verfahren. Bei den Skripten die ich verwende ist die H.264-Enkodierung jedoch das kleinere "Problem", ca. 90 Prozent der Rechenzeit gehen locker für AviSynth-Filter drauf.

    Mein Problem ist jetzt, dass der Prozess sehr lange dauert wenn ich die Filterung für beide Durchläufe durchführen muss. Um das zu verhindern, erstelle ich umständlicherweise erst in ein gefiltertes "Zwischenvideo" im 1-Pass-Verfahren und führe dann eine regulare 2-Pass-Enkodierung durch. Das geht immer noch wesentlich schneller als eine einzelne 2-Pass-Enkodierung mit aktiven Filtern durchzuführen.

    Meine Idee war zunächst, das Ergebnis des ersten Durchlaufs zu laden und dann einen zweiten Durchlauf ohne Filter aber mit den im ersten Durchlauf ermittelten Bewegungsvektoren in der STATS-Datei durchzuführen. Leider scheint es nicht möglich zu sein ein lauffähiges Videofile UND eine STATS-Datei gleichzeitig zu generieren wobei beide Ergebnisse die Grundlage für den zweiten Pass bilden sollen.

    Gibt es nicht vielleicht doch einen eleganteren Weg? Wie geht Ihr bei sowas vor?

    spyro

  • Zitat

    Meine Idee war zunächst, das Ergebnis des ersten Durchlaufs zu laden und dann einen zweiten Durchlauf ohne Filter aber mit den im ersten Durchlauf ermittelten Bewegungsvektoren in der STATS-Datei durchzuführen. Leider scheint es nicht möglich zu sein ein lauffähiges Videofile UND eine STATS-Datei gleichzeitig zu generieren wobei beide Ergebnisse die Grundlage für den zweiten Pass bilden sollen.

    Es sinnig im 1st und 2nd pass dem Encoder das gleiche Material zu liefern.
    Wenn man im 1st pass ein .stats File erzeugt und eine Datei (was ja durchaus geht) und diese Datei mit dem .stats File dem 2nd pass als Basis gibt passen die Analysedaten im .stats File nicht zum Input des 2ten Durchlaufs. Nimmt man das .stats File und die ungefilterte Inputdatei macht es auch keinen Sinn, weil auch hier die Analysedaten im .stats File nicht zum Input des 2ten Durchlaufs passen.
    => Keine gute Idee.

    Zitat

    Filtering + 2P-Encoding: Zweiter Filterdurchlauf nötig?


    hier: Ja

    Zitat

    ca. 90 Prozent der Rechenzeit gehen locker für AviSynth-Filter drauf.

    Wenn das Filtern wirklich 90% der CPU Auslastung ausmacht und nicht nur bremst weil es nicht multithreaded ist, macht es Sinn erst einen verlustfreien Encode (z.B. mit Yv12-Huffyuv) durchzuführen und das so erhaltene Ergebnis als Basis für das 2pass Encoding zu verwenden.

    Zitat

    erstelle ich umständlicherweise erst in ein gefiltertes "Zwischenvideo" im 1-Pass-Verfahren und führe dann eine regulare 2-Pass-Enkodierung durch. Das geht immer noch wesentlich schneller als eine einzelne 2-Pass-Enkodierung mit aktiven Filtern durchzuführen.

    ... und ist auch der einzig sinnige Weg, davon ausgegangen man verwendet hier ein verlustfreies Video, welches man vor allem später schnell dekodieren kann.

    Zitat

    Wie geht Ihr bei sowas vor?

    1. noch mal überdenken ob ich sinnig filtere und ob nicht teile mit GPU gestützten oder generell schnelrem Filtering gemacht werden kann
    2. falls das Filtering immer noch so anspruchsvoll ist erst mal ein 1pass Encoding mit Yv12-Huffyuv oder einem vergleichbarem verlustfreiem Kompressionsverfahren durchführen.
    3. das Ergebnis von 2. als Basis für ein 2pass Verfahren nehmen

    Cu Selur

  • Hallo Selur,

    vielen Dank für deine Anwort. Ok, dann gibt es wohl tatsächlich keinen anderen Weg. Unkomprimiertes bzw. verlustfrei komprimiertes Video ist allerdings einfach zu datenintensiv für mich. Dann bleibt wohl nur XVID ohne QPel und GMC mit 25 MBit/s oder sowas.

    Kann man diese Schritte zumindest irgendwie automatisieren? Im Moment muss ich ja immer erst auf das Ergebnis des Filterpasses warten bevor ich ein 2-Pass-Encoding aufsetzen kann wodurch immer ein paar Stunden Renderzeit wegfallen.

    spyro

  • Zitat

    Kann man diese Schritte zumindest irgendwie automatisieren?


    Mit Xvid, nur wenn man Virtual Dub verwendet.
    Mit Huffyuv hat MeGui hierfür eine extra Option, die sich 'Add pre-rendering job' nennt und direkt in den Video Encoding Settings im Input Bereich aktivierbar ist.

    Cu Selur

  • Hallo,

    vielen Dank nochmals für eure Tipps. MeGUI läuft bei mir leider nicht sondern stürzt etwa 3 Sekunden nach dem AVISynth-Preview ab sobald ich irgend eine Aktion unternehme.

    Die 1-Pass-CRF-Geschichte muss ich mir anschauen. Ist das Ergebnis einigermaßen vergleichbar bzw. die Dateigröße zumindest im groben Maße abschätzbar?

    spyro

  • Ok, dann werde ich das mal ausprobieren. Gibt es irgendwelche Erfahrungswerte für den Ratefactor bei 720p (Fokus liegt eher auf Qualität aber 1h 720p@25fps sollte jetzt nicht deutlich über 4-5 GB liegen)?

    Sorry für die blöde Fragerei aber die Werte sagen mir leider nicht viel und ich habe auch nirgendwo mal etwas detailierte Infos oder gar Samples gefunden.

    Schätzte ich muss einfach mal ein paar Testläufe durchführen.

    spyro

  • Selbst mal ein paar Werte ausprobieren ist sicher die beste Methode. Ich würde bei Werten um 20 herum anfangen. Persönlich nehme ich meist crf22. Bei deinen Vorgaben würde ich aber eher eine Nummer niedriger ansetzen (niedrigerer Ratefactor => höhere Qualität).

Jetzt mitmachen!

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