26.02.2026, 21:34
The Vapoursynth script:
seems fine.
usually indicated there is some problem (probably missing filters)
QTGMC with preset="slow", will prooably use:
1. AddGrain
2. fft3dfilter
3. DFTTest
4. EEDI3m
5. vsznedi3 or another nnedi4 compatible filter
6. libmvtools
7. fmtconv
8. Bwdif
9. akarin.dll (optionally)
10. zsmooth (or RemoveGrain)
=> Does the Vapoursynth Preview work?
I suspect not. It should show where the problem is.
If the Vapoursynth Preview fails, it's highly likely the encoding will fail too.
Cu Selur
# Imports
import vapoursynth as vs
# getting Vapoursynth core
import sys
import os
core = vs.core
# Import scripts folder
scriptPath = '/home/mike/.hybrid/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Import scripts
import qtgmc
import validate
# Source: '/home/mike/Videos/Get Smart s01E14 - Weekend Vampire.mkv'
# Current color space: YUV420P8, bit depth: 8, resolution: 720x480, frame rate: 29.97fps, scanorder: top field first, yuv luminance scale: limited, matrix: 470bg, format: mpeg-2
# Loading '/home/mike/Videos/Get Smart s01E14 - Weekend Vampire.mkvÄ using LWLibavSource
clip = core.lsmas.LWLibavSource(source="/home/mike/Videos/Get Smart s01E14 - Weekend Vampire.mkv", format="YUV420P8", stream_index=0, cache=0, prefer_hw=0)
frame = clip.get_frame(0)
# setting color matrix to 470bg.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT470_BG)
# setting color transfer (vs.TRANSFER_BT601), if it is not set.
if validate.transferIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT601)
# 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.
clip = core.std.SetFrameProps(clip=clip, _ColorRange=vs.RANGE_LIMITED)
# making sure frame rate is set to 29.97fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# 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
# Deinterlacing using QTGMC
clip = qtgmc.QTGMC(clip, Preset="Slow", TFF=True) # new fps: 59.94
# 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: 29.97
# set output frame rate to 29.97fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# output
clip.set_output()
# script was created by Hybrid 2026.02.14.1y4m [error]: bad sequence header magicQTGMC with preset="slow", will prooably use:
1. AddGrain
2. fft3dfilter
3. DFTTest
4. EEDI3m
5. vsznedi3 or another nnedi4 compatible filter
6. libmvtools
7. fmtconv
8. Bwdif
9. akarin.dll (optionally)
10. zsmooth (or RemoveGrain)
=> Does the Vapoursynth Preview work?
I suspect not. It should show where the problem is.
If the Vapoursynth Preview fails, it's highly likely the encoding will fail too.
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.

