Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Imports
- import vapoursynth as vs
- # getting Vapoursynth core
- import sys
- import os
- core = vs.core
- # Import scripts folder
- scriptPath = 'F:/Hybrid/64bit/vsscripts'
- sys.path.insert(0, os.path.abspath(scriptPath))
- # loading plugins
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/ZSmooth/zsmooth.dll")
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/CTMF/CTMF.dll")
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/libmvtools.dll")
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/vszip.dll")
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/akarin.dll")
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
- core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/SourceFilter/BestSource/BestSource.dll")
- # Import scripts
- import nnedi3_resample
- import smdegrain
- import animate
- import masked
- import validate
- # Source: 'C:\Users\Selur\Desktop\testfile.mp4'
- # Current color space: YUV420P8, bit depth: 8, resolution: 1920x1080, frame rate: 23.976fps, scanorder: progressive, yuv luminance scale: limited, matrix: 709, transfer: bt.709, primaries: bt.709, format: AVC
- # Loading C:\Users\Selur\Desktop\testfile.mp4 using BestSource)
- clip = core.bs.VideoSource(source="C:/Users/Selur/Desktop/testfile.mp4", cachepath="J:/tmp/testfile_bestSource", track=0, hwdevice="opencl")
- frame = clip.get_frame(0)
- # setting color matrix to 709.
- clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT709)
- # setting color transfer (vs.TRANSFER_BT709), if it is not set.
- if validate.transferIsInvalid(clip):
- clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT709)
- # setting color primaries info (to vs.PRIMARIES_BT709), if it is not set.
- if validate.primariesIsInvalid(clip):
- clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT709)
- # setting color range to TV (limited) range.
- clip = core.std.SetFrameProps(clip=clip, _ColorRange=vs.RANGE_LIMITED)
- # making sure frame rate is set to 23.976fps
- clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001)
- # making sure the detected scan type is set (detected: progressive)
- clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
- clip = core.fmtc.resample(clip=clip, w=960, h=480, kernel="cubic", interlaced=False, interlacedd=False) # resizing for 'Gimmick' (vsBasicVSRPPFilter)
- # adjusting color space from YUV420P16 to RGBH for vsBasicVSRPPFilter
- clip = core.resize.Bicubic(clip=clip, format=vs.RGBH, matrix_in_s="709", range_s="limited")
- ## Starting applying 'CartoonEdges' masked filtering for vsBasicVSRPPFilter
- clipMask = clip
- clipMask = core.resize.Bicubic(clip=clipMask, format=vs.YUV444P16, matrix_s="709", range_s="limited")
- clipMask = masked.CartoonEdges(clip=clipMask, low=19, high=255)
- for i in range(2):
- clipMask = core.std.Maximum(clipMask)
- clipMask = core.std.Expr(clipMask, expr=f"x 1.7 *")
- clipMask = core.std.BinarizeMask(clip=clipMask,threshold=6016)
- clipFiltered = clip
- # Quality enhancement using BasicVSR++
- from vsbasicvsrpp import basicvsrpp as BasicVSRPP
- clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.RGBS, range_s="limited")
- def vsBasicVSRPPFilterRegion1(clipFiltered,*args):
- return BasicVSRPP(clip=clipFiltered, model=4)
- end = clipFiltered.num_frames-1
- mapping = [
- (0, end), [vsBasicVSRPPFilterRegion1],
- ]
- clipFiltered = animate.run(clipFiltered, mapping, selection=(480,256,150,100))
- clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.RGBH, range_s="limited", dither_type="error_diffusion")
- clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.RGBS, range_s="limited")
- clipFiltered = core.fmtc.resample(clip=clipFiltered, w=1920, h=1080, kernel="cubic", interlaced=False, interlacedd=False) # undo resizing for 'Gimmick' (vsBasicVSRPPFilter)
- clipMask = core.std.Expr(clipMask, expr=f"x 1.7 *")
- clipMask = core.std.BinarizeMask(clip=clipMask,threshold=6016)
- clip = core.resize.Bicubic(clip=clip, format=vs.RGBS, range_s="limited")
- clipMask = core.resize.Bicubic(clip=clipMask, format=vs.GRAYS, range_s="limited")
- clipMask = core.resize.Spline64(clip=clipMask, width=1920, height=1080)# resize to match filtered dimensions
- clip = core.resize.Spline64(clip=clip, width=1920, height=1080)# resize to match filtered dimensions
- clip = core.std.MaskedMerge(clip, clipFiltered, clipMask) # CartoonEdges
- ## Finished applying 'CartoonEdges' masked filtering for vsBasicVSRPPFilter
- # making sure 0-1 limits are respected
- clip = core.vszip.Limiter(clip=clip, min=[0,0,0], max=[1,1,1])
- # adjusting color space from RGBS to YUV444P16 for vsSMDegrain
- clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P16, matrix_s="709", range_s="limited", dither_type="error_diffusion")
- # removing grain using SMDegrain
- clip = smdegrain.SMDegrain(input=clip, contrasharp=50, interlaced=False, dct=1, opencl=True, device=-1)
- # adjusting output color from: YUV444P16 to YUV420P10 for NVEncModel
- clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10, range_s="limited", dither_type="error_diffusion")
- # set output frame rate to 23.976fps (progressive)
- clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001)
- # output
- clip.set_output()
Advertisement
Add Comment
Please, Sign In to add comment