View Full Version : Vapoursynth
Yomiko
11th November 2021, 14:34
I see. That's a nice excuse to not enumerating all the output nodes.
lansing
20th November 2021, 01:30
How do I pass in multiple nodes into a map programmatically for plugin such as StackHorizontal? Like this?
vsapi->mapConsumeNode(pArgumentMap, "clips", A_node, maAppend);
vsapi->mapConsumeNode(pArgumentMap, "clips", B_node, maAppend);
vsapi->mapConsumeNode(pArgumentMap, "clips", C_node, maAppend);
auto resultMap = vsapi->invoke(pStdPlugin, "StackHorizontal", pArgumentMap);
amayra
20th November 2021, 23:13
https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works/
this look like new repo for L-SMASH
kedautinh12
20th November 2021, 23:25
https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works/
this look like new repo for L-SMASH
Your only development for Avisynth. Here only development for Vapoursynth
https://github.com/AkarinVS/L-SMASH-Works/releases
sl1pkn07
21st November 2021, 19:43
Your only development for Avisynth.
not at all. is dual interface
kedautinh12
21st November 2021, 21:10
not at all. is dual interface
Dual but his link don't development for Vapoursynth anymore. And my link don't development for Avisynth anymore
asarian
17th December 2021, 04:26
Every year I'm dealing with the same installation issues:
File "src\cython\vapoursynth.pyx", line 2833, in vapoursynth._vpy_evaluate
File "f:\jobs\interB.vpy", line 4, in <module>
core = vs.get_core ()
AttributeError: module 'vapoursynth' has no attribute 'get_core'
It only works on the Python prompt:
Python 3.9.9 (tags/v3.9.9:ccb0e6a, Nov 15 2021, 18:08:50) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> from vapoursynth import core
>>> print(core.version())
VapourSynth Video Processing Library
Copyright (c) 2012-2021 Fredrik Mellbin
Core R57
API R4.0
API R3.6
What is going wrong here?!
EDIT:
I changed to this "core = vs.core ()". Appparently the powers that be decided to mess with the API. Fine, but now I get this:
Traceback (most recent call last):
File "src\cython\vapoursynth.pyx", line 2832, in vapoursynth._vpy_evaluate
File "src\cython\vapoursynth.pyx", line 2833, in vapoursynth._vpy_evaluate
File "f:\jobs\interB.vpy", line 4, in <module>
core = vs.core ()
TypeError: 'vapoursynth._CoreProxy' object is not callable
Or without the parentheses, just "Property read unsuccessful due to missing key but no error output: _SceneChangePrev"
poisondeathray
17th December 2021, 04:52
Every year I'm dealing with the same installation issues:
File "src\cython\vapoursynth.pyx", line 2833, in vapoursynth._vpy_evaluate
File "f:\jobs\interB.vpy", line 4, in <module>
core = vs.get_core ()
AttributeError: module 'vapoursynth' has no attribute 'get_core'
Now it's
core = vs.core
instead of
core = vs.get_core()
asarian
17th December 2021, 04:59
Now it's
core = vs.core
instead of
core = vs.get_core()
Thanks. I noticed that yes, but it throws a weird error about _SceneChangePrev (see above).
EDIT: Updated a zillion filters, and now all is good again. :)
Selur
1st January 2022, 18:09
I got the following script:
# Imports
import os
import sys
import ctypes
# Loading Support Files
Dllref = ctypes.windll.LoadLibrary("I:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll")
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# Import scripts folder
scriptPath = 'I:/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Loading Plugins
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/EEDI3m.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/vsznedi3.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/libmvtools.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/temporalsoften.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/scenechange.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/MiscFilter/MiscFilters/MiscFilters.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/SourceFilter/DGDecNV/DGDecodeNV.dll")
# Import scripts
import havsfunc
# source: 'C:\Users\Selur\Desktop\cnpolandecpnextbumpereliotkid.mp4'
# current color space: YUV420P8, bit depth: 8, resolution: 640x480, fps: 25, color matrix: 470bg, yuv luminance scale: limited, scanorder: bottom field first
# Loading C:\Users\Selur\Desktop\cnpolandecpnextbumpereliotkid.mp4 using DGSource
clip = core.dgdecodenv.DGSource("E:/Temp/mp4_7121ca84898db5944d8e11d671f2de4e_853323747.dgi",fieldop=2)
# making sure input color matrix is set as 470bg
clip = core.resize.Bicubic(clip, matrix_in_s="470bg",range_s="limited")
# making sure frame rate is set to 25
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
clip = core.fmtc.resample(clip=clip, kernel="spline16", w=320, h=240, interlaced=True, interlacedd=True)
# setting field order to what QTGMC should assume (bottom field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=1)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=False) # new fps: 25
# make sure content is preceived as frame based
clip = core.std.SetFieldBased(clip, 0)
clip = clip[::2]
# adjusting output color from: YUV420P16 to YUV420P8 for x264Model
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, range_s="limited")
# set output frame rate to 25.000fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# Output
clip.set_output()
which loads fine.
Trying to load the script inside another script:
# Imports
from importlib.machinery import SourceFileLoader
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# source: 'C:\Users\Selur\Desktop\small.vpy'
# current color space: YUV420P8, bit depth: 8, resolution: 320x240, fps: 25, color matrix: 470bg, yuv luminance scale: full, scanorder: progressive
# Loading C:\Users\Selur\Desktop\small.vpy
SourceFileLoader('clip', 'C:/Users/Selur/Desktop/small.vpy').load_module()
clip = vs.get_output()
# making sure input color matrix is set as 470bg
clip = core.resize.Bicubic(clip, matrix_in_s="470bg",range_s="full")
# making sure frame rate is set to 25.000
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# Setting color range to PC (full) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=0)
# set output frame rate to 25.000fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# Output
clip.set_output()
I get;
Failed to evaluate the script:
Python exception: Bicubic: argument clip was passed an unsupported type (expected vnode compatible type but got NoneType)
I used the above back wit API3 and there iirc it worked fine. (https://forum.doom9.org/showthread.php?t=175098)
My guess is that something changed in API4 which I'm not aware of.
-> Does anyone know how to load one script inside another ?
Cu Selur
quietvoid
1st January 2022, 20:15
I think it's because you're using the parent script's vs module (which uses another core?).
This works for both API3/API4 compatibility:
output = SourceFileLoader('script', filepath).load_module().vs.get_output()
try:
if isinstance(output, vs.VideoOutputTuple):
clip = output.clip
else:
clip = output
except AttributeError:
clip = output
Because API4 is returning a clip + alpha tuple.
_Al_
1st January 2022, 21:22
To get clips fro vapoursynth scripts you can use this:
import vapoursynth as vs
from vapoursynth import core
from importlib.machinery import SourceFileLoader
from pathlib import Path
API4 = vs.__api_version__.api_major >= 4
class NoClipError(Exception):
pass
def vs_Source(script_path, wanted_output=None, **kwargs):
'''if no wanted_output is passed it returns first available'''
vs.clear_outputs()
vs_found_outputs = list(SourceFileLoader('script', script_path).load_module().vs.get_outputs().keys())
if not vs_found_outputs:
vs_output_index = wanted_output
raise NoClipError(f'No output found in "{Path(script_path).name}", clip.set_output() needs to be added to the script')
if wanted_output is None:
first_output = next(iter(vs.get_outputs()))
clip = vs.get_output(first_output)[0] if API4 else vs.get_output(first_output)
vs_output_index = first_output
else:
try:
clip = vs.get_output(wanted_output)[0] if API4 else vs.get_output(wanted_output)
except KeyError:
raise NoClipError(f'Output index {wanted_output} not found in "{Path(script_path).name}"')
vs_output_index = wanted_output
#optional, writing output index and all available outputs to clips prop
if API4:
clip = clip.std.SetFrameProps(vs_found_outputs=vs_found_outputs)
clip = clip.std.SetFrameProps(vs_output_index=vs_output_index)
else:
clip = clip.std.SetFrameProp(prop="vs_found_outputs", data=','.join(list(map(str,vs_found_outputs))))
clip = clip.std.SetFrameProp(prop="vs_output_index", intval=vs_output_index)
return clip
script_path = 'C:/Users/Selur/Desktop/small.vpy'
clip = vs_Source(script_path)
because of API4 changes (vs.get_outputs(), f.get_read_array(), SetFrameProps(allows to store a list now, perhaps other python objects), it is a good idea to have on top of script boolean what API is used and then split action, vs.get_outputs() was mentioned, then frame array example:
if API4: planes =[f[i] for i in range(f.format.num_planes)]
else: planes =[f.get_read_array(i) for i in range(f.format.num_planes)]
Selur
2nd January 2022, 09:12
Thanks! That works fine, since I only use API4 I'll stick with quietvvoids solution. :)
Cu Selur
ChaosKing
2nd January 2022, 12:52
There's an api3-api4 bridge now for older VS versions.
Suppose you are stuck with VS R54, but you want to use a video plugin filter.dll that only has api4 support.
You can download the released api3.dll and save it as filter.api3.dll along side with filter.dll into VS plugins directory.
And then you should be able to use the filter in api3 VS as usual.
https://github.com/AmusementClub/vs-api3/releases
_Al_
5th January 2022, 01:41
Thanks! That works fine, since I only use API4 I'll stick with quietvvoids solution. :)
Cu Selur
Yes, like that, clip output must be set always to zero, or as a default clip.set_output().
If it is an unknown script,
-video output could be put in a different index, or as happens all the time to me, actually forgetting to set output, so it should take care of that , not to crash python.
-check if it is audio actually, not video,
Is there a way to figure out video-audio pairing from outputs, or can user "mark" it somehow that an audio output matches what video output?
There should be something to mark those outputs as a pair. Is there something like that?
So far for example there could be output like this(2 video outputs and one audio):
clip.set_output(0)
audio.set_output(1)
clip2.set_output(2)
>>>print(vs.get_outputs())
0: VideoOutputTuple(clip=<vapoursynth.VideoNode object at 0x0000021CC20F4940>, alpha=None, alt_output=0),
1: <vapoursynth.AudioNode object at 0x0000021CC20F49C0>,
2: VideoOutputTuple(clip=<vapoursynth.VideoNode object at 0x0000021CC20F4940>, alpha=None, alt_output=0)}
Or is there going to be a consensus to always interleave video and audio outputs? That's arbitrary though not safe way to handle unknown script. Some kind of info binding might be helpful.
DJATOM
5th January 2022, 15:48
> Or is there going to be a consensus to always interleave video and audio outputs?
There is no interleaving in nodes, they are separate objects and you have to query data on every node independently. However if you asking for automation of stuff, there's 2 possible solutions that coming onto my mind:
1) assume node 0 is video and node 1 is audio (that actually used in avfs)
2) probe every node until reach 1 video and 1 audio, discard further evaluation
_Al_
9th January 2022, 00:16
ok, I guess it is not important or it could be worked with because an individual works with it, it is not shared, like chopping video etc.
I'd like to correct script from above to pull a VideoNode output from script only, not AudioNodes, which I forgot about:
class NoClipError(Exception):
pass
API4 = vs.__api_version__.api_major >= 4
def vs_Source(script_path, wanted_output_index=None, **kwargs):
'''
loads vapoursynth vs.VideoNode outputs from vapoursynth script,
if wanted_output_index (int) is not passed, it gets first available vs.VideoNode if any
vs.AudioNodes are ignored
'''
vs.clear_outputs()
SourceFileLoader('script', script_path).load_module()
if API4: instance = vs.VideoOutputTuple
else: instance = vs.VideoNode
video_output_indexes = [index for index, output in vs.get_outputs().items() if isinstance(output, instance)]
if not video_output_indexes:
raise NoClipError(f'No video output found in "{Path(script_path).name}", vnode.set_output() needs to be added to the script')
if wanted_output_index is None:
index = video_output_indexes[0]
else:
if wanted_output_index not in video_output_indexes:
raise NoClipError(f'Wanted video output index: {wanted_output_index} not found in "{Path(script_path).name}" or index is not a video output')
index = wanted_output_index
return vs.get_output(index)[0] if API4 else vs.get_output(index)
clip = vs_Source("some_vapoursynth_script.vpy")
qyot27
9th January 2022, 05:25
Is R65 broken somehow? At first I blamed Windows 11's new termimal for the very slow throughput (slow pipe transfer?), but nope, even using ffmepeg with -vapoursynth, the process is extremely slow, using CPU for only like 25%. Both QTGMC and MCTemporalDenoise seem to grind to a near halt. All on my new i9 12900K. This used to go blistering fast, even on my old 6700K.
Here's what I do (see below). It's almost as if multi-threading is broken for these two functions (it isn't, but appears to work exceedngly inefficient). This is 4K material, btw.
import vapoursynth as vs
import havsfunc as haf
core = vs.core
core.max_cache_size = 65535
vid = core.dgdecodenv.DGSource (r'c:\jobs\am.dgi', ct=44, cb=44, cl=0, cr=0)
vid = haf.QTGMC (vid, InputType=1, Preset="Very Slow", TR2=3, EdiQual=2, EZDenoise=0.5, NoisePreset="Slower", TFF=True, Denoiser="KNLMeansCL")
vid = haf.MCTemporalDenoise (vid, settings="very low", stabilize=True)
vid = core.neo_f3kdb.Deband (vid, preset="veryhigh", dither_algo=2)
vid = core.std.AddBorders (clip=vid, left=0, right=0, top=44, bottom=44)
vid.set_output ()
Love to learn what's going on.
And is it using only the Performance cores, or is it getting confused and either only using the Efficiency cores, or mixing up the two and throwing tasks to both types, which will bottleneck the P-cores to whatever speed the E-cores are going at?
LigH
9th January 2022, 07:55
Try https://frupic.frubar.net as simple image hoster.
lewyturn
15th January 2022, 06:23
How to use "std.SplitPlanes(vnode clip)'", I can't find an example, can anyone give me an example?
poisondeathray
15th January 2022, 06:30
How to use "std.SplitPlanes(vnode clip)'", I can't find an example, can anyone give me an example?
e.g for YUV clip, . Y plane would be [0], U plane would be [1], V would be [2] ; similar for RGB (0,1,2)
s = core.std.SplitPlanes(clip)
s[0].set_output() #output Y plane
Jukus
15th January 2022, 19:42
I'm trying to get QTGMC to work on Debian, I installed everything need from http://deb-multimedia.org/dists/stable/main/binary-amd64/ and separately the scripts, I get this error:
Failed to evaluate the script:
Python exception: znedi3: error reading weights
Traceback (most recent call last):
File "vapoursynth.pyx", line 2242, in vapoursynth.vpy_evaluateScript
File "vapoursynth.pyx", line 2243, in vapoursynth.vpy_evaluateScript
File "/usr/local/lib/python3.9/dist-packages/havsfunc.py", line 1314, in QTGMC
edi1 = QTGMC_Interpolate(ediInput, InputType, EdiMode, NNSize, NNeurons, EdiQual, EdiMaxD, pscrn, int16_prescreener, int16_predictor, exp, alpha, beta, gamma, nrad, vcheck,
File "/usr/local/lib/python3.9/dist-packages/havsfunc.py", line 1595, in QTGMC_Interpolate
interp = nnedi3(Input, field=field, planes=planes)
File "vapoursynth.pyx", line 2067, in vapoursynth.Function.__call__
vapoursynth.Error: znedi3: error reading weights
What to do?
poisondeathray
15th January 2022, 19:54
I'm trying to get QTGMC to work on Debian, I installed everything need from http://deb-multimedia.org/dists/stable/main/binary-amd64/ and separately the scripts, I get this error:
[CODE]Failed to evaluate the script:
Python exception: znedi3: error reading weights
does the package include nnedi3_weights.bin ?
https://github.com/dubhater/vapoursynth-nnedi3/blob/v6/src/nnedi3_weights.bin
Jukus
15th January 2022, 20:02
does the package include nnedi3_weights.bin ?
https://github.com/dubhater/vapoursynth-nnedi3/blob/v6/src/nnedi3_weights.bin
Yes
/usr/share/nnedi3/nnedi3_weights.bin
Jukus
16th January 2022, 17:59
Need to move nnedi3_weights.bin to
/usr/lib/x86_64-linux-gnu/vapoursynth/
Anyway, something is very bad, before that I used everything new on Arch from AUR and the performance was 2 times better
mastrboy
16th January 2022, 20:47
Could someone help explain how trim and slice works in vapoursynth?
I am struggling converting a simple avisynth script where I replace a segment of a clip with some frames from a different clip and are unable to get it to work in vapoursynth.
video_a = core.dgdecodenv.DGSource(f"E:\video_a.dgi")
video_b = core.dgdecodenv.DGSource(f"E:\video_b.dgi")
video_b = video_b[12:2156] # 2156 - 12 = 2144 frames
#Neither of the following works at all in vapoursynth, I can't figure out how to reference "end of clip/last frame" in vapoursynth trim...
video = core.std.Trim(video_a,0,5298) + video_b + core.std.Trim(video_a,7444,-1)
video = core.std.Trim(video_a,0,5298) + video_b + core.std.Trim(video_a,7444,0)
#The following returns a video, but returns fewer frames than expected (7443 - 5299 = 2144 frames):
video = video_a[0:5298] + video_b + video_a[7444:-1]
Original clip has 34311 frames, but using vapoursynth slice the returned clip only has 34308.
So in python/vapoursynth either 1+1 does not equal 2 or I have forgotten how to do simple math...
ChaosKing
16th January 2022, 20:50
http://www.vapoursynth.com/doc/pythonreference.html#slicing-and-other-syntactic-sugar
clip = clip[5:11] <=> clip = core.std.Trim(clip, first=5, last=10)
mastrboy
16th January 2022, 21:16
http://www.vapoursynth.com/doc/pythonreference.html#slicing-and-other-syntactic-sugar
clip = clip[5:11] <=> clip = core.std.Trim(clip, first=5, last=10)
Wait... You are telling me that the code for slice subtracts 1 for the second argument? What exactly is the purpose for that?
I would then absolutely prefer to just use Trim rather than remembering that -1 stuff, but does anyone know how to reference the last frame in Trim like slice does with "-1" or avisynth does with trim(10,0)?
ChaosKing
16th January 2022, 21:22
(untested) I think it's just std.Trim(10)
mastrboy
16th January 2022, 21:54
(untested) I think it's just std.Trim(10)
Thanks, that worked, and I feel like an idiot for not testing it without the second argument :D
It's a lot better than the "solution" I found in my own: core.std.Trim(video,10,video.num_frames - 1)
Overdrive80
16th January 2022, 22:11
Hi, folks.
Could somebody help me with vapoursynth?
It's been a while since I left the world of publishing but recently I took up a project that I would like to have ready for when my son is born. The fact is that I wanted to install vapoursynth and what used to work for me now doesn't.
I have checked the script and VSEdit says it is correct. The video is fine because I had to install AVS+ and it loads without any problems.
My system is: Windows 11 x64
Python installed: 3.9.9 and 3.10.1 (use VSC)
Vapoursynth: R57
Code: from vapoursynth import core
import vapoursynth as vs
core = vs.core
#video = core.ffms2.Source(source=r"C:\xxx\Movie.mkv") #,format=vs.YUV420P8)
video = core.lsmas.LWLibavSource(r"C:\xxx\Movie.mkv", format=vs.YUV420P8)
video.set_output()
Problem: Error forming pixmap from frame. Expected format CompatBGR32. Instead got 'YUV420P8'.
I have also tried VSEdit2 and when previewing the program it closes.
https://i.postimg.cc/qgxSHFKQ/Captura-de-pantalla-2022-01-16-220433.png (https://postimg.cc/qgxSHFKQ)
Thanks in advance.
poisondeathray
16th January 2022, 22:27
Overdrive80 - are you using vsedit mod for API4 and r57 ?
https://github.com/YomikoR/VapourSynth-Editor/releases
Overdrive80
17th January 2022, 01:49
@Poison
Nop, for VSEditor was using https://bitbucket.org/mystery_keeper/vapoursynth-editor/downloads/ and for V2 https://bitbucket.org/gundamftw/vapoursynth-editor-2/downloads/
Then, do you think that could be for VSeditor??
EDIT: I have tried the version that you post and is the same result, close of application.
_Al_
17th January 2022, 05:53
Wait... You are telling me that the code for slice subtracts 1 for the second argument? What exactly is the purpose for that?
As soon ,as there is a programming involved, it just works. Indexing is always from zero. So for example you need to slice an interval and you know it starts on 10th frame including and length is 5 frames, so it is:
frame=10
length = 5
clip[frame:frame+length]
If both frames were included you'd need to use clip[frame:frame+length-1]. Imagine more intervals, easily turning it into nightmare as well.
Slicing is still better, as long as you remember this rule, because, you do not need to specify position if slicing from beggining:
clip[:100] #slicing first 100 frames (you see again, you want just first 100 frames, you do this and not confusing: clip[:100-1]
or more importandly, better if slicing from a middle to the end:
clip[10:] # using 10th frame index to the end
so
clip = clip.std.Trim(first=10, last=clip.num_frames-1)
is the same as:
clip = clip[10:]
If using keyword arguments always and not just:
clip = clip.std.Trim(10, clip.num_frames-1)
is better way, because above line is not readable much. Avisynth users do that all the time, using lines like: filter(3,56, -1, 45, 1000, 0) is just a nightmare to read. :-)
Prone to make mistakes.
Overdrive80
17th January 2022, 13:15
@poisondeathray
If I trying open script with vdub2 I get this message: "AVI import filter error: (Unknown) (80040154)"
https://i.postimg.cc/TLCq2B6v/Captura-de-pantalla-2022-01-17-131343.png (https://postimg.cc/TLCq2B6v)
EDIT: Solved. I had uninstall all and I had followed the instructions of https://www.l33tmeatwad.com/vapoursynth101/software-setup, with sames versions of files (python and vapoursynth). I could investigate what caused the problem, whether VS or Python
~ VEGETA ~
27th January 2022, 06:09
when I try running a simple scrip which has hafsfunc in it (and other wrappers) it gives me that there is no module named packaging. I installed python 3.9.7 for all users as well as vapoursynth 57.
plus, vs editor 2 stops working right after i press preview... while vs edit 1 works, but it doesn't show the output..
Julek
28th January 2022, 14:24
when I try running a simple scrip which has hafsfunc in it (and other wrappers) it gives me that there is no module named packaging. I installed python 3.9.7 for all users as well as vapoursynth 57.
plus, vs editor 2 stops working right after i press preview... while vs edit 1 works, but it doesn't show the output..
You need LibP2P library for vsedit 2.
Jukus
28th January 2022, 17:54
Need to move nnedi3_weights.bin to
/usr/lib/x86_64-linux-gnu/vapoursynth/
Anyway, something is very bad, before that I used everything new on Arch from AUR and the performance was 2 times better
I built everything new from git, updated proprietary Nvidia drivers from backports and still performance is almost 2 times less on Debian than it was on Arch, it looks magical.
~ VEGETA ~
28th January 2022, 21:45
You need LibP2P library for vsedit 2.
it is installed, everything should be fine but still doesn't work.
I read that it doesn't work after vapoursynth 54.
can you verify?
DJATOM
29th January 2022, 16:29
Try to load explicitly via core.std.LoadPlugin. That way you will see an error if plugin fails to load.
~ VEGETA ~
29th January 2022, 19:38
Try to load explicitly via core.std.LoadPlugin. That way you will see an error if plugin fails to load.
well, now it worked fine by itself. i just re-installed it via the vsrepo after uninstalling it.
my problem now is with vsedit 2 not working
Selur
9th February 2022, 10:19
Small question: Is there a deflicker filter for Vapoursynth? (as alternative to http://avisynth.nl/index.php/DeFlicker or https://github.com/Asd-g/ReduceFlicker on AviSynth)
found https://github.com/VFR-maniac/VapourSynth-ReduceFlicker, but sadly no binaries for it.
kedautinh12
9th February 2022, 11:24
Here:
https://github.com/AmusementClub/ReduceFlicker
Selur
9th February 2022, 11:34
Nice! Thanks! :)
Cu Selur
ChaosKing
9th February 2022, 12:11
Also available via vsrepo.
Btw you can also quickly lookup vsrepo plugins online via https://vsdb.top/vsrepogui
Selur
9th February 2022, 12:21
Thanks :)
Jukus
9th February 2022, 13:24
What can do if the DVD has video in two angles? If just use d2vwitch then get video and audio where 2 seconds of video comes from one angle and then the same action from the other angle.
Selur
9th February 2022, 14:55
Use PGCDemux or similar to extract the content you want.
There is no Vapoursynth filter (neither is there one for Avisynth) which properly parses DVD structures in details.
Boulder
9th February 2022, 16:38
Why not use the good old DGIndex to create the d2v file.
Jukus
9th February 2022, 17:50
I don't feel like using Windows programs even under Wine
Thanks for the answers
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.