Log in

View Full Version : Hybrid: Input -> x264/x265/Xvid/VP8/VP9


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 [78]

Selur
9th June 2025, 15:05
Hybrid itself needs no changes to work with Vapoursynth R72. (works fine here on Windows, Ubuntu Linux and MacOS)

To me, it looks like there is something wrong with the aur package through which you installed bestsource.so and libd2vsource.so, but then it should not work in vsedit too.
If you compiled bestsource.so and libd2vsource yourself, re-compiling might help.
No clue, why the script would work in vsedit and not in vsviewer.
Since I don't use archlinux myself, I can't really comment on it.


Cu Selur

NoX1911
9th June 2025, 15:23
When doing 'ldd Hybrid' there are many libs pulled from hybrid/lib folder. One of these might collide. I've renamed/disabled the folder and Hybrid still loads up (pulling only system libs now) but fails when analyzing video files and aborts ("Found no video or audio data in input"). I will try to selectively inject the shipped libs to see if it leads to something.

Edit: Now it works. 'HybridDebugOutput.txt' showed the culprits. I've removed all libs but these 4 that are needed by hybrids ffmpeg and mplayer bins.
libicudata.so.70
libicuuc.so.70
libudfread.so.0
libxml2.so.2

My local 'libxml2 2.13.5' has this files (so its not picked up by hybrid/ffmpeg):
libxml2 /usr/lib/libxml2.so
libxml2 /usr/lib/libxml2.so.16
libxml2 /usr/lib/libxml2.so.16.0.3

Edit2: A probably easier way is to rename/disable 'ffmpeg' and 'mplayer' in the first place. I guess this is the reason the AUR version just comes with the single 'hybrid' binary. Its probably better to opt-in than opt-out files.

Selur
9th June 2025, 19:15
Yes, the package is only tested for Ubuntu. :)
If someone knows his way around creating .app images, patches for https://github.com/Selur/HybridDeploy are welcome. :)

NoX1911
9th June 2025, 21:56
Your link is 404. Private?

