VapourSynth in praktischer Anwendung

  • Falls sich jemand fragt wie man ffplay oder mplayer zum Playback von Vapoursynth Skripten verwendet, ohne das diese explizit mit Support für diese kompiliert sind:
    Für ffplay:

    Code
    "Pfad zur python executable" "Pfad zu .vpy Skript" | "Pfad zu ffplay" -

    wenn man die portable Vapoursynth Version verwendet.
    Ansonsten:

    Code
    "Pfad zu .vpy Skript" | "Pfad zu ffplay" -


    Wichtig, das .vpy Skript muss mit:

    Code
    clip.output(sys.stdout, y4m=1)

    enden und 'clip' sollte die Output-Variable sein.

    Für mplayer ist es etwas umständlicher, falls dieser kein y4m unterstützt.

    Code
    "Pfad zur python executable" "Pfad zu .vpy Skript" | "Pfad zu mplayer" -demuxer rawvideo -rawvideo fps=FRAMERATE:w=BREITE:h=HÖHE -

    wenn man die portable Vapoursynth Version verwendet.
    Ansonsten:

    Code
    "Pfad zu .vpy Skript" | "Pfad zu mplayer" -demuxer rawvideo -rawvideo fps=FRAMERATE:w=BREITE:h=HÖHE" -


    Wichtig, das .vpy Skript muss mit:

    Code
    clip.output(sys.stdout)

    enden und 'clip' sollte die Output-Variable sein.

    Wenn mplayer y4m unterstützt, ist bei aktuellen Versionen eigentlich der fall, kann man einfach:

    Code
    "Pfad zur python executable" "Pfad zu .vpy Skript" | "Pfad zu mplayer" -demuxer y4m -

    verwenden.

    Cu Selur

    Ps.: Ja, man kann auch Vapoursynth Editor (https://bitbucket.org/mystery_keeper/vapoursynth-editor) oder einen Player verwenden, der direkt mit Vapoursynth Support gebaut ist, dachte mir nur eventuell will ja außer mir mal jemand ffplay oder mplayer verwenden. :)

  • Ich glaube er wollte wissen, warum Du lieber die Skripte anpaßt, als einfach vspipe zu nehmen. Das ist ja extra für Pipes gemacht. Ich wußte ehrlich gesagt nicht mal, daß der Weg über Python mit sys.stdout noch verfügbar ist.
    Ich weiß aber zugegebenermaßen nicht, ob sys.stdout gegenüber vspipe überhaupt irgendwelche konkreten Nachteile hat. (Vom Aufwand fürs Skript-Anpassen abgesehen)

  • Ach so. :) Hatte mich einfach gefragt was man so alles machen kann und beim Lesen rund um Phyton und Vapoursynth erschien mir das wie ein Weg der gehen müsste und es auch tut. :)
    (War erst mal nur ne Spielerei, ohne genauen Zweck, dachte mir aber vielleicht interessiert es ja noch andere Leute und posten könnte ja nicht schaden.)

    Zitat

    Vom Aufwand fürs Skript-Anpassen abgesehen


    Skripte würde ich eh automatisiert erstellen, da ist der Aufwand nur einmalig. :)

  • Komische Sache, wenn ich:

    Code
    "G:\Hybrid\Vapoursynth\VSPipe.exe" "H:\Temp\tempPreviewVapoursynthFile20_16_00_816.vpy" - --y4m | "G:\Hybrid\mplayer.exe" -demuxer y4m -  -forcedsubsonly -nosub -noautosub -mc 0 -vo gl -lavdopts threads=8  -mc 0 -nosound


    verwende klappt die Wiedergabe, wenn ich aber mplayer im SlaveMode verwende:

    Code
    "G:\Hybrid\Vapoursynth\VSPipe.exe" "H:\Temp\tempPreviewVapoursynthFile20_16_00_816.vpy" - --y4m | "G:\Hybrid\mplayer.exe" -demuxer y4m -  -forcedsubsonly -nosub -noautosub -mc 0 -vo gl -lavdopts threads=8  -mc 0 -nosound -slave


    Krieg ich nur:

  • a. man extrahiert die gewünschte PGC (mit Stream Processing beim Rippen oder PGCDemux), so dass eine PGC-VOB oder (parallel zu Tonspuren) eine elementare M2V für FFMS2 oder L-SMASH Works herauskommt.

    b. man speichert den der Playlist entsprechenden Film mit MakeMKV als MKV.

  • Danke für die Antwort.
    Gibt also keine ordentliche Möglichkeit, schade.
    Wenn ich schon MakeMKV verwenden muss, würde ich es wohl in beiden Fällen verwenden. (Grummel, wäre schön gewesen, wenn es da eine Möglichkeit gegeben hätte ohne große temporäre Zwischendateien.)

  • Ich will ja nicht behaupten, dass es keine andere Möglichkeit gäbe. Kann ja nicht alles kennen, was bisher je entwickelt wurde.

    Aber mir ist bisher nicht bekannt, dass FFMS2 oder L-SMASH Works in der Lage wären, Playlisten zu verarbeiten.

    Ein d2vsource ist zwar nett, aber DGIndex funktioniert auch erst mit einer PGC-VOB zuverlässig, da es ja auch nicht in der Lage ist, IFOs zu analysieren und so selber auf PGCs zuzugreifen.

  • Habe folgendes Skript:

    Code
    # Importsimport sysimport osimport vapoursynth as vscore = vs.get_core()# Import Scripts FolderscriptPath = 'G:/Hybrid/Vapoursynth/scripts'sys.path.append(os.path.abspath(scriptPath))# Import havsfuncimport havsfunc as havsfunc# Loading Pluginscore.std.LoadPlugin(path="G:/Hybrid/Vapoursynth/vapoursynth64/plugins/Support/fmtconv.dll") # http://ldesoras.free.fr/src/vs/fmtconv-r20.zipcore.std.LoadPlugin(path="G:/Hybrid/Vapoursynth/vapoursynth64/plugins/Support/scenechange.dll") # https://uloz.to/!EBDh51BYcore.std.LoadPlugin(path="G:/Hybrid/Vapoursynth/vapoursynth64/plugins/Support/temporalsoften.dll") # https://uloz.to/!EBDh51BYcore.std.LoadPlugin(path="G:/Hybrid/Vapoursynth/vapoursynth64/plugins/Support/libmvtools.dll") # https://github.com/dubhater/vapoursynth-mvtools/releases/download/v15/vapoursynth-mvtools-v15-win64.7zcore.std.LoadPlugin(path="G:/Hybrid/Vapoursynth/vapoursynth64/plugins/Support/libnnedi3.dll") # https://github.com/dubhater/vapoursynth-nnedi3/releases/download/v8/vapoursynth-nnedi3-v8-win64.7zcore.std.LoadPlugin(path="G:/Hybrid/Vapoursynth/vapoursynth64/plugins/SourceFilter/d2vSource/d2vsource.dll") # https://github.com/dwbuiten/d2vsource/releases/download/v1.0/d2vsource-1.0-windows.zip# Loading Source: F:\TestClips&Co\interlaceAndTelecineSamples\interlaced\interlaced.m2vclip = core.d2v.Source(input="H:/Temp/m2v_26c3cb85db00ee55b39de4864fd86927_14771.d2v")# Deinterlacing using QTGMCclip = havsfunc.QTGMC(clip, Preset="Faster", TFF=True)# Outputclip.output(sys.stdout, y4m=1)


    welches ich mit:

    Code
    VSPipe.exe h:\Temp\tempPreviewVapoursynthFile09_40_32_251.vpy - --y4m | g:\Hybrid\ffplay.exe -


    aufrufe. Kriege aber nur einen Crash das VSPipe nicht mehr reagiert.

    Ohne die QTGMC Zeile geht es ohne Probleme.

    Hab meinen Vapoursynth 64bit Ordner (mit der portablen Python und der portablen Vapoursynth Version und all meinen Plugins), auch mal in mein Google Drive gelegt (Vapoursynth_test.7z).

    -> Hat jemand ne Idee was da schief läuft?

    Cu Selur

  • wenn ich:


    aufrufe crashed es auch -> vermute das Problem liegt bei fmtconv, kann das Problem jemand anders bestätigen?

Jetzt mitmachen!

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