Selur's Little Message Board

Full Version: MacOS Problem
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hello,
I successfully installed Hybrid on my MacBook Pro M5, but I am unable to perform the video preview process. I have had issues with VSPipe, even though I installed it using brew.
Despite being unable to preview, I was able to start the rendering process because I did not select a model from the frame section. Could you assist me?
Assist you, how?
Is Vapoursynth added to the PATH like the README.txt stated?
Hybrid does come with all the Vapoursynt filters (Hybrid.app/Contents/MacOS/vsfilters) I could find.
I can't really say whether those filters work on m5, but I expect them to.
It also comes with the scripts Hybrid uses (Hybrid.app/Contents/MacOS/vsscripts).
Does the Vapoursynth Preview show an error, if it does what error?
Where is the debug output? (seems like you ignored the notice to read the sticky,.. [INFO] Infos needed to fix&reproduce bugs,..)
If you want to use Vapoursynth, make sure the Vapoursynth Preview works.

Cu Selur
I am experiencing a similar issue to the original poster. Smile

What Hybrid version did I use?
Hybrid version 2026.03.21.1 (64bit)

What is used operating system?
macOS Tahoe (26.4.1) on Apple Silicon M5.

What did happen? If an error message came up what did it exactly say?
My goal was to deinterlace a .mov video using QTGMC and output it in ProRes format without audio. When I tried to run the job, the process crashed immediately during the video encoding stage (video sub-job).

Steps:
  1. I followed the installation instructions exactly as described in the
    readme.txt file provided in this folder: https://drive.google.com/drive/folders/1...drive_link
  2. I configured my paths as described in your guide here: https://forum.selur.net/thread-3.html
  3. Loaded a .mov file. + the output path and file.
  4. Set Filtering -> VapourSynth -> QTGMC enabled.
  5. Set Video Handling to ProRes and disabled audio export.
  6. Added to Queue and started the job.
  7. The job crashes instantly.

Other:
I also noticed that the video preview in VapourSynth is not working (screenshot attached).
I am unsure what the correct 'official' path is that needs to be configured in the VapourSynth Editor settings to make it function correctly on this system.
Hybrid uses and should come with vsViewer,...

The Vapoursynth script:
Code:
# 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,...
Code:
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,.
Thank you for your response. Could you please clarify exactly where the GPU setting should be disabled? I am unable to find this option under the Filtering -> (De-)Interlace/Telecine tab, for instance.
Sorry, forget that.
On MacOS the only nnedi variant available was nnnedi3cl, which is why GPU (in the QTGMC settings) is active, but disabled.
Hybrid does ship with it:
Code:
selur@Mac-mini-von-Georg ~ % cd Hybrid/Hybrid.app/Contents/MacOS/vsfilters/ selur@Mac-mini-von-Georg vsfilters % ls -lah total 100256 drwxr-xr-x 57 selur staff 1,8K 21 März 14:42 . drwxr-xr-x@ 42 selur staff 1,3K 9 Apr. 15:13 .. -rwxr-xr-x@ 1 selur staff 17M 21 März 14:42 bestsource.dylib drwxr-xr-x 7 selur staff 224B 15 Feb. 2025 GLSL drwxr-xr-x 71 selur staff 2,2K 15 Feb. 2025 GLSL-Resizers -rw-r--r--@ 1 selur staff 604K 21 März 14:42 libadaptivegrain_rs.dylib -rwxr-xr-x@ 1 selur staff 51K 21 März 14:42 libaddgrain.dylib -rwxr-xr-x@ 1 selur staff 85K 21 März 14:42 libaddnoise.dylib -rwxr-xr-x@ 1 selur staff 83K 21 März 14:42 libawarpsharp2.dylib -rwxr-xr-x@ 1 selur staff 67K 21 März 14:42 libbilateral.dylib -rwxr-xr-x@ 1 selur staff 67K 21 März 14:42 libbwdif.dylib -rwxr-xr-x@ 1 selur staff 51K 21 März 14:42 libcas.dylib -rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libcnr2.dylib -rwxr-xr-x@ 1 selur staff 81K 21 März 14:42 libcolorbars.dylib -rwxr-xr-x@ 1 selur staff 102K 21 März 14:42 libctmf.dylib -rwxr-xr-x@ 1 selur staff 70K 21 März 14:42 libcurve.dylib -rwxr-xr-x@ 1 selur staff 1,3M 21 März 14:42 libdctfilter.dylib -rwxr-xr-x@ 1 selur staff 52K 21 März 14:42 libdeblock.dylib -rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libdecross.dylib -rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libdedot.dylib -rwxr-xr-x@ 1 selur staff 164K 21 März 14:42 libdegrainmedian.dylib -rwxr-xr-x@ 1 selur staff 1,4M 21 März 14:42 libdfttest.dylib -rwxr-xr-x@ 1 selur staff 120K 21 März 14:42 libeedi2.dylib -rw-r--r-- 1 selur staff 370K 8 Feb. 2025 libEEDI3_static.a -rwxr-xr-x@ 1 selur staff 106K 21 März 14:42 libeedi3m.dylib -rwxr-xr-x@ 1 selur staff 1,5M 21 März 14:42 libfft3dfilter.dylib -rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libfieldhint.dylib -rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libfillborders.dylib -rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libfluxsmooth.dylib -rwxr-xr-x@ 1 selur staff 4,3M 21 März 14:42 libfmtconv.dylib -rwxr-xr-x@ 1 selur staff 147K 21 März 14:42 libfrfun7.dylib -rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libhistogram.dylib -rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libhqdn3d.dylib -rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libminideen.dylib -rwxr-xr-x@ 1 selur staff 52K 21 März 14:42 libmiscfilters.dylib -rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libmotionmask.dylib -rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libmsmoosh.dylib -rwxr-xr-x@ 1 selur staff 4,0M 21 März 14:42 libmvtools.dylib -rwxr-xr-x@ 1 selur staff 88K 21 März 14:42 libnnedi3.dylib -rwxr-xr-x@ 1 selur staff 56K 21 März 14:42 libnoisegen.dylib -rwxr-xr-x@ 1 selur staff 108K 21 März 14:42 libqrcodesource.dylib -rwxr-xr-x@ 1 selur staff 68K 21 März 14:42 libsangnom.dylib -rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libssiq.dylib -rwxr-xr-x@ 1 selur staff 115K 21 März 14:42 libtbilateral.dylib -rwxr-xr-x@ 1 selur staff 106K 21 März 14:42 libtcanny.dylib -rwxr-xr-x@ 1 selur staff 82K 21 März 14:42 libtcomb.dylib -rwxr-xr-x@ 1 selur staff 68K 21 März 14:42 libtedgemask.dylib -rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libtemporalmedian.dylib -rwxr-xr-x@ 1 selur staff 380K 21 März 14:42 libtivtc.dylib -rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libtonemap.dylib -rwxr-xr-x@ 1 selur staff 68K 21 März 14:42 libttempsmooth.dylib -rwxr-xr-x@ 1 selur staff 66K 21 März 14:42 libvivtc.dylib -rwxr-xr-x@ 1 selur staff 1,4M 21 März 14:42 libvszip.dylib -rwxr-xr-x@ 1 selur staff 1,4M 21 März 14:42 libzsmooth.dylib drwxr-xr-x 78 selur staff 2,4K 24 Nov. 2024 models -rw-r--r-- 1 selur staff 13M 15 Nov. 2024 nnedi3_weights.bin -rwxr-xr-x@ 1 selur staff 134K 21 März 14:42 vscube.dylib