The current deployment method is correct but incomplete. You would need to provide all dependent shared libs (but libc) not just some of them.
Here are three ways to gather all shared libs: Link (https://stackoverflow.com/questions/43063709/how-to-copy-an-executable-with-all-needed-libraries#comment89283269_43063709) (two bash solutions and 'linuxdeploy').
Edit: Another bug: The custom path field to 'd2vwitch' is missing.

$ ldd ffmpeg
linux-vdso.so.1 (0x00007f24ad671000)
libopenal.so.1 => /home/user/opt/hybrid/./lib/libopenal.so.1 (0x00007f24a8b16000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f24ad5fc000)
libxcb-shm.so.0 => /home/user/opt/hybrid/./lib/libxcb-shm.so.0 (0x00007f24ad5f6000)
libxcb-shape.so.0 => /home/user/opt/hybrid/./lib/libxcb-shape.so.0 (0x00007f24ad5f0000)
libxcb-xfixes.so.0 => /home/user/opt/hybrid/./lib/libxcb-xfixes.so.0 (0x00007f24ad5e4000)
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f24a8a2e000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f24a8936000)
libpulse.so.0 => /home/user/opt/hybrid/./lib/libpulse.so.0 (0x00007f24a88e1000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007f24a8891000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f24a87c7000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f24ad5c9000)
libva.so.2 => /home/user/opt/hybrid/./lib/libva.so.2 (0x00007f24a8795000)
libbz2.so.1.0 => /home/user/opt/hybrid/./lib/libbz2.so.1.0 (0x00007f24a8781000)
libxml2.so.2 => /home/user/opt/hybrid/./lib/libxml2.so.2 (0x00007f24a8592000)
liblzma.so.5 => /home/user/opt/hybrid/./lib/liblzma.so.5 (0x00007f24a8565000)
libudfread.so.0 => /home/user/opt/hybrid/./lib/libudfread.so.0 (0x00007f24a8559000)
libmvec.so.1 => /usr/lib/libmvec.so.1 (0x00007f24a8460000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f24a8000000)
libnuma.so.1 => /home/user/opt/hybrid/./lib/libnuma.so.1 (0x00007f24a8450000)
libva-drm.so.2 => /home/user/opt/hybrid/./lib/libva-drm.so.2 (0x00007f24a844a000)
libva-x11.so.2 => /home/user/opt/hybrid/./lib/libva-x11.so.2 (0x00007f24a8441000)
libvdpau.so.1 => /home/user/opt/hybrid/./lib/libvdpau.so.1 (0x00007f24a843a000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f24a82f9000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f24a82ca000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f24a7e10000)
libsndio.so.7 => /home/user/opt/hybrid/./lib/libsndio.so.7 (0x00007f24a82b5000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f24a82b0000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f24a82a8000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f24ad673000)
libpulsecommon-15.99.so => /home/user/opt/hybrid/./lib/libpulsecommon-15.99.so (0x00007f24a7d83000)
libdbus-1.so.3 => /home/user/opt/hybrid/./lib/libdbus-1.so.3 (0x00007f24a7d2f000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f24a7d05000)
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f24a7ccb000)
libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f24a7b9f000)
libbrotlidec.so.1 => /usr/lib/libbrotlidec.so.1 (0x00007f24a8297000)
libicuuc.so.70 => /home/user/opt/hybrid/./lib/libicuuc.so.70 (0x00007f24a7800000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f24a7b88000)
libXext.so.6 => /home/user/opt/hybrid/./lib/libXext.so.6 (0x00007f24a7b71000)
libXfixes.so.3 => /home/user/opt/hybrid/./lib/libXfixes.so.3 (0x00007f24a7b68000)
libbsd.so.0 => /home/user/opt/hybrid/./lib/libbsd.so.0 (0x00007f24a7b4e000)
libsndfile.so.1 => /home/user/opt/hybrid/./lib/libsndfile.so.1 (0x00007f24a7acb000)
libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f24a7ac6000)
libsystemd.so.0 => /home/user/opt/hybrid/./lib/libsystemd.so.0 (0x00007f24a7733000)
libasyncns.so.0 => /home/user/opt/hybrid/./lib/libasyncns.so.0 (0x00007f24a7abd000)
libapparmor.so.1 => /home/user/opt/hybrid/./lib/libapparmor.so.1 (0x00007f24a7aa7000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f24a75dd000)
libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007f24a7a83000)
libbrotlicommon.so.1 => /usr/lib/libbrotlicommon.so.1 (0x00007f24a7a60000)
libicudata.so.70 => /home/user/opt/hybrid/./lib/libicudata.so.70 (0x00007f24a5800000)
libmd.so.0 => /home/user/opt/hybrid/./lib/libmd.so.0 (0x00007f24a7a52000)
libFLAC.so.8 => /home/user/opt/hybrid/./lib/libFLAC.so.8 (0x00007f24a759d000)
libvorbis.so.0 => /home/user/opt/hybrid/./lib/libvorbis.so.0 (0x00007f24a756e000)
libvorbisenc.so.2 => /home/user/opt/hybrid/./lib/libvorbisenc.so.2 (0x00007f24a74c2000)
libopus.so.0 => /home/user/opt/hybrid/./lib/libopus.so.0 (0x00007f24a7463000)
libogg.so.0 => /home/user/opt/hybrid/./lib/libogg.so.0 (0x00007f24a7a44000)
libzstd.so.1 => /home/user/opt/hybrid/./lib/libzstd.so.1 (0x00007f24a572c000)
liblz4.so.1 => /home/user/opt/hybrid/./lib/liblz4.so.1 (0x00007f24a7442000)
libcap.so.2 => /home/user/opt/hybrid/./lib/libcap.so.2 (0x00007f24a7a36000)
libgcrypt.so.20 => /home/user/opt/hybrid/./lib/libgcrypt.so.20 (0x00007f24a55ec000)
libpcre2-8.so.0 => /usr/lib/libpcre2-8.so.0 (0x00007f24a5540000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f24a5515000)

