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
10th October 2024, 04:18
How to make this work in Hybrid?
No clue how to make RVRT work in Hybrid, never tried it since iirc. BasicVSR++ produce better results.
Is converting from .pth to .onnx with Chainner sufficient to make this work?
You can try converting the pretrained models to .onnx try whether VSLMLRT can load them.
How to import these models into Hybrid?
Filtering->Vapoursynth->Resizer->VSMLRT has a file open dialog which allows selecting any .onnx-models.
Note that neither does VSGAN support all .pth files nor does VSMLRT support all .onnx files.
Are there models similar but better that these?
Can't say for sure since I never used RVRT and thus can't compare it to anything I know.

And also does Hybrid support importing .webp or .avif image sequences as input?
No, atm. only png, tga, tiff, tif, exr and jpg are supported. I haven't even tested whether webp or avif are supported by Avisynth, Vapoursynth and/or FFmpeg, so no clue whether it could be done.

Cu Selur

Leo 69
29th October 2024, 19:38
Hi Selur!

Do you have plans to implement the BM3D denoiser for Vapoursynth? Or maybe even BM3DCUDA (https://github.com/WolframRhodium/VapourSynth-BM3DCUDA)?

Selur
30th October 2024, 19:30
Short: No, got no plans to support either.

Long:
I thought about using it, thru the wrapper for it in muvsfunc (https://github.com/HomeOfVapourSynthEvolution/mvsfunc/blob/865c7486ca860d323754ec4774bc4cca540a7076/mvsfunc/mvsfunc.py#L673), but even that wrapper seems rather complex with tons of parameters where I don't know the range of allowed values and that use 'None' as default. BM3DCUDA refers to the BM3D documentation.
So it's not planned, since I have no clue how to use it (properly), what the parameters are meant to do and what the allowed values etc. are, what dependencies there are etc.

If you know how to use it, you could:
a. add it to the gui yourself using a Custom filter (https://forum.selur.net/thread-3231.html) addition.
b. use it through the custom section
Judging by the examples, this seems like something that might be best used in a custom section by users themselves.

=> Don't know enough about it to implement support for it.

Cu Selur

Z2697
31st October 2024, 18:53
Animated WebP is somewhat tricky, FFmpeg doesn't support it, dwebp can't directly decode it
>dwebp asd.webp
Error! Decoding of an animated WebP file is not supported.
Use webpmux to extract the individual frames or
vwebp to view this image.
Decoding of a failed.
Status: 4(UNSUPPORTED_FEATURE)

Animated HEIF (HEVC/AV1) is supported by FFmpeg, actually it's pretty much like a plain MP4 file with a video track, the difference is there's a image item stored as "thumbnail" (I assumed based on observation, I didn't read the actual specification)

The method I chose to handle animated WebP was to extract timing info with webpmux, then extract individual frames as PNG with ImageMagick (more on that later) and use FFmpeg concat demuxer to convert them to APNG and move on...

Why ImageMagick? webpmux can extract frames from animated WebP files and it's "demuxing" while ImageMagick is decoding/re-encoding. Because webpmux only extracts one frame a time, it's not a big deal but I just prefer to do it in one command at the moment.
Why extract individual frames instead of let ImageMagick output APNG directly? Because when doing animated WebP to APNG conversion, ImageMagick used LOSSY WEBP as intermediate. (I'm not sure if it's still the case now)

A VapourSynth source filter, imwri, uses ImageMagick to read images, but it looks like it only reads a single frame, it's meant for image sequences I guess.

Selur
2nd November 2024, 19:48
okay, so probably no need to look into supporting webp any time stone.

juanitogan
15th November 2024, 10:34
I'm stumped.

I just uninstalled 2024.04.06.1 completely including removing settings (backing up scripts first). Reboot, uninstall, wipe all remaining folders (in Program Files and Roaming), reboot.

I then installed the latest 2024.09.29.1 and found that VS' FilterOrder is not working. Uninstalled Hybrid completely and tried everything again.

Before setting any defaults or anything else, Filtering>Vapoursynth>Misc>FilterOrder does not appear to work:
- Drag/drop moves item (but does not change script).
- Both Up and Down buttons simply move the highlight bar down instead of moving the item.
- Reset button does nothing.

Tried loading a file and turning on a few filters.
- Nothing gets bolded like it used to.
- Drag/drop moves item but does not change script.

Tried setting paths, tried Defaults>ResetAll, tried restarting. Still can't change filter order.

Is there something else I need to reset?

Selur
16th November 2024, 07:11
No, works fine here (Win11). Haven't changed that code for ages.
What OS are you using? Did you modify the Windows themes or similar through some tool?

juanitogan
18th November 2024, 07:11
Weird... but I didn't think this was a feature you would miss testing so I figured I must be missing something (or some other local conflict). Win 10 Home 64bit. I don't load unusual things into the OS like themes and such. I'm a dev myself and so I keep things as generic as possible. I'll check earlier versions and/or go back to the version I was using and see what happens. BTW, I should have mentioned that jobs otherwise run fine... I just can't change the order of the filters with this feature.

juanitogan
18th November 2024, 07:16
Oh, yes, the one suspicious line from the log:

Encounter XML error reading 'readGeneral': Opening and ending tag mismatch.

Selur
18th November 2024, 19:38
Can't reproduce it on Win11, but I could reproduce the problem on MacOS. :)
For some reason the ui <> mediator connections are not working,.. => I'll try to look into it, but probably won't really have much time before Wends day evening after work.
But I can reproduce it. Might be related to so Qt version change. => nope its a problem with the FilterOrder not properly populated.

Selur
18th November 2024, 21:30
Think I fixed it, uploaded a new dev (to the 'experimental'-folder of my GoogleDrive, which is linked on the download page)

Cu Selur

juanitogan
18th November 2024, 23:13
Wow, that is funny! That's a first for me: First time I've ever seen a bug report from a Windows user confirmed on a Mac because it couldn't be reproduced on Windows.

Anyways... YES! Your latest dev build fixes it. I've only tested the UI and haven't run a job yet... but I doubt any further issue with it. The bolding and script response is all there. Up/down/reset buttons work fine too (although, if you care [I don't], the bolding disappears on reset, but all the bolding comes back if you tick a filter off and on).

[[Yeah, my first thought was Qt as well since I've had minor issues with it in the past with Hybrid. But my second thought was "not likely" since the overall UI seemed fine and it looked to be more of a communication issue. So I didn't bother poking at Qt and just left it to you to find.]]

Thank you for the fix and, as always, thank you for the tool!

Selur
20th November 2024, 19:52
Different environment setups on different machine. ;)

Selur
21st December 2024, 22:27
2024.12.21.1:
*changed*

Analysis: extended workaround for MakeMKV muxed content
Muxing: support FLAC in mp4
Vapoursynth: moved EdgeFixer and BalanceBorder to Frame->Edge
Vapoursynth: vs-mlrt/torch - removed mod restrictions for TensorRT when using RIFE
Vapoursynth: ColorFix add wavelet mode
Input: support dpx as image sequence
Vapoursynth: torch - DeOldify 4.5.0
UI: make Hybrid Window resizable
Video: svtav1 support quant matrices
Video: x264 - set '--slices 4'
Avisynth: amDCT 64bit support
Vapoursynth: changed filter specifc 'flip vertical' into generic gimmick option
Hardware: support more data server graphic cards

*fixed*

Vapoursynth: torch - VSGAN(Filter) + ColorFix
Jobs: Chunked encoding crash with whitespace in file path
Decode: FFmpeg color matrix handling
Vapoursynth: torch - machine learning resizers and FilterQueue
Vapoursynth: don't use stepped resize when Vapoursynth->Frame->Resize->Resizer is disabled)
Decode: AutoCrop for DVD with spaces in the path; missing quotes
Video: FFVNEnc presets
Filtering: disable 'Filtering->FFmpeg' for 'Only use encoder'
Decoder: set vui params for input on FFmpeg
Avisynth: Separate Fields filtering
Avisynth: typo in ProToon 32bit custom addition

*added*

Vapoursynth: torch - added ColorFix for SCUNet
Vapoursynth: torch - added vs-mfdin
Vapoursynth: vsmlrt - added ColorFix for SCUNetmlrt (requires torch addon)
Vapoursynth: vsmlrt - added ColorFix for VSMLRT (requires torch addon)
Vapoursynth: vsmlrt - fix 'Multi' for VSMLRT
Vapoursynth: torch - fix 'Multi' for VSGAN
Vapoursynth: support Bore, FillBorders


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

Cu Selur

ReinerSchweinlin
21st December 2024, 22:44
2024.12.21.1:
Vapoursynth: torch - added vs-mfdin


NICE!

thanks !

Leo 69
21st February 2025, 23:21
Hi Selur,

Do you know what's going on here? As soon as I specify tiling in BasicVSR++, I'm getting this error. I'm using your latest development build from Google Drive (from February 2025). The input resolution of the video is 2560x1440, but it doesn't really matter, tiling fails with any resolution.

EDIT: I downgraded to the stable build and the error is gone.

https://i.postimg.cc/y6SpLyN5/2025-02-22-061715.png

Selur
22nd February 2025, 05:46
Looks like you updated Hybrid to the dev build, but you did not update the torch add-on. (from the same folder)
The BasicVSR++ parameter call changed in https://github.com/HolyWu/vs-basicvsrpp/releases/tag/v3.0.0 :)

Cu Selur

Leo 69
23rd February 2025, 09:51
Looks like you updated Hybrid to the dev build, but you did not update the torch add-on. (from the same folder)
The BasicVSR++ parameter call changed in https://github.com/HolyWu/vs-basicvsrpp/releases/tag/v3.0.0 :)

Cu Selur

Thank you and you're right. It took me a while to figure out how to make BasicVSR++ work in Hybrid. There are no guides anywhere and I only found some bits of information on your forum and had to put them all together. But it was worth it. I have a question though:

https://i.postimg.cc/BQT9cqJb/2025-02-23-164757.png

Could you explain what this function is for and how to use it?

Selur
23rd February 2025, 15:14
To see the 'Merge' and other, usually not shown controls, enable the corresponding options under 'Filtering->Vapoursynth->Misc->UI'.
The Merge option, simply applies the Merge (https://www.vapoursynth.com/doc/functions/video/merge.html)-filter between the version of the clip before and after the current filter.
A value of Y/U/V = 1 would fully apply the effect of the filter to the output ( = it normally applies the filter).
A value of Y/U/V = 0.5 would mix the previous and filtered version with a weight of 0.5.
A value of Y/U/V = 0/1/1 would keep the luma plane as it is and take the chroma planes from the filtered version, so it would only apply the filter to the chroma planes.
A value of Y/U/V = 1/0/0 would keep the chroma planes and only take the effect of the filter for the luma plane.

There are no guides anywhere and I only found some bits of information on your forum and had to put them all together.
There is a README.md in the GoogleDrive which explains how to install the torch add-on.

Cu Selur

Selur
9th March 2025, 13:23
2025.03.09.1:
*changed*

Video: NVEncC - support tune uhq
Vapoursynth: torch updated RealESRGAN, RIFE
Vapoursynth: torch update DeOdify (old saved settings might not work as expected in new version)
Monitor: monitoring folder "-autoAdd addAndStart" case insensitive.
Vapoursynth: switch RemoveDirt port by pinterf
Vapoursynth: torch - disable DDD 'DfConvEkSA' due to dependency problems (openmim + newer Pytorch)
Vapoursynth: torch - renamed vsDeoldify to HAVC, removed 'custom' preset/speed option
Vapoursynth: added Rotate, PreColor to 'Gimmick'-controls
Vapoursynth: removed dependency to librife_r9_mod_v6

*fixed*

Vapoursynth: torch - vsCodeFormer with FilterQueue set num_batches
Vapoursynth: reinterlace indention
Vapoursynth: make sure to adjust resolution for preview when custom section changed it
Vapoursynth: fixed BinarMask GrayMask bit depth calculation
Video: NVEncC - H.265&H.264 lossless support detection
Video: FFNVEnc - H.265 profile
Vapoursynth: mlrt resizers were not removed from the resizer list, even when vs-mlrt wasn't installed
Vapoursynth: output luma singaling updateing
Analysis: audio detection problems when reported order of streams were different in mediainfo and mplayer
Muxing: added workaround for mp4fpsmod issue
Avisynth: d2vSource can't use 'fieldop'

*added*

Vapoursynth: torch - RealESRGAN 1x scale filter
Vapoursynth: vs-mlrt - vsMLRTFilter


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

Cu Selur

Leo 69
24th March 2025, 00:41
To see the 'Merge' and other, usually not shown controls, enable the corresponding options under 'Filtering->Vapoursynth->Misc->UI'.
The Merge option, simply applies the Merge (https://www.vapoursynth.com/doc/functions/video/merge.html)-filter between the version of the clip before and after the current filter.
A value of Y/U/V = 1 would fully apply the effect of the filter to the output ( = it normally applies the filter).
A value of Y/U/V = 0.5 would mix the previous and filtered version with a weight of 0.5.
A value of Y/U/V = 0/1/1 would keep the luma plane as it is and take the chroma planes from the filtered version, so it would only apply the filter to the chroma planes.
A value of Y/U/V = 1/0/0 would keep the chroma planes and only take the effect of the filter for the luma plane.


There is a README.md in the GoogleDrive which explains how to install the torch add-on.

Cu Selur

Thank you very much, your software is the best! I have another question. I would like to output a png image sequence with Hybrid instead of video. What should I configure so that it would start from, let's say, 000000.png or 000001.png and then continue outputting every frame separately onwards? Which container should I choose?

Selur
24th March 2025, 05:43
To output PNGs, you should:

Set 'Base->Processing->Video' to PNG
Adjust the settings in the 'PNG'-tab.
If the output names of the output PNGs should just be numbers, you should enable 'Number as name' here.
Then you should either set a file name with .raw extension, or use 'Generate' with 'raw' selected under 'Default container'.

Side note about the numbering: You can't set the leading number of zeros in the output name. Hybrid will adjust the leading number of zeros to the frame count.

Cu Selur

Selur
10th April 2025, 18:05
The selur.de Homepage is down atm. It will probably take some time before it's up again.

Leo 69
20th April 2025, 23:59
Hi Selur!

Is it possible to use ffmpeg x264 and x265 encoders instead of the dedicated ones? I'd like to write some metadata into the streams, which I don't now know to do with dedicated encoders, I make it like this in ffmpeg:

ffmpeg -i input.mp4 -c:v libx265 -metadata:s:v comment="encoded by Leo 69" -c:a copy output.mkv

So this writes the metadata directly into the h.265 stream instead of the mkv container.

And also is there a way to encode x264 and x265 videos directly into the mkv container instead of creating temporary .264 and .265 files, like ffmpeg can do? All in all, I would prefer to use ffmpeg internal encoders, since they have a bit more flexibility. Is it possible in Hybrid?

Z2697
21st April 2025, 00:04
So this writes the metadata directly into the h.265 stream instead of the mkv container.

It's not.

Leo 69
21st April 2025, 01:37
It's not.

And what exactly does that command do then, if "it's not"?

Download this file and tell me where the metadata is stored, in the container or in the video stream? => https://app.filen.io/#/d/8a32b38c-468f-4155-b64e-367df4f38ddc%23cfJEsa435CkHygQcJBprozleS3KUBYfS

Z2697
21st April 2025, 04:02
And what exactly does that command do then, if "it's not"?

Download this file and tell me where the metadata is stored, in the container or in the video stream? => https://app.filen.io/#/d/8a32b38c-468f-4155-b64e-367df4f38ddc%23cfJEsa435CkHygQcJBprozleS3KUBYfS

It's in the container.
https://files.catbox.moe/t1zsq6.png
https://files.catbox.moe/hit22c.png
It's somthing you can choose to discard when remuxing.

Selur
21st April 2025, 06:02
Is it possible to use ffmpeg x264 and x265 encoders instead of the dedicated ones?
No, that is not supported in Hybrid.

I'd like to write some metadata into the streams, which I don't now know to do with dedicated encoders
Enabling "Base->Tagging". The 'Tag'-tab allows setting container and stream tags. (both are part of the container)
For mkv, there is extended container tag support under Config->MKV Tagging. (usually the official 'ENCODED_BY' (https://www.matroska.org/technical/tagging.html)-tag should be uses to tag, who encoded the stream)

So this writes the metadata directly into the h.265 stream instead of the mkv container.
No. I agree with Z2967, that command is setting container streams tags.


=> If you really want/need to use FFmpeg for encoding x264/x265, Hybrid is the wrong tool.

Cu Selur

Ps.: to modify stream specific meta data see: https://ffmpeg.org/ffmpeg-bitstream-filters.html

Selur
17th May 2025, 13:40
2025.05.17.1:
*fixed*

Vapoursynth: SMDegrain with (constrast) sharpen
Vapoursynth: vsnlm_cuda handling (Windows only)
Vapoursynth: Gimmick undo resize
Vapoursynth: vsmlrt/vsgan - zoom handling
Vapoursynth: torch - ddColor miscfilter import
Vapoursynth: SMDegrain in FilterQueue
Vapoursynth: torch - CodeFormer output resolution; padding calculation
Vapoursynth: custom - handle 'scantype' change properly
Vapoursynth: profiles include merge-, mask-,... -options
Jobs: progress indication with FFmpeg as encoder
Vapoursynth: mlrt - vsMLRTFilter fix undo resize when combined with mod
Vapoursynth: FilterPresets saving
Vapoursynth: EdgeFixer with BoxBlur
Jobs: SvpAv1nc/SvpHevc temp output file detection
Vapoursynth: Gimmick Resize + required mod
Vapoursynth: vsLimiter: std vs vszip
Vapoursynth: torch/vsmlrt - force logging to stderr when
Vapoursynth: better Preview Histogram handling
Video: pc luma range not properly set with out filtering
Video: SVT-AV1 master display import

*changed*

Analysis: try using ffmpeg to get frame count on raw input
Vapoursynth: vsmlrt(filter) overlap
Tools: simplify cuda/nvenc checks
Video: NVEnc split, parallel encoding, luma signaling
Vapoursynth: vsSpotLess: interations supported
Vapoursynth: vsPreview: 'original|filtered|diff'
Vapoursynth: using zsmooth instead of RemoveGrainVS
Vapoursynth: use more akarin
Link to version.txt changed to https://www.selur.de/files/hybrid_downloads/version.txt

*added*

Vapoursynth: torch - vsDRBA support
Vapoursynth: Checkmate support (Windows only)
Vapoursynth: ChromaShiftF shift chroma by field/frame
Vapoursynth: option to force bit depth for filters (Gimmick)
Vapoursynth: option compare before/after current filter (Gimmick)
Vapoursynth: AutoGain, UnsharpMask, ReplaceMultipleFrames

*removed*

Video: SVT-AV1: '--enable-hdr'-option


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

Cu Selur

Selur
18th May 2025, 16:44
2025.05.18.1:

*changed*

audio: support FLAC multi-threaded encoding
Avisynth: moved default Pluging to avisynthPlugins folder since the default folder keeps chaning the name
Avisynth: updated to Avisynth+ 3.7.5

*fixed*

Avisynth: loading VDubFilter.dll before LoadVirtualDubPlugin.
Vapoursynth: multiple missing definitions in the scripts



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

Cu Selur

Selur
18th May 2025, 19:31
[b]2025.05.18.2[b]:

*fixed*

Vapoursynth: scale vs scale_value mess-up

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

Cu Selur

valnar
23rd May 2025, 17:27
I started using Hybrid instead of Handbrake for NTSC DVD's because I have some that need deinterlacing (well, I guess all DVD's do). This one in particular is not simply telecined.

The one setting I'm not clear on is the Crop/Resize. I want to maintain the 740x480 pixels for maximum quality, but keep the 4:3 aspect ratio. In Handbrake, that's:
* No cropping
* Resolution limit 480p NTSC SD
* Automatic Anamorphic (pixel aspect 8:9)

Dimensions show Storage size is 720x480 and display is 640x480 AR 4:3

What are the equivalent settings in Hybrid?

Selur
25th May 2025, 15:16
No clue, don't use handbrake.
But if you don't resize Hybrid will keep the detected input par, if you don't resize or letterbox the output dar should also stay the same.

Leo 69
2nd June 2025, 01:00
Hi Selur,

Could you add this encoder in the future build? Thanks.

https://www.phoronix.com/news/FFmpeg-Faster-FFV1-Vulkan-Enc

Selur
2nd June 2025, 04:22
Does MBAS (https://github.com/m-ab-s/media-autobuild_suite) support this? If yes, what ffmpeg_options need to be enabled to build ffmpeg with it?

Leo 69
2nd June 2025, 06:14
I don't know, not a developer. But Shutter Encoder for example has included that encoder in the latest build, and it's also built around ffmpeg AFAIK.

Selur
2nd June 2025, 14:04
Okay, that doesn't help.
No clue about shutter encoder, I tried building ffmpeg with:
configuration: --pkg-config=pkgconf --cc='ccache gcc' --cxx='ccache g++' --ld='ccache g++' --extra-cxxflags=-fpermissive --extra-cflags=-Wno-int-conversion --disable-autodetect --enable-amf --enable-bzlib --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --enable-sdl2 --enable-ffnvcodec --enable-nvdec --enable-cuda-llvm --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-libaom --disable-debug --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libharfbuzz --enable-libmfx --enable-libmysofa --enable-libopenjpeg --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libopenmpt --enable-librav1e --enable-libsrt --enable-libgsm --enable-libvmaf --enable-libsvtav1 --enable-vulkan --extra-cflags=-DLIBTWOLAME_STATIC --extra-cflags=-DLIBXML_STATIC --extra-libs=-liconv --disable-w32threads
but that does not add ffv1_vulkan as encoder.

Configure also doesn't list it:
$ ./configure --list-encoders
a64multi dvvideo libmp3lame pcm_alaw_at s302m
a64multi5 dxv liboapv pcm_bluray sbc
aac eac3 libopencore_amrnb pcm_dvd sgi
aac_at exr libopenh264 pcm_f32be smc
aac_mf ffv1 libopenjpeg pcm_f32le snow
ac3 ffv1_vulkan libopus pcm_f64be sonic
ac3_fixed ffvhuff librav1e pcm_f64le sonic_ls
ac3_mf fits libshine pcm_mulaw speedhq
adpcm_adx flac libspeex pcm_mulaw_at srt
adpcm_argo flashsv libsvtav1 pcm_s16be ssa
adpcm_g722 flashsv2 libtheora pcm_s16be_planar subrip
adpcm_g726 flv libtwolame pcm_s16le sunrast
adpcm_g726le g723_1 libvo_amrwbenc pcm_s16le_planar svq1
adpcm_ima_alp gif libvorbis pcm_s24be targa
adpcm_ima_amv h261 libvpx_vp8 pcm_s24daud text
adpcm_ima_apm h263 libvpx_vp9 pcm_s24le tiff
adpcm_ima_qt h263_v4l2m2m libvvenc pcm_s24le_planar truehd
adpcm_ima_ssi h263p libwebp pcm_s32be tta
adpcm_ima_wav h264_amf libwebp_anim pcm_s32le ttml
adpcm_ima_ws h264_mediacodec libx262 pcm_s32le_planar utvideo
adpcm_ms h264_mf libx264 pcm_s64be v210
adpcm_swf h264_nvenc libx264rgb pcm_s64le v308
adpcm_yamaha h264_omx libx265 pcm_s8 v408
alac h264_qsv libxavs pcm_s8_planar v410
alac_at h264_v4l2m2m libxavs2 pcm_u16be vbn
alias_pix h264_vaapi libxeve pcm_u16le vc2
amv h264_videotoolbox libxvid pcm_u24be vnull
anull h264_vulkan ljpeg pcm_u24le vorbis
apng hap magicyuv pcm_u32be vp8_mediacodec
aptx hdr mjpeg pcm_u32le vp8_v4l2m2m
aptx_hd hevc_amf mjpeg_qsv pcm_u8 vp8_vaapi
ass hevc_d3d12va mjpeg_vaapi pcm_vidc vp9_mediacodec
asv1 hevc_mediacodec mlp pcx vp9_qsv
asv2 hevc_mf movtext pfm vp9_vaapi
av1_amf hevc_nvenc mp2 pgm wavpack
av1_mediacodec hevc_qsv mp2fixed pgmyuv wbmp
av1_mf hevc_v4l2m2m mp3_mf phm webvtt
av1_nvenc hevc_vaapi mpeg1video png wmav1
av1_qsv hevc_videotoolbox mpeg2_qsv ppm wmav2
av1_vaapi hevc_vulkan mpeg2_vaapi prores wmv1
avrp huffyuv mpeg2video prores_aw wmv2
avui ilbc_at mpeg4 prores_ks wrapped_avframe
bitpacked jpeg2000 mpeg4_mediacodec prores_videotoolbox xbm
bmp jpegls mpeg4_omx qoi xface
cfhd libaom_av1 mpeg4_v4l2m2m qtrle xsub
cinepak libcodec2 msmpeg4v2 r10k xwd
cljr libfdk_aac msmpeg4v3 r210 y41p
comfortnoise libgsm msrle ra_144 yuv4
dca libgsm_ms msvideo1 rawvideo zlib
dfpwm libilbc nellymoser roq zmbv
dnxhd libjxl opus roq_dpcm
dpx libjxl_anim pam rpza
dvbsub libkvazaar pbm rv10
dvdsub liblc3 pcm_alaw rv20


$ ./configure --list-hwaccels
does list it:

av1_d3d11va h264_dxva2 mjpeg_nvdec mpeg4_vdpau vp9_dxva2
av1_d3d11va2 h264_nvdec mjpeg_vaapi mpeg4_videotoolbox vp9_nvdec
av1_d3d12va h264_vaapi mpeg1_nvdec prores_videotoolbox vp9_vaapi
av1_dxva2 h264_vdpau mpeg1_vdpau vc1_d3d11va vp9_vdpau
av1_nvdec h264_videotoolbox mpeg1_videotoolbox vc1_d3d11va2 vp9_videotoolbox
av1_vaapi h264_vulkan mpeg2_d3d11va vc1_d3d12va vvc_vaapi
av1_vdpau hevc_d3d11va mpeg2_d3d11va2 vc1_dxva2 wmv3_d3d11va
av1_videotoolbox hevc_d3d11va2 mpeg2_d3d12va vc1_nvdec wmv3_d3d11va2
av1_vulkan hevc_d3d12va mpeg2_dxva2 vc1_vaapi wmv3_d3d12va
ffv1_vulkan hevc_dxva2 mpeg2_nvdec vc1_vdpau wmv3_dxva2
h263_vaapi hevc_nvdec mpeg2_vaapi vp8_nvdec wmv3_nvdec
h263_videotoolbox hevc_vaapi mpeg2_vdpau vp8_vaapi wmv3_vaapi
h264_d3d11va hevc_vdpau mpeg2_videotoolbox vp9_d3d11va wmv3_vdpau
h264_d3d11va2 hevc_videotoolbox mpeg4_nvdec vp9_d3d11va2
h264_d3d12va hevc_vulkan mpeg4_vaapi vp9_d3d12va


No clue how to build ffmpeg to support ffv1_vulkan, atm.
With '--enable-vulkan', hevc_vulkan and h264_vulkan are in the encoders list, but ffv1_vulkan is not there, only the standard ffv1 encoder is listed for ffv1.

=> Can't/Won't add support unless I can compile an ffmpeg version which supports it.

Cu Selur

Ps.: I created an issue entry (https://github.com/m-ab-s/media-autobuild_suite/issues/2944) over at mbas, maybe someone there knows how to build ffmpeg with ffv1 support.

Jamaika
3rd June 2025, 05:20
I created something but I don't know if it works correctly.
https://forum.doom9.org/showthread.php?p=2019185#post2019185

V....D a64multi Multicolor charset for Commodore 64 (codec a64_multi)
V....D a64multi5 Multicolor charset for Commodore 64, extended with 5th color (colram) (codec a64_multi5)
V....D alias_pix Alias/Wavefront PIX image
V....D amv AMV Video
V....D apng APNG (Animated Portable Network Graphics) image
V....D liboapv liboapv APV (codec apv)
V....D asv1 ASUS V1
V....D asv2 ASUS V2
V....D libaom-av1 libaom AV1 (codec av1)
V....D avrp Avid 1:1 10-bit RGB Packer
V..X.D avui Avid Meridien Uncompressed
VF...D bitpacked Bitpacked
V....D bmp BMP (Windows and OS/2 bitmap)
VF...D cfhd GoPro CineForm HD
V....D cinepak Cinepak
V....D cljr Cirrus Logic AccuPak
V.S..D vc2 SMPTE VC-2 (codec dirac)
VFS..D dnxhd VC3/DNxHD
V....D dpx DPX (Digital Picture Exchange) image
VFS..D dvvideo DV (Digital Video)
VFS..D dxv Resolume DXV
V....D libxeve libxeve MPEG-5 EVC (codec evc)
VF...D exr OpenEXR image
V.S..D ffv1 FFmpeg video codec #1
V....D ffv1_vulkan FFmpeg video codec #1 (Vulkan) (codec ffv1)
VF...D ffvhuff Huffyuv FFmpeg variant
V....D fits Flexible Image Transport System
V....D flashsv Flash Screen Video
V....D flashsv2 Flash Screen Video Version 2
V....D flv FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)
V....D gif GIF (Graphics Interchange Format)
V....D h261 H.261
V....D h263 H.263 / H.263-1996
V.S..D h263p H.263+ / H.263-1998 / H.263 version 2
V....D h264_vulkan H.264/AVC (Vulkan) (codec h264)
V....D libopenh264 OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V....D libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V....D libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
V.S..D hap Vidvox Hap
VF...D hdr HDR (Radiance RGBE format) image
V....D hevc_d3d12va D3D12VA hevc encoder (codec hevc)
V....D hevc_vulkan H.265/HEVC (Vulkan) (codec hevc)
V....D libx265 libx265 H.265 / HEVC (codec hevc)
V....D libkvazaar libkvazaar H.265 / HEVC (codec hevc)
VF...D huffyuv Huffyuv / HuffYUV
VF...D jpeg2000 JPEG 2000
VF.... libopenjpeg OpenJPEG JPEG 2000 (codec jpeg2000)
VF...D jpegls JPEG-LS
V....D libjxl libjxl JPEG XL (codec jpegxl)
V....D libjxl_anim libjxl JPEG XL animated (codec jpegxl_anim)
V..... libsvtjpegxs SVT JPEG XS(Scalable Video Technology for JPEG XS) encoder (codec jpegxs)
VF...D ljpeg Lossless JPEG
VFS..D magicyuv MagicYUV video
VFS..D mjpeg MJPEG (Motion JPEG)
V.S..D mpeg1video MPEG-1 video
V.S..D mpeg2video MPEG-2 video
V.S..D mpeg4 MPEG-4 part 2
V....D libxvid libxvidcore MPEG-4 part 2 (codec mpeg4)
V....D msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2
V....D msmpeg4 MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)
V....D msrle Microsoft RLE
V..... msvideo1 Microsoft Video-1
V....D pam PAM (Portable AnyMap) image
V....D pbm PBM (Portable BitMap) image
V....D pcx PC Paintbrush PCX image
V....D pfm PFM (Portable FloatMap) image
V....D pgm PGM (Portable GrayMap) image
V....D pgmyuv PGMYUV (Portable GrayMap YUV) image
V....D phm PHM (Portable HalfFloatMap) image
VF...D png PNG (Portable Network Graphics) image
V....D ppm PPM (Portable PixelMap) image
VF...D prores Apple ProRes
VF...D prores_aw Apple ProRes (codec prores)
VFS... prores_ks Apple ProRes (iCodec Pro) (codec prores)
VF...D qoi QOI (Quite OK Image format) image
V....D qtrle QuickTime Animation (RLE) video
V....D r10k AJA Kona 10-bit RGB Codec
V....D r210 Uncompressed RGB 10-bit
VF...D rawvideo raw video
V....D roqvideo id RoQ video (codec roq)
V....D rpza QuickTime video (RPZA)
V....D rv10 RealVideo 1.0
V....D rv20 RealVideo 2.0
V....D sgi SGI image
V....D smc QuickTime Graphics (SMC)
V....D snow Snow
V....D speedhq NewTek SpeedHQ
V....D sunrast Sun Rasterfile image
V....D svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
V....D targa Truevision Targa image
V....D libtheora libtheora Theora (codec theora)
VF...D tiff TIFF image
VF...D utvideo Ut Video
VF...D v210 Uncompressed 4:2:2 10-bit
V....D v308 Uncompressed packed 4:4:4
V....D v408 Uncompressed packed QT 4:4:4:4
V....D v410 Uncompressed 4:4:4 10-bit
V.S..D vbn Vizrt Binary Image
V..... vnull null video
V....D libvpx-vp9 libvpx VP9 (codec vp9)
V....D libvvenc libvvenc H.266 / VVC (codec vvc)
V....D libuvg266 libuvg266 H.266 / VVC (codec vvc)
VF...D wbmp WBMP (Wireless Application Protocol Bitmap) image
V....D libwebp_anim libwebp WebP image (codec webp)
V....D libwebp libwebp WebP image (codec webp)
V....D wmv1 Windows Media Video 7
V....D wmv2 Windows Media Video 8
V..... wrapped_avframe AVFrame to AVPacket passthrough
V....D xbm XBM (X BitMap) image
V....D xface X-face image
V....D xwd XWD (X Window Dump) image
V....D y41p Uncompressed YUV 4:1:1 12-bit
V....D yuv4 Uncompressed packed 4:2:0
VF...D zlib LCL (LossLess Codec Library) ZLIB
V....D zmbv Zip Motion Blocks Video
A....D aac AAC (Advanced Audio Coding)
A....D libfdk_aac Fraunhofer FDK AAC (codec aac)
A....D ac3_fixed ATSC A/52A (AC-3) (codec ac3)
A....D adpcm_adx SEGA CRI ADX ADPCM
A....D adpcm_argo ADPCM Argonaut Games
A....D g722 G.722 ADPCM (codec adpcm_g722)
A....D g726 G.726 ADPCM (codec adpcm_g726)
A....D g726le G.726 little endian ADPCM ("right-justified") (codec adpcm_g726le)
A....D adpcm_ima_alp ADPCM IMA High Voltage Software ALP
A....D adpcm_ima_amv ADPCM IMA AMV
A....D adpcm_ima_apm ADPCM IMA Ubisoft APM
A....D adpcm_ima_qt ADPCM IMA QuickTime
A....D adpcm_ima_ssi ADPCM IMA Simon & Schuster Interactive
A....D adpcm_ima_wav ADPCM IMA WAV
A....D adpcm_ima_ws ADPCM IMA Westwood
A....D adpcm_ms ADPCM Microsoft
A....D adpcm_swf ADPCM Shockwave Flash
A....D adpcm_yamaha ADPCM Yamaha
A....D alac ALAC (Apple Lossless Audio Codec)
A..... anull null audio
A....D aptx aptX (Audio Processing Technology for Bluetooth)
A....D aptx_hd aptX HD (Audio Processing Technology for Bluetooth)
A....D libcodec2 codec2 encoder using libcodec2 (codec codec2)
A....D comfortnoise RFC 3389 comfort noise generator
A....D dfpwm DFPWM1a audio
A..X.D dca DCA (DTS Coherent Acoustics) (codec dts)
A....D eac3 ATSC A/52 E-AC-3
A....D flac FLAC (Free Lossless Audio Codec)
A....D g723_1 G.723.1
A....D libgsm libgsm GSM (codec gsm)
A....D libgsm_ms libgsm GSM Microsoft variant (codec gsm_ms)
A....D liblc3 LC3 (Low Complexity Communication Codec) (codec lc3)
A..X.D mlp MLP (Meridian Lossless Packing)
A....D mp2 MP2 (MPEG audio layer 2)
A....D mp2fixed MP2 fixed point (MPEG audio layer 2) (codec mp2)
A....D libtwolame libtwolame MP2 (MPEG audio layer 2) (codec mp2)
A....D libmp3lame libmp3lame MP3 (MPEG audio layer 3) (codec mp3)
A....D libshine libshine MP3 (MPEG audio layer 3) (codec mp3)
A....D nellymoser Nellymoser Asao
A..X.D opus Opus
A....D libopus libopus Opus (codec opus)
A....D pcm_alaw PCM A-law / G.711 A-law
A....D pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray media
A....D pcm_dvd PCM signed 16|20|24-bit big-endian for DVD media
A....D pcm_f32be PCM 32-bit floating point big-endian
A....D pcm_f32le PCM 32-bit floating point little-endian
A....D pcm_f64be PCM 64-bit floating point big-endian
A....D pcm_f64le PCM 64-bit floating point little-endian
A....D pcm_mulaw PCM mu-law / G.711 mu-law
A....D pcm_s16be PCM signed 16-bit big-endian
A....D pcm_s16be_planar PCM signed 16-bit big-endian planar
A....D pcm_s16le PCM signed 16-bit little-endian
A....D pcm_s16le_planar PCM signed 16-bit little-endian planar
A....D pcm_s24be PCM signed 24-bit big-endian
A....D pcm_s24daud PCM D-Cinema audio signed 24-bit
A....D pcm_s24le PCM signed 24-bit little-endian
A....D pcm_s24le_planar PCM signed 24-bit little-endian planar
A....D pcm_s32be PCM signed 32-bit big-endian
A....D pcm_s32le PCM signed 32-bit little-endian
A....D pcm_s32le_planar PCM signed 32-bit little-endian planar
A....D pcm_s64be PCM signed 64-bit big-endian
A....D pcm_s64le PCM signed 64-bit little-endian
A....D pcm_s8 PCM signed 8-bit
A....D pcm_s8_planar PCM signed 8-bit planar
A....D pcm_u16be PCM unsigned 16-bit big-endian
A....D pcm_u16le PCM unsigned 16-bit little-endian
A....D pcm_u24be PCM unsigned 24-bit big-endian
A....D pcm_u24le PCM unsigned 24-bit little-endian
A....D pcm_u32be PCM unsigned 32-bit big-endian
A....D pcm_u32le PCM unsigned 32-bit little-endian
A....D pcm_u8 PCM unsigned 8-bit
A....D pcm_vidc PCM Archimedes VIDC
A....D real_144 RealAudio 1.0 (14.4K) (codec ra_144)
A....D roq_dpcm id RoQ DPCM
A..X.D s302m SMPTE 302M
A....D sbc SBC (low-complexity subband codec)
A..X.D sonic Sonic
A..X.D sonicls Sonic lossless
A....D libspeex libspeex Speex (codec speex)
A..X.D truehd TrueHD
A....D tta TTA (True Audio)
A..X.D vorbis Vorbis
A....D libvorbis libvorbis (codec vorbis)
A....D wavpack WavPack
A....D wmav1 Windows Media Audio 1
A....D wmav2 Windows Media Audio 2
S..... ssa ASS (Advanced SubStation Alpha) subtitle (codec ass)
S..... ass ASS (Advanced SubStation Alpha) subtitle
S..... dvbsub DVB subtitles (codec dvb_subtitle)
S..... dvdsub DVD subtitles (codec dvd_subtitle)
S..... mov_text 3GPP Timed Text subtitle
S..... srt SubRip subtitle (codec subrip)
S..... subrip SubRip subtitle
S..... text Raw text subtitle
S..... ttml TTML subtitle
S..... webvtt WebVTT subtitle
S..... xsub DivX subtitles (XSUB)

Decoders
.. lcevc V->V LCEVC
D avisynth AviSynth script +plugins
V....D librsvg Librsvg rasterizer (codec svg)

Selur
4th June 2025, 12:07
I'd prefer to use MBAS, since I build most of the Windows stuff with it. But thanks for the link.

Selur
4th June 2025, 13:33
Thanks to the suggestion of L4cache using:
--enable-libglslang
--enable-vulkan
did the trick.

F:\media-autobuild_suite\local64\bin-video>ffmpeg -h encoder=ffv1_vulkan
ffmpeg version N-119813-g6ad95be306 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 15.1.0 (Rev5, Built by MSYS2 project)
configuration: --pkg-config=pkgconf --cc='ccache gcc' --cxx='ccache g++' --ld='ccache g++' --extra-cxxflags=-fpermissive --extra-cflags=-Wno-int-conversion --disable-autodetect --enable-amf --enable-bzlib --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --enable-sdl2 --enable-ffnvcodec --enable-nvdec --enable-cuda-llvm --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-libaom --disable-debug --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libharfbuzz --enable-libmfx --enable-libmysofa --enable-libopenjpeg --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libopenmpt --enable-librav1e --enable-libsrt --enable-libgsm --enable-libvmaf --enable-libsvtav1 --enable-libglslang --enable-vulkan --extra-cflags=-DLIBTWOLAME_STATIC --extra-cflags=-DLIBXML_STATIC --extra-libs=-liconv --disable-w32threads
libavutil 60. 3.100 / 60. 3.100
libavcodec 62. 3.101 / 62. 3.101
libavformat 62. 0.102 / 62. 0.102
libavdevice 62. 0.100 / 62. 0.100
libavfilter 11. 0.100 / 11. 0.100
libswscale 9. 0.100 / 9. 0.100
libswresample 6. 0.100 / 6. 0.100
Encoder ffv1_vulkan [FFmpeg video codec #1 (Vulkan)]:
General capabilities: dr1 delay hardware
Threading capabilities: none
Supported hardware devices: vulkan
Supported pixel formats: vulkan
ffv1_vulkan AVOptions:
-slicecrc <int> E..V....... Protect slices with CRCs (from -1 to 2) (default -1)
-context <int> E..V....... Context model (from 0 to 1) (default 0)
-coder <int> E..V....... Coder type (from -2 to 2) (default range_tab)
rice 0 E..V....... Golomb rice
range_def -2 E..V....... Range with default table
range_tab 2 E..V....... Range with custom table
-qtable <int> E..V....... Quantization table (from -1 to 2) (default default)
default -1 E..V.......
8bit 0 E..V.......
greater8bit 1 E..V.......
-slices_h <int> E..V....... Number of horizontal slices (from -1 to 1024) (default -1)
-slices_v <int> E..V....... Number of vertical slices (from -1 to 1024) (default -1)
-force_pcm <boolean> E..V....... Code all slices with no prediction (default false)
-rct_search <boolean> E..V....... Run a search for RCT parameters (level 4 only) (default true)
-async_depth <int> E..V....... Internal parallelization depth (from 1 to INT_MAX) (default 1)

=> I'll look at it. :)

Cu Selur

Selur
4th June 2025, 14:18
Can't get ffv1_vulkan working at all. :(
=> can someone share an example on how to use this?
Got a working command line:
ffmpeg -y -hide_banner -an -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i "g:\TestClips&Co\test.avi" -vf "format=yuv444p,hwupload" -c:v ffv1_vulkan -pix_fmt vulkan "g:\Output\test.mkv"

Tested:
gbrp10le:
"No accelerated colorspace conversion found from yuv420p to gbrp10le (encoding works), output is

Color space : RGB
Bit depth : 10 bits

yuv420p10 => "Encoding frames with subsampling and unaligned dimensions is only supported in version 4 (-level 4)" adding '-level 4' fails, additing "-level 4 -strict -2" fails
-vf "format=yuv422p,hwupload" -level 4 -strict -2 works
-vf "format=yuv420p,hwupload" -level 4 -strict -2 works
Does anyone know what other formats are supported atm. ?

Jamaika
4th June 2025, 14:55
You can use bgr0

Selur
4th June 2025, 15:13
Using:
"F:\Hybrid\64bit\ffmpeg.exe" -y -noautorotate -nostdin -threads 8 -color_primaries bt470bg -color_trc smpte170m -colorspace bt470bg -color_range tv -i "G:\TestClips&Co\files\test.avi" -map 0:0 -an -sn -color_primaries bt470bg -color_trc smpte170m -colorspace bt470bg -color_range tv -fps_mode passthrough -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -vf "format=yuv420p,hwupload" -level 4 -strict -2 -vcodec ffv1_vulkan -context 0 -coder 0 -pix_fmt vulkan -metadata encoding_tool="Hybrid 2025.05.29.1" "g:\Output\test.mkv"
The encoding works without remporting an error message, but the output is broken.
Same with:
ffmpeg -y -noautorotate -nostdin -threads 8 -color_primaries bt470bg -color_trc smpte170m -colorspace bt470bg -color_range tv -i "G:\TestClips&Co\files\test.avi" -map 0:0 -an -sn -color_primaries bt470bg -color_trc smpte170m -colorspace bt470bg -color_range tv -fps_mode passthrough -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -vf "format=yuv444p,hwupload" -level 4 -strict -2 -vcodec ffv1_vulkan -context 0 -coder 0 -pix_fmt vulkan -metadata encoding_tool="Hybrid 2025.05.29.1" "g:\Output\test.mkv"

=> seems to me that this does not work atm.

Selur
4th June 2025, 15:14
Same when using bgr0, can't produce any working file with ffv1_vulkan. (also tried with different graphic chips; Intel, NVIDIA, AMD)

Leo 69
8th June 2025, 20:02
Hi Selur!

I experimented a bit with the ffv1_vulkan encoder and was able to make it work. Here's the command that produces readable files, we just need to disable the slice CRC checking:

ffmpeg -init_hw_device vulkan -i "D:\sample.mp4" -vf "hwupload=derive_device=vulkan,format=vulkan" -c:v ffv1_vulkan -level 4 -strict experimental -slicecrc 0 -c:a copy "D:\sample.mkv"

Selur
9th June 2025, 06:40
Can't reproduce this here.
ffmpeg -init_hw_device vulkan -i "G:\TestClips&Co\files\test.avi" -vf "hwupload=derive_device=vulkan,format=vulkan" -c:v ffv1_vulkan -level 4 -strict experimental -slicecrc 0 -c:a copy "D:\Output\sample.mkv"
creates a broken file here.
same with:
ffmpeg -init_hw_device vulkan -i "G:\TestClips&Co\files\test.avi" -vf "format=yuv420p,hwupload=derive_device=vulkan,format=vulkan" -c:v ffv1_vulkan -level 4 -strict experimental -slicecrc 0 -c:a copy "G:\Output\sample.mkv"
:(

Leo 69
9th June 2025, 08:03
Really? I tried just now again with another file and it works. Please try with the ffmpeg version I'm using:

https://app.filen.io/#/d/1c647093-0cba-4d35-9e0a-90e949e433ae%23kt4h55jH7MYH9vahZ88AcC9O5cR7b8b0

Selur
9th June 2025, 10:35
With your ffmpeg version, I get a playable fine, but when I play the file with mpc-hc I get:

---------------------------
MPC-HC
---------------------------
Timeout when closing filter graph.

Click YES to terminate player process. Click NO to wait longer (up to 15 seconds).
---------------------------
Ja Nein
---------------------------

after closing MPC-HC.

So, seems like the way I build ffmpeg with MBAS doesn't work as expected and even when I use your version the created files are not totally fine.
=> Sorry, the whole thing just seems to be still too experimental for it to be supported in Hybrid. (or for it to be really useful)

Cu Selur

Leo 69
9th June 2025, 11:07
You're right, I don't understand why they ship half-baked encoders.

NoX1911
9th June 2025, 14:04
Any idea how to fix this in Linux? When i preview my D2V/QTGMC VapourSynth script in Hybrid i get this error:

Failed to load /usr/lib/vapoursynth/bestsource.so. Error given: /usr/lib/libgobject-2.0.so.0: undefined symbol: g_pointer_bit_unlock_and_set
Failed to load /usr/lib/vapoursynth/libd2vsource.so. Error given: /usr/lib/libgobject-2.0.so.0: undefined symbol: g_pointer_bit_unlock_and_set

The same script runs properly on local vsedit. glib2 v2.84.2 was installed here on Wed May 21 20:40:26 2025. Maybe Hybrid is not yet updated to this?

Arch Linux 6.14.10
Hybrid 2025.05.17.1
vapoursynth-git 72.11.g99aa2a08-1
glib2 2.84.2


# Imports
import vapoursynth as vs
# getting Vapoursynth core
import sys
import os
core = vs.core
# Import scripts folder
scriptPath = '/home/user/opt/hybrid/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Import scripts
import qtgmc
import validate
# Source: '/tmp/JD2/parkrun1280_12mbps.ts'
# Current color space: YUV420P8, bit depth: 8, resolution: 1280x1080, frame rate: 29.97fps, scanorder: top field first, yuv luminance scale: limited, matrix: 709, format: mpeg-2
# Loading /tmp/JD2/parkrun1280_12mbps.ts using D2VSource
clip = core.d2v.Source(input="/tmp/JD2/ts_71a9607d01917b18f0481787a70185ed_853323747.d2v")
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.
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) # tff
# Deinterlacing using QTGMC
clip = qtgmc.QTGMC(Input=clip, Preset="Fast", TFF=True) # new fps: 29.97
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
clip = clip[::2] # selecting previously even frames
# adjusted resizing to achieve PAR 1:1 for preview
# resizing for preview to square pixel to 1920x1080
clip = core.resize.Bicubic(clip=clip, width=1920, height=1080)
# set output frame rate to 29.97fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# output
clip.set_output()