15.09.2026, 19:36
That is much better. Thank you.
Will give it a try.
Will give it a try.
|
My video
|
|
15.09.2026, 19:36
That is much better. Thank you.
Will give it a try.
Side note: the initial processing of the script will take quite a while, but the processing should be okay.
I'll also look into using SVP or rife instead of mv for the interpolation. (probably tomorrow)
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
16.09.2026, 19:40
using:
# Separate branch used only to calculate properties.
stats = core.std.PlaneStats(clip, plane=0)
def set_interp_flag(n, f):
f = f.copy()
use = False
if 0 < n < clip.num_frames - 1:
cur = f.props["PlaneStatsAverage"]
prev = stats.get_frame(n - 1).props["PlaneStatsAverage"]
nxt = stats.get_frame(n + 1).props["PlaneStatsAverage"]
use = cur > prev and cur > nxt
f.props["_UseInterp"] = int(use)
return f
# Input = original frames, prop source = stats
flagged = core.std.ModifyFrame(clip, stats, set_interp_flag)
org = flagged
import filldrops
core.std.LoadPlugin(path="%FILTERPATH%/FrameFilter/RIFE/librife.dll")
clip = filldrops.ReplaceFlagged(flagged, method="rife")Just noticed I forgot to upload the updated filldrops.py I used. => uploaded a new dev which includes it. Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Yesterday, 13:23
Thanks Selur.
Been a hectic week. Will have a look over the weekend.
Yesterday, 20:03
Uploaded a new dev with a reworked "filldrops.ReplaceFlagged" which should be a lot faster.
![]() so using: # Separate branch used only to calculate properties.
stats = core.std.PlaneStats(clip, plane=0)
# Calculate which frames need replacing
# A frame is marked for replacement if its average luma is higher than the previous and below the next.
# This way one frame flashes should get detected.
def set_interp_flag(n, f):
f = f.copy()
use = False
if 0 < n < clip.num_frames - 1:
cur = f.props["PlaneStatsAverage"]
prev = stats.get_frame(n - 1).props["PlaneStatsAverage"]
nxt = stats.get_frame(n + 1).props["PlaneStatsAverage"]
use = cur > prev and cur > nxt
f.props["_UseInterp"] = int(use)
return f
# Input = original frames, prop source = stats
flagged = core.std.ModifyFrame(clip, stats, set_interp_flag)
# do the actual replacement of the flagged frames
import filldrops
clip = filldrops.ReplaceFlagged(flagged, method="mv")![]() Remember to also add Denoiser->QTGMC. (Maybe I'll add some ui elements for this into the Hybrid next week.) Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Yesterday, 21:34
That would be great. I've always preferred UI instead of coding. That would help a lot.
Uploaded a new dev with ui support for this.
I rewrote it a bit to make it more generic and added it under "Filtering->Vapoursynth->Frame->Stabilize->FixFlicker". Try:
If you have different sources you might have to adjust the FixFlicker values used. (use Vapoursynth Preview with debug enabled) If you notice interpolation artifacts in the replaced frames, try a different interpolation method. Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page. |
|
« Next Oldest | Next Newest »
|