Selur
13th June 2025, 16:08
Thought the repository was public,... (should be public now)

Leo 69
22nd June 2025, 19:46
Hi Selur!

Is there a way to optimize the file indexing in Hybrid? So I work with large ffv1 mkv files a lot (100 Gb - 200 Gb) and I prefer to use FFMpegSource2 with the files.

The problem is that the program seems to always need to index the file every time I do certain actions.

For example, I open a file, it gets indexed by FFMpegSource2 after hitting the "Preview", I make adjustments in Vapoursynth and then I add the job and hit "Start". At this point FFMpegSource2 starts to index the file AGAIN and since the files are large, it takes a considerable amount of time. The file has already been indexed, so is there a way to use the previous .ffindex file and not analyze the file again after adding a job?

The second scenario is: 1) I open a file in Hybrid => it gets indexed (after hitting the "Preview") 2) I close Hybrid 3) Open Hybrid and the same file again 4) The file gets indexed again after clicking "Preview", disregarding the fact that the previous index file already exists.

How do I avoid this excessive indexing with FFMpegSource2 in Hybrid? The goal is to index the file just once and use that index file for all future manipulations.

Selur
23rd June 2025, 04:15
Is there a way to optimize the file indexing in Hybrid?
a. Hybrid deletes generated index files (for preview) on closing to avoid abandoned files.
b. The preview file generated for preview and the file generated for job processing have different names. If for example, you create two jobs with the same source file you wouldn't want the one job to delete the shared index file.
Hybrid would need to:
a. generate unique named index files (to not have conflicts for index files for inputs with the same name)
b. copy existing index files for job processing, if already an index file for the input exists. (this would also require adjusting generated sub-jobs during processing)
c. some way to know that index files are okay to be deleted
So in theory yes index handling could be changed, but any method that pops into my mind atm. has it's downsides. (i.e. abandoned files, potential conflicts, early deletions,..)

How do I avoid this excessive indexing with FFMpegSource2 in Hybrid? The goal is to index the file just once and use that index file for all future manipulations.
That would require Hybrid to know that it should:
a. not delete the index file
b. re-use the index file
c. delete it once it's not needed any more

Cu Selur

Leo 69
23rd June 2025, 05:40
Well, if those ffindex files are kept in temporary directory, I think there shouldn't be much worry about what happens to them. I believe the logic should be: if the ffindex file exists - use it, if it doesn't exist - generate a new one. Simple.

After all, I'm also using the TensorRT inference within your app and those .engine files are basically kept forever in the temporary directory until I delete them manually so we can also classify them as 'abandoned', right?

So yeah, if the index file can be created for a specified file only once and then reused for all future jobs without the need to generate it every time again and again, that would be great. At least if you could include this as an option to choose from - that would be superb!

Selur
23rd June 2025, 14:36
Well, if those ffindex files are kept in temporary directory, I think there shouldn't be much worry about what happens to them. I believe the logic should be: if the ffindex file exists - use it, if it doesn't exist - generate a new one. Simple.
That logic already exists. Otherwise, when closing and reopening a preview window, indexing would always take place. :)
After all, I'm also using the TensorRT inference within your app and those .engine files are basically kept forever in the temporary directory until I delete them manually so we can also classify them as 'abandoned', right? Wrong. Those 'engine'-files are not file but resolution and setting dependant, so you can use the same 'engine'-file for different inputs. If you for example convert 100 files where the resolution&filter settings are the same this file would just be used once. You don't want to reuse an index file for different inputs, even if they have the same length.

I will think about how this could be done, without having to modify tons of options, but it probably won't be soon, since I'm rather busy this week, next week I'm at RockHarz (https://www.rockharz-festival.com/en). :)

Cu Selur

Selur
23rd June 2025, 19:27
Uploaded a new dev with a 'keep index files' option under Config->Internals.
Read the tool-tip, test it and let me know whether it works as expected. :)

Cu Selur

