MeGUI [2015] -- x264 - bester Encoder, beste Videoqualität auf Youtube ;-)

  • Code
    video = AVISource("V:\Bastion.avi", audio=true).AssumeFPS(30.000)
    Logo = ImageSource("V:\db4 Logo.png", fps=Video.FrameRate, end=Video.FrameCount, pixel_type="rgb32")
    Overlay(video, Logo, x=5, y=5, opacity=1.0, mode="blend")
    Lanczos4Resize(1920,1080)


    Problem gelöst.

  • Zwei Fragen habe ich noch bezüglich des AVS Cutter:
    Ist es richtig, dass ich nach dem Encodieren nur eine .mkv Datei habe, die ich dann aber mit MKVmerge genau an den Schnittstellen schneiden lassen kann, oder sollen da schon vor dem Muxen zwei Videos entstehen?
    Wenn ich die Schnitte an meinen Sound anpassen will, dann das lasse ich das Quellvideo nebenherlaufen und gucke da, wo ein Schnitt am besten passt, switche dann zum AVS Cutter und finde dort die Stelle möglichst genau wieder. Oder gibt es da eine andere Methode?


    Das Ding ist einfach, dass die Schnitte mit MKVmerge so ungenau sind, wegen der i- oder B- Frames, kenne mich da nicht genug aus. Oder wäre es sogar möglich, die Schnitte mit MKVmerge sekundengenau zu machen, ohne, dass sich vorher die Dateigröße verändert?

  • wenn du mit dem avs cutter cuttest, musst du nicht mehr mit mkvmerge cutten.


    wenn du allerdings den sound erst anpassen musst, würde ich die sounddatei erstmal mit dem video nebenher laufen lassen und gucken, wie viel abgeschnitten werden muss, dann mit audacity das stück wegschneiden und dann erst in megui rein.


    mit max. gop in der x264 config auf 250 splittet merge schon sehr genau, ansonsten kann mans ja auch noch erhöhen.

  • Es soll ja garnichts weggeschnitten werden, sondern nur durchgeschnitten. Mit Audacity muss ich also nichts wegschneiden. Ich will nur eine lange Aufnahme möglichst genau in einzelne Parts aufteilen können. Und mit MKVmerge bei Maximum GOP size = 250 war das häufig genug nur auf 10 Sekunden genau, wo der Ladebildschirm oder die Sprechpause schon längst wieder vorbei ist.
    Ich hatte jetzt einfach die beiden Bereiche angegeben (0 bis 213 und 214 bis 343 in einem Testvideo) und auf Do all and close geklickt. Aber dadurch behielt ich immernoch nur das eine Script und hinterher auch nur ein encodiertes Video, was mir mittlerweile auch logisch erscheint. Mit MKVmerge konnte ich dann ungefähr bei der Schnittsekunde einen Schnitt setzen, welcher dann genau da gemacht wurde, wo ich ihn vorher mit dem AVS Cutter angegeben hatte.


    Wenn ich max. GOP erhöhe, erhöht sich dann auch die Dateigröße/Encodierzeit? Ich gehe davon aus, aber sonst wäre es wohl am einfachsten.

  • @TheFirgg
    ich hab avs cutter bisher noch nicht genutzt, deswegen warte ich lieber, bis demon gleich angerannt kommt. ^^


    aber max. gop erhöht die dateigröße, ja.
    und ich nehme schon an, dass da gleich mehrere videos rauskommen sollten.. aber demon sollte gleich hier sein.

  • bei Maximum GOP size = 250 war das häufig genug nur auf 10 Sekunden genau

    Was auch logisch ist. Max Gop heißt, dass er spätestens alle 250 Frames ein I-Frame setzt (dort kann geschnitten werden). Wenn du nun mit einer FPS-Rate von 25 aufnimmst, kannst du zwangsläufig spätestens alle 10 Sekunden schneiden. Denn 25 * 10 sind, oh wunder, 250. 25 = 1 Sekunde. 1 Sekunde * 10 = 10 Sekunden *Rechnen FTW*

    Wenn ich max. GOP erhöhe, erhöht sich dann auch die Dateigröße/Encodierzeit?


    aber max. gop erhöht die dateigröße, ja.


    Nein, je höher max Gop liegt, desto freier ist es x264 gestattet ein I-Frame zu setzen. I-Frames brauchen am meisten Speicherplatz, da in ihnen alle Bildinformationen vorliegen.
    Demzufolge ist es genau andersherum: Je größer max Gop liegt (Im Idealfall 0), desto kleiner kann die Dateigröße werden.

    Einmal editiert, zuletzt von Lucki () aus folgendem Grund: Kleiner Schreibfehler.

  • Dann läuft es ja aber wieder auf's gleiche hinaus: Ich kann nur dann genau schneiden, wenn die Datei größer wird. Und das ist dann nicht ideal. Ich glaube ich teste mal, mit dem AVS Cutter die Schnitte zu setzen und dann mit Min. und Max. GOP = 60 Sekunden * 30 Frames = 1800 zu encodieren. Mal sehen, ob ich dann mit MKVmerge immernoch den Schnitt bei 30 Sekunden setzen kann, oder ob er mir den Schnitt dann doch genau nach einer Minute setzt, was er ja müsste, wenn ich das mit GOP jetzt richtig verstanden habe. Er soll mindestens und höchstens 1800 Frames warten, bis ein I-Frame kommt, oder?


    Edit: Verdammt, 999 sind Maximum. Dann mache ich 900. Und versuche nach 15 Sekunden zu schneiden, während ich erst nach 30 dürfte.
    Jau, und Minimum sind 100. Ach dann teste ich das eben nicht, auch egal xD

  • dann frage ich mich, warum demon immer max gop 0 empfiehlt um dateigröße einzusparen. ^^

    Weil 0 als unendlich interpretiert wird. 0 ist also größer, als jede erdenkliche Zahl, die du dort eintragen kannst.

    Zitat von TheFirgg

    Er soll mindestens und höchstens 1800 Frames warten, bis ein I-Frame kommt, oder?

    Wenn min und max Gop gleich sind, sollte eigentlich nur nach der eingestellten Zahl ein I-Frame kommen. Ob dies allerdings sinnvoll ist, ist eine andere Frage.

  • Ich habe noch ein bisschen rumprobiert:
    Ich kann ihm sagen, dass spätestens nach 0 Frames ein I-Frame kommen soll, aber den tatsächlichen Punkt durch den AVS Cutter bestimmen, richtig? Wenn ich jetzt sage, dass nach mindestens 100 Frames erst ein I-Frame kommt, und nach spätestens 0, würde das dann nach 10 Minuten * 60 Sekunden * 30 Frames = 18000 Frames so variable sein, dass ich den tatsächlich Schnittpunkt durch den AVS Cutter festlegen könnte? Oder werden die I-Frames nacheinander gesetzt, ohne zu berücksichtigen, dass ein paar Frames weiter (<100) der Schnittpunkt kommen würde? Es wäre nämlich höchst effektiv, wenn das "spätestens nach unendlich" einfach bedeuten würde "spätestens beim Schnittpunkt" oder eben "genau beim Schnittpunkt". Nur habe ich Bednken, ob nicht ein paar Frames davor ein I-Frame gesetzt werden könnte, wodurch der nächste I-Frame erst wieder 100 Frames später kommen würde und der Schnitt verschoben wäre. Dann wiederum wurde der/das Max. GOP von 250 Frames ja auch meistens ausgenutzt...
    Habe ich das richtig verstanden oder überlege ich Dinge, die keinen Sinn ergeben?


    Edit: Mit Max. GOP = 0 geht kein einziger Schnitt. Mit Max. GOP = 999 wird die Datei doppelt so groß aber es gehen Schnitte. Ob das genau da ist, wo ich es wollte, kann ich aber nicht sagen. Ich wollte einen Schnitt bei 3600 Frames, also nach 120 Sekunden. Wenn ich aber MKVmerge nach 120 Sekunden schneiden lasse, schneidet er erst nach 159 Sekunden also nach 4770 Frames. Nach einigen Probeschnitten kann ich aber bei 119 Sekunden schneiden. Das kann nur leider auch Zufall sein, weil ich Trottel natürlich bei genau 3600 Frames und nicht bei 3615 einen Schnitt wollte. Sonst wüsste ich es jetzt genauer. Naja, ich teste einfach mal ein bisschen weiter.

  • Soweit ich weiß, teilst du mit dem AvsCutter nur mit, welche Bereiche du behalten möchtest. Alle unausgewählten Bereiche werden ignoriert.
    Wenn der Bereich nun so groß ist, dass sich ein grundlegend anderes Bild ergibt, kann x264 dies als Szenenwechsel erkennen. (Gibt 'ne Option zur Feinjustierung - Scenecut, oder so)
    An Szenenwechseln ist es sinnvoll I-Frames zu setzen, da im Folgenden viel Bildmaterial kommt, dass sich auf dieses I-Frame beziehen kann.
    Ich weiß nicht, wie man das weiter mit dem AvsCutter beeinflussen lassen könnte.


    Ich würde einfach den ersten Teilbereich auswählen, den ich haben möchte, und in die Jobliste einfügen.
    Dann einfach den nächsten Teilbereich auswählen, den ich haben möchte, und auch in die Jobliste einfügen.
    usw.

  • Oh Gott, stimmt, wie dumm ich bin. Ich kann ja einfach manuell 2 Scripte erstellen, stimmt. xD
    Dann erstelle ich ein Script, schneide den hinteren Teil weg (erster Part), drücke auf Queue, erstelle ein neues Script, schneide den vorderen Teil und den hinteren Teil weg (wenn ich 3 Parts haben will), drücke auf Queue, erstelle ein neues Script, schneide den vorderen Teil weg (letzter part), drücke auf Queue. Dann muss ich auch mit MKVmerge nicht mehr schneiden, sondern nur noch normal den Sound hinzufügen. Das wäre dann so ungefähr genau das, was ich brauche.


    Das muss jetzt auf jeden Fall mal ordentlich getestet werden :D


    Edit: Mhm, wieso erstellt mir MeGUI pro Video nur ein Script? Ich doch nicht wie oben beschrieben nacheinandern immer wieder das gleiche Video benutzen.
    ...oder ich hätte das zwite Script mal umbennen sollen. Weiter probieren...

  • Scheint zu klappen. 3 mal genau nach einer Minute geschnitten (59 Sekunden sind dabei ja nur einige wenige Frames unterschied). Min. GOP = 100, Max. GOP = 0. Ich muss nur aufpassen, dass ich während des Erstellen der Scripte auch immer den Namen ändere, da die Quelldatei ja immer gleich heißt. Aber ich habe das jetzt schon fast routinemäßig rin, also sollte das kein Problem sein.


    Fazit: Ich kann mit MeGUI die Datei klein halten und gleichzeitig sekundengenau schneiden. Naja, die einzelnen Dateien addiert sind 3*180 KB + 220 KB = 760 KB und als ein Video wären es nur 550 KB, aber ich gehe einfach mal davon aus dass das bei größeren Zahlen nicht mehr so auffallen wird. Mit den üblichen GOP-Werten ist das Video 2,98 MB groß. Ungerendert war das Video 282 MB groß, wobei ich auf CRF auf 23, weil ich den Unterschied letztens mal testen wollte, um mir die Upload-Zeiten angenehmer legen zu können. Ich mussmal gucken, ob ich das jetzt sogar wieder auf 21 stellen kann, wenn ich durch die GOP-Werte so viel spare... :)


    Danke an Lucki und sealsamblubb für die Anstöße und Erklärungen, scheine doch wieder einiges gelernt zu haben.^^

  • Min GOP bitte nicht größer als 25 und Max GOP auf 0 oder 250 belassen (wenn du mit AVS Cutter cuttest, und auf schnelle Spulbarkeit deiner MKVs verzichten kannst, mach 0, spart Dateigröße, vor allem bei inkomplexerem Material (weniger i-frames nötig) ), und mehrere Scripte anlegen ohne Cuts. (Du brauchst nur eines anlegen, was noch ohne AVS Cutter ist, davon machste dann im Explorer mehrere Kopien.


    Dann Tools -> AVS Cutter, die 1. AVS Datei wählen, dein ersten Partbereich adden, Do all and close.


    Dann, falls du Audio aus externe Quelle lädst (sprich nicht ausm AVS Script), dann bei Cuts bei Audio die CLT Datei öffnen. Benenn den Audio Output am besten am Ende mit _1 oder -part1 oder ähnliches. (Auch das ist nur nötig, wenn die Audioquelle nicht die AVS ist)


    Dann Audio und Video queuen. Nächste AVS Datei öffnen. Dann wieder Tools -> AVS Cutter, wieder die 2. AVS nehmen, partbereich part 2 adden, do all and close drücken. das _1 oder -part1 oder wie auch immer du es nun gemacht hast ändern auf _2 oder wie auch immer. und so dann immer weiter.


    Hab die Konversation zwischen euch etwas überflogen. Aber das sollte im Großen und Ganzen dein Anliegen sein.

  • Ok, Min. GOP nicht größer als 25, aber warum denn nicht? Das bedeutet doch, dass frühestens nach 25 Frames ein I-Frame gesetzt wird. Der kann doch aber auch erst nach 100 gesetzt werden, oder wird das Video dann irgendwie zu instabil? Oder ist das Problem, dass während der 3 Sekunden ein elementarer Umschwung sein könnte und ein I-Frame vielleicht einfach dringend nötig wäre?
    Scripte kopieren, macht Sinn, geht schneller, danke xD
    Das mit dem Sound hatte ich mir vorher schon in diesem Thread zusammengesucht, aber gut, dass du das nochmal erwähnst.


    ich habe das Testvideo jetzt schon gelöscht, aber kannst du mir so sagen, wie groß der Unterschied sein wird, wenn ich Min. GOP von 100 auf 25 setze?

  • Wann ein i-frame gesetzt werden muss, sollte x264 entscheiden und nicht du.


    mit Max GOP 0 (infinite) zwingste x264 nicht mehr ab dem xxx. Frame auf einen i-Frame zu setzen, auch wenn er nach diesem noch keinen benötigen würde.


    Das erbringt je inkomplexer das Material wird, umso mehr Speicherersparnis.



    Zitat

    ich habe das Testvideo jetzt schon gelöscht, aber kannst du mir so sagen, wie groß der Unterschied sein wird, wenn ich Min. GOP von 100 auf 25 setze?


    Den wirste eher bei Max GOP 0 merken. Angaben sind dazu nicht möglich. Hängt wie immer vom Material ab.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!