MeGUI nimmt keinen Resize mehr an

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MeGUI nimmt keinen Resize mehr an

    Anzeige
    Ahoi!

    Ich habe seit Jahr und Tag dasselbe Skript, mit dem ich problemlos in MeGUI arbeiten kann. Heute wollte ich eine neue Videoladung abarbeiten lassen und das Programm akzeptiert den Resize nicht mehr. 1080p rein, 1080p raus. Ohne den Resizer zu nutzen. Hier mein Script:

    Quellcode

    1. SetMTMode(3)
    2. video = AVISource("G:\Video Capture\q16.avi", audio=false).AssumeFPS(60)Video
    3. SetMTMode(2)
    4. Spline16Resize(3200,1800).ConvertToYV12()
    5. A1 = WavSource("G:\Video Capture\q16 st0.wav")
    6. A2 = WavSource("G:\Video Capture\q16 st1.wav")
    7. audio = MixAudio (A1, A2, 0.4, 0.6)
    8. return AudioDub (video, audio)
    Alles anzeigen
    Wie gesagt. Geändert wurde noch nie etwas. Was heute als Problemlösung neu dazu gekommen ist:

    Avisynth reinstalliert mit unofficial MT und daher den SetMTMode-Befehlen. Keine Lösung.

    Ich hoffe, ihr findet den Fehler. Mag auch am System liegen, da ich vor einigen Wochen auf neue Festplatten und SSDs umgezogen bin. MeGUI/Avisynth wäre dann aber das einzige Programm, das damit ein Problem hat.
    CobraVerde. Spieleklassiker und untergegangene Juwelen schamlos beworben.
    Der beste Post des Forums!
    Empfehlungen: Outcast
    Thief Gold
  • Quellcode

    1. SetMTMode(3)
    2. video = AVISource("G:\Video Capture\q16.avi", audio=false).AssumeFPS(60)
    3. SetMTMode(2)
    4. video = video.Spline16Resize(3200,1800).ConvertToYV12()
    5. A1 = WavSource("G:\Video Capture\q16 st0.wav")
    6. A2 = WavSource("G:\Video Capture\q16 st1.wav")
    7. audio = MixAudio (A1, A2, 0.4, 0.6)
    8. AudioDub(video, audio)
    Alles anzeigen
    Siehe Zeile 5.
    Sollte nun wieder laufen.

    Du hast Zeile 5 in deinem Skript nicht an Zeile 5 in AudioDub übergeben, sondern Zeile 2. Und Zeile 2 ist dein Input.

    Somit ist also auch dein Output genauso groß wie dein Input.

    Zudem hast du bei dir in Zeile 2 in deinem Skript am Ende "Video" zu stehen, was aber zusammen mit AssumeFPS keinen Sinn macht.

    Da kommt mir der Gedanke das du aus dem Skript ein Anteil gelöscht hast ausversehen ^^

    Und das Return am Ende kannste dir sparen. Das ist erst wichtig, wenn du irgendwie Modular arbeiten willst damit und somit alle vorherigen Variablen ungültig machen willst.

    Das Return gibt ein Clip zurück an Hauptskript und das Hauptskript verlässt du ja nicht. ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sagaras ()

  • Sagaras schrieb:

    Siehe Zeile 5.
    Sollte nun wieder laufen.
    Danke! Hat funktioniert! Seltsamerweise habe ich das vorher aber wirklich niemals gebraucht. Die Zeile sah jahrelang so aus und hat funktioniert. Auch die Avisynth-Wiki gibt Resize so an wie ich das geschrieben hatte. Naja, hautpsache es klappt jetzt :)
    Auf Jedenfall kann ich jetzt weiter "händisch" mit MeGUI arbeiten. Ich verstehe eben lieber von vorne bis hinten, was ich wie mache. Das Skript ist ja auch viel kürzer als das, was der SSM mir ausgibt, hehe.
    Also danke nochmals!

    Edit: Sollte irgendwer noch Optimierungsvorschläge für den Code haben, immer her damit :)
    CobraVerde. Spieleklassiker und untergegangene Juwelen schamlos beworben.
    Der beste Post des Forums!
    Empfehlungen: Outcast
    Thief Gold
  • Kannst das Skript auch etwas kürzen.

    Quellcode

    1. A = "G:\Video Capture\q16"
    2. SetMTMode(3)
    3. AVISource(A + ".avi", false).AssumeFPS(60, 1)
    4. SetMTMode(2)
    5. Spline16Resize(3200,1800).ConvertToYV12(matrix="Rec709", chromaresample="Spline16")
    6. AudioDub(MixAudio (WavSource(A + " st0.wav"), WavSource(A + " st1.wav"), 0.4, 0.6))
    Da dein Video und deine Audio Tracks die gleichen Namen haben, kannst du das wie in Zeile 1 abkürzen und fügst wie in Zeile 4 und 9 einfach nur die Enden an. Damit kürzt du das Skript schon mal.

    Bei AVISource kommt als erstes Argument das Video was geladen werden soll und als zweites Argument ob Audio mit geladen werden soll. Da es so Programmiertechnisch an zweiter Stelle ist, brauchst du das Argument nicht zu schreiben, sondern sagst einfach "false", da Audio wie gesagt Standardmäßig das zweite fortlaufende Argument ist.

    Bei ConvertToYV12 kannst du die Farbmatrix angeben + Chromaresample. Damit wird zum einen bei einer Konvertierung BT.709 TV Range genutzt, statt BT.601 TV Range und mit Chromaresample sorgst du dafür, falls du mal einen höheren Farbraum hast und es auf YV12 reduzierst, das die Farben besser erhalten bleiben bei der Neuverteilung in YV12.
  • Anzeige
    Super Danke! Wenn ich schon dabei bin: Ich habe die Soundspuren der Aufnahme immer extrahiert und dann mit dem Skript wieder eingefügt quasi. Wie kann ich das denn schreiben, damit er direkt aus der Videodatei beide Soundspuren zieht und sie so wie oben verarbeitet? Das würde das ganze nochmal immens vereinfachen.
    CobraVerde. Spieleklassiker und untergegangene Juwelen schamlos beworben.
    Der beste Post des Forums!
    Empfehlungen: Outcast
    Thief Gold
  • Sofern du die neue AVISynth Version drauf hast (ab v2.6), dann kannst du mit AVISource auch Audio direkt laden.

    ABER... das Ganze ist etwas limitiert. Also bitte bei einer Verwendung von 44100Hz und 16Bit nicht länger als 6h aufnehmen.

    Weil AVISource läd Audio genauso wie WAVSource lediglich Wave32 Audio. Und das darf nicht mehr als 4GB übersteigen der Audio Stream.

    Dann kannst du folgendermaßen das Skript machen:

    Quellcode

    1. file = "G:\Video Capture\q16.avi"
    2. SetMTMode(3)
    3. video = AVISource(file, true, atrack=0).AssumeFPS(60, 1)
    4. track1 = video.KillVideo()
    5. track2 = AVISource(file, true, atrack=1).AssumeFPS(60, 1).KillVideo()
    6. SetMTMode(2)
    7. video.KillAudio().Spline16Resize(3200,1800).ConvertToYV12(matrix="Rec709", chromaresample="Spline16")
    8. AudioDub(MixAudio(track1, track2, 0.4, 0.6))
    Alles anzeigen
    Jetzt lädt er in Zeile 4 das Video + Audiotrack 1 aus dem Video rein. In Zeile 5 wird der Audiotrack vom Video getrennt via KillVideo().
    Dann muss in Zeile 6 das Video noch mal geladen werden, nur diesmal mit Audiotrack 2 und es wird wieder der Videotrack gekillt.

    Und schon hast du alles Separat. In Zeile 9 wird Audio gekillt um nur noch den Videotrack zu haben. Und jetzt verfährst du ganz normal weiter.

    So brauchst die Auditracks nicht extrahieren, sondern kannst sie gleich verwenden, sofern du da nix weiter bearbeiten willst.
  • Brilliant, danke!
    Ich sag ja ich muss endlich mal Coden lernen. Man macht sich das leben damit so viel einfacher. Jetzt muss ich kaum noch herumficken mit den ganzen Skripts sondern kann einfach MeGUI komplett arbeiten lassen und muss mir nix bei denken. Am nächsten Morgen dann Audio und Video zusammenmuxen (oder kann man das auch noch brav ins Skript einbauen?) und ich hab meine Ruhe. Dann kann ich wieder häufiger Videos machen :)
    CobraVerde. Spieleklassiker und untergegangene Juwelen schamlos beworben.
    Der beste Post des Forums!
    Empfehlungen: Outcast
    Thief Gold
  • CobraVerde schrieb:

    Am nächsten Morgen dann Audio und Video zusammenmuxen (oder kann man das auch noch brav ins Skript einbauen?) und ich hab meine Ruhe.
    Man kann das Skript so machen das er Optional, wenn die WAV Datein extrahiert wurden und angegeben wurden und vor allem existieren, er im Skript eine andere Ladesequenz nutzt.

    Und das geht so:

    Quellcode

    1. file = "G:\Video Capture\q16.avi"
    2. file_t1 = "G:\Video Capture\q16 st0.wav"
    3. file_t2 = "G:\Video Capture\q16 st1.wav"
    4. SetMTMode(3)
    5. Try {
    6. video = AVISource(file, false).AssumeFPS(60, 1)
    7. track1 = WAVSource(file_t1)
    8. track2 = WAVSource(file_t2)
    9. } Catch(Error) {
    10. video = AVISource(file, true, atrack=0).AssumeFPS(60, 1)
    11. track1 = video.KillVideo()
    12. track2 = AVISource(file, true, atrack=1).AssumeFPS(60, 1).KillVideo()
    13. }
    14. SetMTMode(2)
    15. video.KillAudio().Spline16Resize(3200,1800).ConvertToYV12(matrix="Rec709", chromaresample="Spline16")
    16. AudioDub(MixAudio(track1, track2, 0.4, 0.6))
    Alles anzeigen
    ALSO... wenn das Skript jetzt zwischen Zeile 7 und 11 einen Fehler schmeißt, dann bricht er den Versuch zwischen Zeile 7 und 11 ab und führt stattdessen Zeile 11 bis 15 aus.

    Das heißt, wenn dein Video oder Track1 oder Track2 als Separate Dateien nicht existieren, dann versucht er aus dem Video selbst Track1 und Track2 zu ziehen.

    Damit hast du die Wahl ob die Audiodateien extrahiert worden sind oder im Video drin sind. Erst versucht er die Externe Variante und wenn da Fehler auftauchen, wie z.B. Datei existiert nicht, dann versucht er die Interne Variante.

    Ist das Video selbst nicht existent, geht gar nix. ^^


    Und für das automatische Muxen gibt es in MeGUI AutoEncode.

    AutoEncode encodiert erst Audio, dann Video und dann muxt er das auch noch alles zusammen.

    Muss nur eingestellt werden richtig.

    MeGUI -> Options -> Settings -> Extra Configuration -> Auomated Encoding -> Configure AutoEncode defaults
    Da einfach auf MKV stellen einmal und die Auswahl "No Target Size" nutzen. Dann nimmt er deine eingestellten Encoder Settings die du momentan aktiv hast.

    Und dann schmeißt du nur noch das Skript rein, drückst auf AutoEncode und fertig.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sagaras ()