Leo 69
23rd June 2025, 21:15
Uploaded a new dev with a 'keep index files' option under Config->Internals.
Read the tool-tip, test it and let me know whether it works as expected. :)

Cu Selur

Thank you so much, I'll work with some files in the following weeks and let you know what happens.

Selur
27th July 2025, 11:41
2025.07.27.1:
*changed*

Vapoursynth: changed to Vapoursynth R72
Vapoursynth: more zsmooth when available
Vapoursynth: prefer BestSource for image sequences by default
Vapoursynth: TorchRIFE scene change not used
Vapoursynth: TorchRIFE 4.0 and 4.1 require mod16
Vapoursynth: Finegrain masking (experimental)
Vapoursynth: simplified masking script code
Vapoursynth: FixChromaBleeding h&v controls switched
Vapoursynth: Merge on SeparateFields
Vapoursynth: vs-mlrt, bf16 support
Synth: support 'keep index files'
Vapoursynth: adding 'duplicate aware' gimmick option to some filters
Vapoursynth: vsCCD through zsmooth (for AVX2 capable CPUs)
Vapoursynth: make sure Hybrid comes with a vsViewer.config on Windows
Vapoursynth: max_cache_size auto adjust options

*fixed*

Avisynth: there's no 64bit nnedi2
Avisynth: don't use YUY2 for QTGMC
Vapoursynth: loading vsnlm_cuda instead of KNLMeansCL on non-NVIDIA systems
ProRes: VUI controls
Vapoursynth - progressive filters + tfm before deinterlacer

*added*

Vapoursynth: core.std.FreezeFrames


-> downloads: http://www.selur.de/downloads

Cu Selur

takla
18th September 2025, 20:55
Can't get ffv1_vulkan working at all. :(
=> can someone share an example on how to use this?
Got a working command line:


Level 4 requires frames to be a multiple of 64 pixels (https://trac.ffmpeg.org/ticket/11352). So you'd need to add padding.

Edit: Yeah nvm. I've tried with padding and this thing is broken. Why tf do they ship this...

Leo 69
20th October 2025, 13:21
Hi Selur!

I wanted to let you know since I wasn't happy with certain AI upscaling models, I've been training my own models for upscaling and removing various artifacts and I thought you'd like them:

https://github.com/limitlesslab/AI-upscaling-models

If you want, feel free to include them in the future builds of Hybrid. I think many users could benefit from the great visual quality that I'm after.

Selur
20th October 2025, 13:56
busy the next few days, but I'll try to give these models a test.

Selur
21st October 2025, 17:41
For those interested, here a few before/after for 1x_Purevison on random SD content, I had flying around
https://imgsli.com/NDIzNDUx
https://imgsli.com/NDIzNDUy
https://imgsli.com/NDIzNDUz
https://imgsli.com/NDIzNDU0
https://imgsli.com/NDIzNDU1
https://imgsli.com/NDIzNDU3
https://imgsli.com/NDIzNDU4
https://imgsli.com/NDIzNDU5
https://imgsli.com/NDIzNDYw
https://imgsli.com/NDIzNDYx
https://imgsli.com/NDIzNDYy
https://imgsli.com/NDIzNDYz
seems to be okay for noncommercial content.

Selur
26th October 2025, 16:12
@Hybrid Linux users:
I'm planning to reduce the Linux versions to a single AppImage (https://drive.google.com/drive/folders/17HHkTMaZiHWo00OyAcHrLmwF2DmAcpjO?usp=drive_link) would be nice to get some feedback about:
1. does the AppImage work for you?
2. is a separate Hybrid binary only download still necessary?

Cu Selur

Selur
5th November 2025, 16:18
AppImage seems to work, so it'll replace the current package in the future,..

Selur
8th November 2025, 16:44
2025.11.08.1:
*changed*

Vapoursynth: allow multiple in-/outputs in custom sections
Vapoursynth: adjusted to Anime4k v3
Vapoursynth: SCUNet FP16 support
Vapoursynth: luma scaling handling
Vapoursynth: FilterQueue + Deinterlace
Vapoursynth: filter support simplification
Vapoursynth: vsMLRTFilter/vsVSGANFilter: configure undo-resizer (torch/mlrt)
Vapoursynth: vsDPID: support RGBS
FFmpeg: speedChange set '-r' before and after input
Vapoursynth: adjust to HAVC update (torch)
Vapoursynth: support dynamic shapes (mlrt)
Vapoursynth: ResampleHQ HDR option
Vapoursynth: torch BasicVSR++ filter scene_aware
tons of code refactored

*fixed*

Vapoursynth: FilterQueue + Interpolate or TDecimate filter
Vapoursynth: vs-mlrt. VSMLRT-Filter call
NVEnC: maxFALL not properly read from input
Monitoring: handling of monitored inputs
Vapoursynth: mclean tcanny dependency
Vapoursynth vsSantiagAA limit range 0-128
Vapoursynth: vsCCD typo temporal_radius
Audio: limitAudioAll lang/type controls
Vapoursynth: converting to RGB force pc scale
Vapoursynth: SSMD on HDR content


-> downloads: http://www.selur.de/downloads

Cu Selur

Ps.: Dropped Ubuntu package release, created an AppImage which hopefully works.

Selur
9th November 2025, 07:46
2025.11.09.1:
*fixed*

Vapoursynth: masking not working
Vapoursynth: DGDenoise luma minimum
Vapoursynth: MClean vcm dependency for veed


-> downloads: http://www.selur.de/downloads

Cu Selur

ReinerSchweinlin
13th November 2025, 16:25
As always: Thank You !

I need to find time to update my hybrid install :)

