avs2pipemod64 crash

  • Hi zusammen

    Ich habe mein System nun auf 64-bit umgestellt. Nur leider gibt's jetz massig Probleme beim Einstatz von xyVSFilterSubFilter.

    Es werden bis zum ersten Vorkommen eines Untertitels Frames ge-served ... und dann stoppt avs2pipemod64 einfach. Keine Fehlermeldung ... gar nichts.

    Die Untertitel sind .ssa und schau ich mir das Ganze via VDub an, so werden die auch korrekt dargestellt !

    Normalerweise schaut das so aus:

    Code
    "C:\Program Files (x86)\Video Tools\avs2pipemod-1.1.1\avs2pipemod64.exe" -rawvideo "01.avs" | "C:\Program Files\x265\x265-2.8_74.exe" --preset slow --crf 22.5 --psy-rd 2.0 --rd 5 --psy-rdoq 10.0 --aq-mode 3 --me star --no-open-gop --no-sao --input-res 1920x1080 --input-depth 16 --fps 24000/1001 --output "01.h265" --input -

    Nach etwas stöbern auf Doom9 schlug jemand vor statt "rawvideo" aus Ausgabe y4m zu nehemen.

    Code
    "C:\Program Files (x86)\Video Tools\avs2pipemod-1.1.1\avs2pipemod64.exe" -y4mp "01.avs" | "C:\Program Files\x265\x265-2.8_74.exe" --preset slow --crf 22.5 --psy-rd 2.0 --rd 5 --psy-rdoq 10.0 --aq-mode 3 --me star --no-open-gop --no-sao --input-res 1920x1080 --input-depth 16 --y4m --fps 24000/1001 --output "01.h265" --input -

    seltsamerweise funktioniert das aber überhaupt nicht, da x265 rum-mault:

    x265 [error]: y4m: frame header missing

    Jemand 'ne Idee ?

    Was gibt es als Alternative ?

  • Du sagst, du hast mit VirtualDub getestet; schön: Mit einem 32-bit-Prozess? Und die spätere Verarbeitung erfolgt mit AviSynth in einem 64-bit-Prozess: Dann verwenden beide unterschiedliche DLLs von AviSynth-Plugins und was diese evtl. noch zusätzlich brauchen. Vergleichen müsstest du also auch mit einer 64-bit-Applikation, wie VirtualDub2 sie anbietet, oder noch besser: Mit AVSMeter64, dies wurde extra zum Debugging entwickelt und ausgebaut.

    Mit dem Y4M hab ich mich vorhin verlesen... wenn du bei x265 "--y4m" angibst, dann solltest du "--input-res 1920x1080 --input-depth 16 --fps 24000/1001" eigentlich auch weglassen können, das sollte alles im Y4M-Header mit enthalten sein. Dass angeblich keiner gefunden wurde, ist aber schon seltsam. Wenn auch nur das erste Frame ausgegeben wurde, sollte einer vorangestellt worden sein. Du kannst das Ergebnis ja auch mal in eine Datei umleiten und später mit einem robusten Editor anschauen (z.B. einem Hex-Editor wie HxD).

    Eine Alternative zu avs2pipemod64 wäre ein 64-bit-Build von ffmpeg mit AviSynth-Unterstützung (z.B. von Zeranoe) und mit Parameter "-f yuv4mpegpipe -" als Ausgabeformat und Pseudo-Dateiname.

  • Ok das mit VirtualDub war wirklich nur die 32bit Version ... obwohl das eigentlich keinen Einfluss haben sollte ...

    Hier das avs:

    Code
    LoadPlugin("C:\Program Files (x86)\Video Tools\LSMASHSource-AviSynth-plugin-r929-msvc-64bit\LSMASHSource.dll")
    LoadPlugin("C:\Program Files (x86)\Video Tools\xyVSFilterSubFilter-3.1.0.800\x64\VSFilter.dll")
    
    
    LWLibAvVideoSource("onfire-1080p24.h264")
    AssumeFPS(24000,1001,false)
    Textsub("onfire.ssa")
    
    
    return(last)

    Das gibt allerdings "nur" den 8-bit Farbraum aus ... 10-bit hat noch nicht geklappt im zusammenspiel mit dem xyVSFilterSubFilter.

    Sobald der nämlich den Untertitel einblendet, stoppt sowohl avs2pipemod als auch ffmpeg

    Aber tatsächlich klappt's (bis jetzt :D ) mit ffmpeg:

    Code
    "C:\Program Files (x86)\Video Tools\ffmpeg-20181029-32d021c-win64-static\ffmpeg-20181029-32d021c-win64-static\bin\ffmpeg.exe" -i 01.avs -f rawvideo - | "C:\Program Files\x265\x265-2.8_74.exe" --preset slow --crf 22.5 --psy-rd 2.0 --rd 5 --psy-rdoq 10.0 --aq-mode 3 --me star --no-open-gop --no-sao --input-res 1920x1080 --input-depth 8 --fps 24000/1001 --output "01.h265" --input -

    Ist "y4mp" das selbe wie "y4m" ?

    Laut ffmpeg ist das Ausgabe-Material allerding YUV

    Einmal editiert, zuletzt von may24 (31. Oktober 2018 um 15:34)

  • Ok das mit VirtualDub war wirklich nur die 32bit Version ... obwohl das eigentlich keinen Einfluss haben sollte ...

    Doch:

    • 32-bit-VirtualDub2 benutzt 32-bit-AviSynth mit 32-bit-Plugins
    • 64-bit-VirtualDub2 benutzt 64-bit-AviSynth mit 64-bit-Plugins

    Wäre also leicht möglich, dass nur eine der beiden Plugins (die ja in unterschiedlichen Verzeichnissen aufbewahrt werden) fehlt oder fehlerhaft ist. Dann funktioniert nur eine der beiden Varianten.

    Y4M ist eine Abkürzung für "YUV4MPEG" als Datei- oder Datenstromformat (rohe YUV-Videodaten mit einem Text-Header vor den eigentlichen Videodaten) speziell für den Austausch über eine Pipe.

    Der Parameter "-y4mp" gibt avs2pipemod64 zusätzlich den Hinweis, die Ausgabe als "progressiv" zu kennzeichnen (im Gegensatz zu interlaced, TFF oder BFF, mittels Parameter "-y4mt" oder "-y4mb").

  • ja, Aber ...

    Wie du im avs sehen kannst werden da nur 64bit Plugins geladen. Und ich glaube kaum das VDub2-32bit damit was anfangen kann.

    Es scheint wirklich so als führe die Kombi xyVSFilterSubFilter + avs2pipemod zum vorzeitigen beenden.

    Nur leider halt keine Fehlermeldung ...

  • Ja, eben ... wenn du explizit ein 64-bit-Plugin lädst, dürfte in 32-bit VirtualDub2 gar nichts funktionieren, dann müsste das 32-bit AviSynth sofort meckern, dass es diese DLL nicht als Plugin laden kann.

    Hast du nun inzwischen mal versucht, das Skript mit AVSMeter und mit AVSMeter64 laufen zu lassen? Und vorher die beiden auch noch mal ohne Skript zum Checken der Basis-Installation?

  • ja, Aber ...

    Wie du im avs sehen kannst werden da nur 64bit Plugins geladen.

    Im Englischen nennt man das "Logical fallacy". ;)

    Ich sehe lediglich, dass du in deinem Skript DLLs aus den Verzeichnissen "C:\Program Files (x86)\Video Tools\LSMASHSource-AviSynth-plugin-r929-msvc-64bit" und "C:\Program Files (x86)\Video Tools\xyVSFilterSubFilter-3.1.0.800\x64" versuchst zu laden.

Jetzt mitmachen!

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