Hybrid uses and should come with vsViewer,...
The Vapoursynth script:
# Imports
import vapoursynth as vs
# getting Vapoursynth core
import sys
import os
core = vs.core
core.std.LoadAllPlugins('/Applications/Hybrid.app/Contents/MacOS/vsfilters')
# Import scripts folder
scriptPath = '/Applications/Hybrid.app/Contents/MacOS/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Import scripts
import qtgmc
import validate
# Source: '/Users/teemu/Desktop/belos.mov'
# Current color space: RGB24, bit depth: 8, resolution: 720x576, frame rate: 25fps, scanorder: top field first, yuv luminance scale: limited, matrix: 470bg, transfer: bt.709, primaries: bt.601 ntsc, format: prores
# Loading '/Users/teemu/Desktop/belos.mov' using BestSource
clip = core.bs.VideoSource(source="/Users/teemu/Desktop/belos.mov", cachepath="/var/folders/3y/0t3zllln2t14ts4_q2hfzl6w0000gn/T/belos_bestSource_SCRIPTID_:_", track=1)
frame = clip.get_frame(0)
# 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)
# making sure frame rate is set to 25fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# making sure the detected scan type is set (detected: top field first)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_TOP) # scan type: top field first
# adjusting color space from RGB24 to YUV444P16 for vsQTGMC
clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P16, matrix_s="470bg", range_in_s="full", range_s="limited", dither_type="error_diffusion") # additional resize to match target color sampling
# Deinterlacing using QTGMC
clip = qtgmc.QTGMC(clip, Preset="Fast", TFF=True, opencl=True) # new fps: 50
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # scan type: progressive
clip = clip[::2] # selecting previously even frames, new fps: 25
# adjusting output color from YUV444P16 to YUV422P10 for ProResModel
clip = core.resize.Bicubic(clip=clip, format=vs.YUV422P10)
# set output frame rate to 25fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# output
clip.set_output()
# script was created by Hybrid 2026.03.21.1
seems fine.
Ahhh,...
AttributeError: No attribute with the name nnedi3cl exists. Did you mistype a plugin namespace or forget to install a plugin?
ahh,... disable the GPU in QTGMC
I thought I bundled nnedi3cl with Hybrid.
/opt/homebrew/lib is the path vsViewer points to here,.