Someone porting seedvr2 to vapoursynth ? (long shot, I know...)

Selur
14th November 2025, 03:43
Not that I heard of it. ��

Leo 69
14th November 2025, 15:40
Hi Selur! What is the new "SceneAware" feature for BasicVSR++ supposed to do? I wasn't able to find any documentation. Could you explain its parameters as well (thresh/min). Thanks!

Selur
16th November 2025, 07:24
Ah, I forgot to write some tool tips. :)
The SceneAware options I added to a few filters, simply adds a wrapper (https://github.com/Selur/VapoursynthScriptsInHybrid/blob/f5b39fe88a06c2481082e0debe2abd99ba8b0450/misc.py#L222):
clip = misc.scene_aware(clip, filter_func=BasicVSRPP, sc_threshold=0.100, min_scene_len=5, color_matrix="470bg", model=4)
What that wrapper does is it automatically splits a clip by scene changes (sc_threshold = how much change before splitting, min_sc_len = ignore split if resulting scene would be X or less frames in size) and apply a filter separately per scene.

This helps with some filters where I encountered issues around scene changes otherwise.

Cu Selur

Selur
21st March 2026, 15:42
2026.03.21.1:
*changed*

Vapoursynth: enable Vapoursynth script highlighting
Vapoursynth: support SNEEDIF , EEDI3VK
UI: scale icons depending on font size ('+/-'-buttons allow scaling now)
Video: SVTAV1 progress, encoder uses new reporting format
Vapoursynth: use fillBorders when padding HAVC or ColorAdjust(HAVC)
Video: SVTAV1 a few new options
Vapoursynth: 'adjust PAR before resize'-option
Vapoursynth: support cranexpr
Vapoursynth: add 'DeltaRestore' to SpotLess
Avisynth: explicitly set 'AssumeFrameBased()' after deinterlacers

*fixed*

Vapoursynth: SMDegrain with RefineMotion and Plane != all
Vapoursynth: STPresso, CNR + cuda
Vapoursynth: fix dither type when changing to higher bit depth
Vapoursynth: MDegrain dependencies
Muxing: mkvmerge color tags on passthrough
UI: ComboBox transparent background in some styles.
AVX2 detection

*added*

Vapoursynth: DeJitter, deblendS6

*Notes*

On Windows: Deinstall old version, before installing, since the Vapoursynth version changed


-> downloads: http://www.selur.de/downloads

Cu Selur