horrible over sharpened during capture, tons of artifacts, some of the frames are probably best replaced with interpolations,... content probably was once interlaced, got deinterlaced without fixing the fields first,... at the beginning the odd fields (now frames) all have problems,.. source also got wrongly resized.
=> Is this the 'original' version you have or did you already mess with it? (if you captured this, you might want to adjust your capturing settings,..)
Something like this: (SelectEvery, + rotated QTGMC + SpotLess + RemoveDirtMC + RIFE)
Code:
# Imports
import ctypes
import sys
import os
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# Limit frame cache to 48449MB
core.max_cache_size = 48449
# Import scripts folder
scriptPath = 'F:/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Loading Support Files
Dllref = ctypes.windll.LoadLibrary("F:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll")
# loading plugins
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/FrameFilter/RIFE/librife.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/RemoveDirt/RemoveDirt.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/NNEDI3CL.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/libeedi3vk.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/addnoise.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/mvtools.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/fmtconv.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/akarin/libakarin.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/zsmooth/zsmooth.dll")
core.std.LoadPlugin(path="F:/Hybrid/64bit/Vapoursynth/Lib/site-packages/vapoursynth/plugins2/libbestsource.dll")
# Import scripts
import misc
import removeDirt
import SpotLess
import qtgmc
import validate
# Source: 'C:\Users\Selur\Desktop\big fix.mov'
# clip current meta; color space: YUV444P12, bit depth: 12, resolution: 720x576, fps: 50, color matrix: 709, color primaries: Unspecific, color transfer: BT.709, yuv luminance scale: limited, scanorder: progressive, full height: true (Source)
# Loading 'C:\Users\Selur\Desktop\big fix.mov' using BestSource
clip = core.bs.VideoSource(source="C:/Users/Selur/Desktop/big fix.mov", cachepath="J:/tmp/big fix_bestSource", track=0, hwdevice="opencl", fpsnum=50)
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_BT470_BG), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT470_BG)
# setting color range to TV (limited) range.
prop_name = '_Range' if core.core_version.release_major >= 74 else '_ColorRange'
clip = core.std.SetFrameProps(clip=clip, **{prop_name: vs.RANGE_LIMITED})
# making sure frame rate is set to 50fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=50, fpsden=1)
# making sure the detected scan type is set (detected: progressive)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # scan type: progressive
# adjusting frame with SelectEvery
clip = core.std.SelectEvery(clip, cycle=2, offsets=[0]) # 25
clip = core.std.AssumeFPS(clip, fpsnum=25, fpsden=1) # new fps: 25
# rotating 90° clock wise for vsQTGMCFilterGimmick
clip = core.std.FlipVertical(clip=clip)
clip = core.std.Transpose(clip=clip)
# Denoising using QTGMC
clip = qtgmc.QTGMC(clip, Preset="Fast", InputType=1, TR2=1, SourceMatch=0, Lossless=0, opencl=True)
# rotating 90° counter clock wise after vsQTGMCFilterGimmick
clip = core.std.FlipHorizontal(clip=clip)
clip = core.std.Transpose(clip=clip)
# Spot removal using SpotLess
clip = SpotLess.SpotLess(clip, radT=3, pel=1, mStart=True, mEnd=True)
# adjusting color space from YUV444P12 to YUV444P8 for vsRemoveDirtMC
clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P8)
# denoising using VsRemoveDirtMC
clip = removeDirt.RemoveDirtMC(clip)
clip = misc.SCDetect(clip=clip,threshold=0.100)
# adjusting color space from YUV444P8 to RGBS for vsRIFE
clip = core.resize.Bicubic(clip=clip, format=vs.RGBS, matrix_in_s="709", range_in_s="limited", range_s="full")
# adjusting frame count&rate with RIFE, target fps: 50fps
clip = core.rife.RIFE(clip, model=58, fps_num=50, fps_den=1, sc=True) # new fps: 50
# adjusting output color from RGBS to YUV420P10 for NVEncModel
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10, matrix_s="709", range_in_s="full", range_s="limited", dither_type="error_diffusion")
# set output frame rate to 50fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=50, fpsden=1)
# output
clip.set_output()