and it should be automatically used.
Not sure why it does not on your system, does work fine here:
Code:
# Imports import sys import os import vapoursynth as vs # getting Vapoursynth core core = vs.core core.std.LoadAllPlugins('/Users/selur/workspace/Hybrid/Hybrid.app/Contents/MacOS/vsfilters') # Import scripts folder scriptPath = '/Users/selur/workspace/Hybrid/Hybrid.app/Contents/MacOS/vsscripts' sys.path.insert(0, os.path.abspath(scriptPath)) # Import scripts import qtgmc import validate # Source: '/Users/selur/Desktop/Randy Hansen - Voodoo Chile.mp4' # Current color space: YUV420P8, bit depth: 8, resolution: 1280x720, frame rate: 29.97fps, scanorder: top field first, yuv luminance scale: limited, matrix: 709, transfer: bt.709, primaries: bt.709, format: AVC # Loading '/Users/selur/Desktop/Randy Hansen - Voodoo Chile.mp4' using BestSource clip = core.bs.VideoSource(source="/Users/selur/Desktop/Randy Hansen - Voodoo Chile.mp4", cachepath="/Users/selur/tmp/Randy Hansen - Voodoo Chile_bestSource", track=0) 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. 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 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="Fast", 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 # output clip.set_output()

I'm not at hoem today so, I can't test on my system atm. will try to do some testing tomorrow after work and report back.

Cu Selur
If you open vsViewer through Tools->vsViewer and there to go to Edit->Settings->Paths.
Set:
  • 'VapourSynth library search paths' to '/opt/homebrew/lib'
  • 'VapourSynth plugins path' to the path of Hybrid.app/Contents/MacOS/vsfilter'
and let me know whether that fixes the preview.

Cu Selur
The paths are now set up according to the screenshot:
[attachment=3580]

When I try to do a preview, vsviewer shows following errors:
[attachment=3581]

[attachment=3582]
Quote: "Failed to open the file /private/var/folders/3y/0t3zllln2t14ts4_q2hfzl6w0000gn/T/tempPreviewVapoursynthFile16_17_58_639.vpy.",
MacOS using some 'hidden' folders for temp,... => manually set a normal path for the Temp path in Hybrid should help.


Quote:Additionally, I noticed that Hybrid 2026.03.21.1 creates folders directly under my home folder on Mac, i.e. /Users/myusername/
Correct. Unless a misc.ini with a settings-overwrite is given, Hybrid needs to save it's settings, which it will do under ~/.hybrid.

Quote:I wonder what could be causing the new problem (cache??) ?
I wonder what 'cache' problem you are referring to.

Cu Selur
Sorry, I managed to update my earlier post before you replied, since I got the issues fixed in vsViewer and kind of reset the situation. Above are my observations about the errors when I added the paths you suggested to the vsViewer paths section.
Pages: 1 2