AviSynth-Script meets VHS-Kassette

  • Hallo zusammen!


    Ich stehe aktuell vor einer kleinen Herausforderung, fernab der Spielerei und YouTube.
    Es geht aktuell um das Thema die VHS-Kassetten der Sippschaft zu digitalisieren und da ich meine große Fresse mal wieder nicht halten konnte, hab ich den Mist jetzt an der Backe. :rolleyes:


    Freudestrahlend kam also heute meine Schwägerin und brachte neben diversen Kassetten auch "Retten Sie Ihre Video-Kassetten" von Magix mit, welches inklusive eines "Premium Videowandlers" daherkommt.
    Wie erwartet, taugt die beigefügte Software "Magix Video Deluxe" mal so gar nix um das gegrabbte Video auch nur ansatzweise zu verbessern...
    Ziel ist es, mit nem De-Interlacing, einem De-Noiser o.ä. und evtl. einer Farb-/Gamma-Anpassung ein etwas augenfreundlicheres Material zu bekommen.


    Hierzu bin ich auch recht schnell fündig geworden, da man dies alles per AviSynth nebst diversen Plugins realisieren kann.
    Allerdings habe ich da einige Probleme welche ich auch durch Google nicht wirklich beseitigen konnte, vielleicht können mir die Script-Haie hier helfen. ;)


    Das Script habe ich in "AVSPmod" erstellt, welches auch in der Preview läuft...meistens.
    Hier das Script:


    Im Preview sieht das Material nun schon deutlich ansprechender aus, allerdings greift der "AutoAdjust" wohl nur bei der Ausgabe...soweit ich mich da nicht verlesen habe.
    Und hier, also bei der Ausgabe, kapiere ich grad nix mehr...


    Das Script soll über folgende Batch gestartet werden:


    Dieses Fenster erscheint, schließt sich aber nach ca. 1 Minute wieder.


    Lade ich das Script in MeGUI, schließt sich dieses auch nach wenigen Augenblicken.


    Habt ihr ne Idee, wo ich hier nen Fehler eingebaut habe, oder sogar selber schon die alten Teile digitalisiert und DIE Erfahrung mit XYZ-Plugin gemacht?


    Vielen Dank für die Hilfe! ;)

  • ffmpeg -i "testscript.avs" -c:v libx264 -crf 17 -preset medium -profile high -c:a copy "out.mp4" > ffmpeg.log


    Das leitet die Ausgabe in eine Datei "ffmpeg.log" um.
    Ffmpeg sollte da eine Fehlermeldung ausgeben, evtl steht da was drinnen.


    Du verwendest allerdings häufig viele Threads. Vielleicht läufts mit wenigen besser?

  • Das leitet die Ausgabe in eine Datei "ffmpeg.log" um.
    Ffmpeg sollte da eine Fehlermeldung ausgeben, evtl steht da was drinnen.

    Log wird erzeugt, allerdings ist die Datei leer und 0 KB groß. ?(

    Du verwendest allerdings häufig viele Threads. Vielleicht läufts mit wenigen besser?

    Habe "QTGMC(Preset="Slower", Edithreads=10" und "Prefetch(threads=22)" jetzt mal mit diversen Einstellungen (alle <32 Threads da 1950x) getestet -> keine Änderung

  • Hast du auch die Minute gewartet?
    Die Ausgabe wird da einfach nur in eine Datei umgeleitet, statt auf dem Konsolenfenster ausgegeben zu werden. Daher musst du warten, bis ffmpeg fertig ist.


    Ansonsten wäre es sinnvoll, nur mit dem ersten Befehl anzufangen. Dann, sollte es klappen, den zweiten mit rein zu nehmen, dann, sollte es klappen, den nächsten usw.


    Sprich erst eine avs-Datei nur mit
    SetFilterMTMode("QTGMC",2)
    FFmpegSource2("r:\test2.avi", atrack=1) erstellen und die mal versuchen.
    Wenn das dann klappt, den nächsten Befehl dazunehmen usw.

  • Hast du auch die Minute gewartet?
    Die Ausgabe wird da einfach nur in eine Datei umgeleitet, statt auf dem Konsolenfenster ausgegeben zu werden. Daher musst du warten, bis ffmpeg fertig ist.

    Ja, habe ich. Das Fenster schließt sich nur automatisch, wenn die .bat so gestartet wird. Habe sie jetzt immer in der DOS-Box ausgeführt.
    Die .log-Datei wird auch jedesmal korrekt neu erstellt.

    Sprich erst eine avs-Datei nur mit
    SetFilterMTMode("QTGMC",2)
    FFmpegSource2("r:\test2.avi", atrack=1) erstellen und die mal versuchen.
    Wenn das dann klappt, den nächsten Befehl dazunehmen usw.

    Soeben damit fertig geworden.
    Gab weder einen Erfolg bei der .log-Datei, noch bei der eigentlichen Ausgabe.

  • Ok.
    Dann scheint das bei ffmpeg nicht zu klappen. Doof.


    Aber den zweiten Teil mit dem nach und nah ausprobieren meinte ich anders: du kannst so rausfinden, bis zu welchem Befehl das Skript läuft und ein Video ausgibt und ab welchem dann das Fenster ohne Ergebnis geschlossen wird.
    Vielleicht hilft das.

  • Wenn AvsPmod eine Ausgabe liefert, dann klappt das Skript auch nach AVISynth Standard.


    Die Frage ist jetzt:
    - Ist eine falsche AVISynth Version installiert mit der FFmpeg nix anfangen kann? (Prüfen)
    - Hängt sich der Prozess am MT Filter auf? (Prüfen indem die entsprechende Zeile entfernt wird)
    - Fehlt vllt. ein wichtiger Parameter im Skript der für die Weiterverarbeitung nötig ist? (FFmpegSource2 z.B. mal Versuchen den Thread Parameter auf 1 zu stellen und zu probieren)
    - Ist die Reihenfolge im Skript eventuell falsch, sodass sich eventuell Filter in die Quere kommen zwecks dem ganzen Threads?
    - Kann FFmpeg eventuell die Plugins zu QTGMC nicht finden, da sie über den AVISynth Standard hinaus gehen und im jeweiligen Skript mit einem absoluten Pfad stehen müssen?


    Problemlösung ist am Einfachsten wenn man Zeile für Zeile prüft.
    Mein Test würde wie folgt aussehen:
    - Ein simples AVS Skript erstellen mit nur einem Befehl der ein Testbild erzeugt.
    - Gefolgt vom Test zwischen FFmpeg und dem AVS Skript
    - Klappt es, ist der Fehler in deinem AVS Skript zu suchen. Klappt es nicht, wird der Fehler zwischen AVISynth und FFmpeg selbst liegen. Im letzteren Falle die AVISynth Version prüfen und ob deine FFmpeg Version damit arbeitet.
    Im Falle des ersteren Falls, die Problemfragen die ich oben genannt habe mal Zeile für Zeile durchgehen.
    Am besten alles ausklammern und Zeile für Zeile dazu nehmen und immer mit FFmpeg testen. Sobald FFmepg streikt, hast du die Zeile die Schwierigkeiten bereitet.



    Kleinigkeiten:

    Code
    QTGMC( Preset="Slower", NoiseProcess=1, NoiseRestore=0.0, Sigma=4.0)
    QTGMC(Preset="Slower", Edithreads=10)


    Könnte man zusammenfassen eventuell zu


    Code
    QTGMC(Preset="Slower", NoiseProcess=1, NoiseRestore=0.0, Sigma=4.0, Edithreads=10)
  • Aber den zweiten Teil mit dem nach und nah ausprobieren meinte ich anders: du kannst so rausfinden, bis zu welchem Befehl das Skript läuft und ein Video ausgibt und ab welchem dann das Fenster ohne Ergebnis geschlossen wird.
    Vielleicht hilft das.

    Ich habe vor alle Zeilen ein # gesetzt und dann Zeile für Zeile durch, also # entfernt, getestet, usw. usw.

    Am besten alles ausklammern und Zeile für Zeile dazu nehmen und immer mit FFmpeg testen. Sobald FFmepg streikt, hast du die Zeile die Schwierigkeiten bereitet.

    Vielen Dank schon mal euch beiden, werde ich heute Abend mal versuchen und dann auch gerne auf deine Fragen eingehen, Sagaras.

  • So, gestern leider nicht mehr dazu gekommen, aber steht nun heute auf dem Plan. ;)
    Kurioser Weise und bevor ich irgendwas am Script geändert habe, scheint FFMPEG jetzt zu starten, spuckt mir aber eine andere Fehlermeldung an den Kopf.
    Und ja, ich habe den Rechner mehrmals neu gestartet.


    - Ist eine falsche AVISynth Version installiert mit der FFmpeg nix anfangen kann? (Prüfen)

    Ich habe mich hier an einem Tutorial entlang gehangelt und die dort beschriebenen, jeweils aktuellsten, Versionen geladen.
    Da FFMPEG sich nun von der .AVS angesprochen fühlt, dürfte es die korrekte Version sein.


    - Hängt sich der Prozess am MT Filter auf? (Prüfen indem die entsprechende Zeile entfernt wird)
    - Fehlt vllt. ein wichtiger Parameter im Skript der für die Weiterverarbeitung nötig ist? (FFmpegSource2 z.B. mal Versuchen den Thread Parameter auf 1 zu stellen und zu probieren)

    Kann aktuell nicht mehr reproduziert werden, da FFMPEG anfängt zuarbeiten.


    - Ist die Reihenfolge im Skript eventuell falsch, sodass sich eventuell Filter in die Quere kommen zwecks dem ganzen Threads?

    Diese Reihenfolge stammt aus dem Tutorial, welches ich zur Vorlage genommen habe und hat dort funktioniert.
    Da ich noch mit ein paar anderen Filtern experimentiert habe, stehen die noch im Script, fliegen dann aber raus.

    - Kann FFmpeg eventuell die Plugins zu QTGMC nicht finden, da sie über den AVISynth Standard hinaus gehen und im jeweiligen Skript mit einem absoluten Pfad stehen müssen?

    Soweit ich das in den Beschreibungen der einzelnen Plugins gelesen habe, benötigt keines einen absoluten Pfad. AVSPmod hat hier auch ordentlich gemeckert, wenn ein Sub-Plugin nicht installiert war oder ähnliches.

    Problemlösung ist am Einfachsten wenn man Zeile für Zeile prüft.
    Mein Test würde wie folgt aussehen:
    - Ein simples AVS Skript erstellen mit nur einem Befehl der ein Testbild erzeugt

    Habe ich gemacht. Ein Standbild aus dem Video genommen wo auch schön viele Macken drin waren, in AVSPmod getestet und erfolgreich via FFMPEG ausgeben lassen. Klappt also!

    Klappt es, ist der Fehler in deinem AVS Skript zu suchen.

    Wie eingangs schon erwähnt, spuckt mir FFMPEG nun eine andere Fehlermeldung an den Kopf.


    Die habe ich jetzt behoben, indem ich "-c:a pcm_alaw" als Audioausgabe und .MKV als Container genommen habe.


    Dein Vorschlag, die Codezeilen zusammenzufügen, klappt prima, danke! :)


    Sorry für die vielleicht doofe Frage, aber werden die verwendeten Threads in Summe sofort nach Starten der Batch gezogen, oder nur bei Anwendung des Zeile?


    Edit:
    Habe jetzt mal mit dem richtigen Material was machen wollen, sprich, komplette Kassette (180 Minuten) gegrabbt und dann in VirtualDub die Sektion gecropt und als .AVI gespeichert.
    Wenn ich nun das ja eigentlich funktionierende Script mit DIESER Datei starte, bekomme ich
    "[avisynth @ 06bc3f80] System exception - Access Violation
    (testscript.avs, line 2)
    testscript.avs: Unknown error occurred"
    angezeigt. :(


    In Zeile 2 des Scripts steht: "FFmpegSource2("r:\Testvideo.avi", atrack=1)"

Jetzt mitmachen!

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