Log in

View Full Version : I need some help with interpolation videos, lots of detail in post


Pages : [1] 2 3

bradwiggo
23rd July 2018, 19:14
I have been trying to get some interpolation right for a few weeks now, and I need some help with it. I have tried a lot of things, all of which I will go into detail about in this post.

I started trying to interpolate videos as I read that a lot of TVs did this and wondered if there was a way I can do it on my computer. I went on youtube and searched for interpolation and found loads of videos of varying quality. After a while I started to look more specifically at interpolations of animation, as I am a fan of animated movies. I found numerous examples of interpolations of animation, this probably being the best I found: https://www.youtube.com/watch?v=sPAPWqXT5Xg&list=PLDI099fjeNZQ62kuezlbtDCPRjOB-_7UA&index=4&t=0s

I also focused on this one as in the comments of the video the person who uploaded it said it was done with SVP, so that gave me a hint as to where to start.

I tried this tutorial: http://www.spirton.com/convert-videos-to-60fps/
and wasn't impressed by the results. The camera looked smooth, but motion on screen still looked like it was running at 30fps.

I then made a post about this: https://forum.videohelp.com/threads/389465-Why-don-t-my-interpolated-videos-look-as-good-as-examples-I-see-on-youtube/page3#post2524201

and I got a lot of useful advice, which allowed me to produce a much better interpolation, the best example of which is probably this: https://1drv.ms/u/s!AiOx2LWATSlvzjpQLo1axA8V3dqT

However, it still didn't look as good as the youtube video. There are also quite a few duplicate frames in that video.

The script I was using to make that video was something like this:

PluginPath = "C:\Users\bradw\Downloads\MeGUI-2836-32\tools\lsmash\"
LoadPlugin(PluginPath+"LSMASHSource.dll")
LoadPlugin("C:\Users\bradw\Downloads\MeGUI-2836-32\tools\avisynth_plugin\svpflow1.dll")
LoadPlugin("C:\Users\bradw\Downloads\MeGUI-2836-32\tools\avisynth_plugin\svpflow2.dll")
LSMASHVideoSource("C:\Users\bradw\Documents\file.mkv")
AssumeFPS(24000,1001)
super=SVSuper("{gpu:0}")
vectors=SVAnalyse(super, "{block:{w:16}}") # 16 is the default, you can try 8, 24, and 32 also
SVSmoothFps(super, vectors, "{rate:{num:5, den:2, algo:2, scene:{mode:1}}}", url="www.svp-team.com", mt=1)

My original source for these tests is here: https://1drv.ms/v/s!AiOx2LWATSlvzjxoZFpKvN_R2yu_

I am not very knowledgeable on the subject of interpolation, nor am I of avisynth or video encoding in general, however I do have a basic understanding of these scripts.


Any advice on what I can do in order to make my interpolations look smoother would be greatly appreciated, I hope I have provided enough information and enough samples in this post, but if you need more, I will be happy to find them.

Also, I use MeGUI to run these avisynth scripts.

My computer specs (incase it matters):

AMD 10-7300
8GB RAM
1TB HDD
Radeon R6 integrated graphics.
It's a Lenovo Z50-75 laptop.

StainlessS
23rd July 2018, 20:04
See here,

https://forum.doom9.org/showthread.php?t=174793

Something smaller and simpler


# jm_fps.avs

Global G_DCT=1

function jm_fps(clip source) {
fps_num = 60
fps_den = 1

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward = MAnalyse(superfilt, isb = false, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


EDIT:

Manolito mod of above, from here:- https://forum.doom9.org/showthread.php?p=1800439#post1800439


# Motion Protected FPS converter script by johnmeyer from Doom9
# Slightly modified interface by manolito
# Requires MVTools V2 and RemoveGrain
# Also needs fftw3.dll in the System32 or SysWOW64 folder for Dct values other than 0


function jm_fps(clip source, float "fps", int "BlkSize", int "Dct")
{
fps = default(fps, 25.000)
fps_num = int(fps * 1000)
fps_den = 1000
BlkSize = default(BlkSize, 16)
Dct = default(Dct, 0)

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1, sharp = 1, rfilter = 4) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16, sharp = 1, rfilter = 4) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward = MAnalyse(superfilt, isb = false, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}

bradwiggo
23rd July 2018, 20:32
See here,

https://forum.doom9.org/showthread.php?t=174793

Something smaller and simpler


# jm_fps.avs

Global G_DCT=1

function jm_fps(clip source) {
fps_num = 60
fps_den = 1

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward = MAnalyse(superfilt, isb = false, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


EDIT:

Manolito mod of above, from here:- https://forum.doom9.org/showthread.php?p=1800439#post1800439


# Motion Protected FPS converter script by johnmeyer from Doom9
# Slightly modified interface by manolito
# Requires MVTools V2 and RemoveGrain
# Also needs fftw3.dll in the System32 or SysWOW64 folder for Dct values other than 0


function jm_fps(clip source, float "fps", int "BlkSize", int "Dct")
{
fps = default(fps, 25.000)
fps_num = int(fps * 1000)
fps_den = 1000
BlkSize = default(BlkSize, 16)
Dct = default(Dct, 0)

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1, sharp = 1, rfilter = 4) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16, sharp = 1, rfilter = 4) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward = MAnalyse(superfilt, isb = false, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


Thanks, I will try those out, are they for avisynth?

Also, where do I put the path for the input video?

lansing
23rd July 2018, 20:50
Frame interpolation is always going to be a hit or miss, when it hits, you'll get a nice looking interpolated frame, when it misses, you'll get a frame with artifacts. For example, when the original frame rate is low and there's a fast moving object and you're trying to achieve a frame rate that is more than twice of the original, more than likely it's going to be a miss.

However, there should not be any difference on "smoothness" between all of the different converter filters because they all shared the same backbone. What you should be focusing on are the differences in the interpolation quality and their handling of artifact.

To get less artifact, you should only do double frame rate conversion. So if your source is 24fps, you should be doing 48fps conversion instead of 60fps because interpolating 1 frame in between frames is always going to have less chance of artifact than interpolating 2 frames in between.

bradwiggo
23rd July 2018, 20:53
Frame interpolation is always going to be a hit or miss, when it hits, you'll get a nice looking interpolated frame, when it misses, you'll get a frame with artifacts. For example, when the original frame rate is low and there's a fast moving object and you're trying to achieve a frame rate that is more than twice of the original, more than likely it's going to be a miss.

However, there should not be any difference on "smoothness" between all of the different converter filters because they all shared the same backbone. What you should be focusing on are the differences in the interpolation quality and their handling of artifact.

To get less artifact, you should only do double frame rate conversion. So if your source is 24fps, you should be doing 48fps conversion instead of 60fps because interpolating 1 frame in between frames is always going to have less chance of artifact than interpolating 2 frames in between.

Why does my video look less smooth than the youtube video if the interpolation is the same?

lansing
23rd July 2018, 21:06
Why does my video look less smooth than the youtube video if the interpolation is the same?

Because you're using blend mode?

bradwiggo
23rd July 2018, 21:11
Because you're using blend mode?

What should I change to stop that? Is that the Scene Mode argument?

lansing
23rd July 2018, 21:19
What should I change to stop that? Is that the Scene Mode argument?

I don't know, I'm using the older 3.1.7 version. There was an option called "artifact masking", you have to disable it, turning it to "strongest" will blend the frames.

bradwiggo
23rd July 2018, 21:23
I don't know, I'm using the older 3.1.7 version. There was an option called "artifact masking", you have to disable it, turning it to "strongest" will blend the frames.

the 3.1.7 version of what, svpflow?

Also, do you know how to use the script that StainlessS posted, as I don't know how to set the input video.

bradwiggo
23rd July 2018, 21:51
See here,

https://forum.doom9.org/showthread.php?t=174793

Something smaller and simpler


# jm_fps.avs

Global G_DCT=1

function jm_fps(clip source) {
fps_num = 60
fps_den = 1

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward = MAnalyse(superfilt, isb = false, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


EDIT:

Manolito mod of above, from here:- https://forum.doom9.org/showthread.php?p=1800439#post1800439


# Motion Protected FPS converter script by johnmeyer from Doom9
# Slightly modified interface by manolito
# Requires MVTools V2 and RemoveGrain
# Also needs fftw3.dll in the System32 or SysWOW64 folder for Dct values other than 0


function jm_fps(clip source, float "fps", int "BlkSize", int "Dct")
{
fps = default(fps, 25.000)
fps_num = int(fps * 1000)
fps_den = 1000
BlkSize = default(BlkSize, 16)
Dct = default(Dct, 0)

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1, sharp = 1, rfilter = 4) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16, sharp = 1, rfilter = 4) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward = MAnalyse(superfilt, isb = false, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


I have tried to gte this working but I have a few questions:

1. Where do I put the path to the input video? As meGUI gives the error "the scripts return was not a video clip"

2. Is should I use that as a .avs file for MeGUI, is that the right way to use it?

StainlessS
23rd July 2018, 22:00
# Whatever.avs


# Motion Protected FPS converter script by johnmeyer from Doom9
# Slightly modified interface by manolito
# Requires MVTools V2 and RemoveGrain
# Also needs fftw3.dll in the System32 or SysWOW64 folder for Dct values other than 0

Function jm_fps(clip source, float "fps", int "BlkSize", int "Dct") {
fps = default(fps, 25.000)
fps_num = int(fps * 1000)
fps_den = 1000
BlkSize = default(BlkSize, 16)
Dct = default(Dct, 0)
prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1, sharp = 1, rfilter = 4) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16, sharp = 1, rfilter = 4) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward = MAnalyse(superfilt, isb = false, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)
return out
}

DCT = 0 # EDIT: 1 is SLOW
BLKSIZE = 16

c=Avisource("D:\whatever.avi")

Return jm_fps(c,fps=c.FrameRate*2,blkSize=BLKSIZE,dct=DCT)


1) See above.
2) Yes.

lansing
23rd July 2018, 22:11
the 3.1.7 version of what, svpflow?

Also, do you know how to use the script that StainlessS posted, as I don't know how to set the input video.

svp 3.1, it's an older version. It's svp 4 now.

This is from the svpflow sample script, and this (https://www.svp-team.com/wiki/Manual:SVPflow) is all the parameter description:


SetMemoryMax(1024)

LoadPlugin("svpflow1.dll")
LoadPlugin("svpflow2.dll")

threads=9

SetFilterMTMode("DEFAULT_MT_MODE",2)
SetFilterMTMode("DirectShowSource",3)
SetFilterMTMode("SVSuper",1)
SetFilterMTMode("SVAnalyse",1)
SetFilterMTMode("SVSmoothFps",1)

DirectShowSource("path\to\video.avi")
ConvertToYV12()

super_params="{pel:2,gpu:1}"

analyse_params="""{block:{w:32,h:32},
main:{search:{coarse:{distance:-10}}},
refine:[{thsad:200}]}"""

smoothfps_params="{rate:{num:5,den:2},algo:2,cubic:1,light:{aspect:1.33}}"

super = SVSuper(super_params)
vectors = SVAnalyse(super, analyse_params)

SVSmoothFps(super, vectors, smoothfps_params, mt=threads)

Prefetch(threads)



Change "algo" to 1 or 2 for no blending.

bradwiggo
23rd July 2018, 22:39
# Whatever.avs


# Motion Protected FPS converter script by johnmeyer from Doom9
# Slightly modified interface by manolito
# Requires MVTools V2 and RemoveGrain
# Also needs fftw3.dll in the System32 or SysWOW64 folder for Dct values other than 0

Function jm_fps(clip source, float "fps", int "BlkSize", int "Dct") {
fps = default(fps, 25.000)
fps_num = int(fps * 1000)
fps_den = 1000
BlkSize = default(BlkSize, 16)
Dct = default(Dct, 0)
prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1, sharp = 1, rfilter = 4) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16, sharp = 1, rfilter = 4) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward = MAnalyse(superfilt, isb = false, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)
return out
}

DCT = 0 # EDIT: 1 is SLOW
BLKSIZE = 16

c=Avisource("D:\whatever.avi")

Return jm_fps(c,fps=c.FrameRate*2,blkSize=BLKSIZE,dct=DCT)


1) See above.
2) Yes.

It said it couldn't open the file, it might be because I was using an mp4 or mkv file, not avi, do I need a different instruction to avisource?

bradwiggo
23rd July 2018, 22:40
svp 3.1, it's an older version. It's svp 4 now.

This is from the svpflow sample script, and this (https://www.svp-team.com/wiki/Manual:SVPflow) is all the parameter description:


SetMemoryMax(1024)

LoadPlugin("svpflow1.dll")
LoadPlugin("svpflow2.dll")

threads=9

SetFilterMTMode("DEFAULT_MT_MODE",2)
SetFilterMTMode("DirectShowSource",3)
SetFilterMTMode("SVSuper",1)
SetFilterMTMode("SVAnalyse",1)
SetFilterMTMode("SVSmoothFps",1)

DirectShowSource("path\to\video.avi")
ConvertToYV12()

super_params="{pel:2,gpu:1}"

analyse_params="""{block:{w:32,h:32},
main:{search:{coarse:{distance:-10}}},
refine:[{thsad:200}]}"""

smoothfps_params="{rate:{num:5,den:2},algo:2,cubic:1,light:{aspect:1.33}}"

super = SVSuper(super_params)
vectors = SVAnalyse(super, analyse_params)

SVSmoothFps(super, vectors, smoothfps_params, mt=threads)

Prefetch(threads)



Change "algo" to 1 or 2 for no blending.

I already had algo as 2 on mine I thought?

StainlessS
23rd July 2018, 23:10
What, you aint even sure if its mp4 or mkv ?

Not really sure that you should be posting in the Avisynth forum if you have not even attempted to figure out how to use Avisynth.

Suggest that you look at ffmpegsource or LSMASHSource (I rarely use either and convert all except VOB/MPG to avi, doing anything else usually
involves too much messing about trying to figure out the better source filter to use).
I do not recommend DirectshowSource.

EDIT:

_CLIP_To_UT_YV12_D.cmd - Script for ffmpeg -> AVI UT_Video YV12 PCM audio to D:\ (dont like SPACE's in filenames)

setlocal

REM Where to Find ffmpeg
set FFMPEG="C:\BIN\ffmpeg.exe"

REM Where to get input file, No terminating Backslash, "." = current directory
set INDIR="."


REM Where to place output file, No terminating Backslash.
set OUTDIR="D:"


FOR %%A IN (*.wmv *.mpg *.avi *.flv *.mov *.mp4 *.m4v *.RAM *.RM *.mkv *.TS *.ogv) DO (
%FFMPEG% -i "%INDIR%\%%A" -vcodec utvideo -acodec pcm_s16le "%OUTDIR%\%%~nxA.AVI"

)

Pause



EDIT: A bit more help


REM We DO NOT LIKE SPACES IN FILE NAMES (REM == REMark ie comment)

setlocal

REM Where to Find ffmpeg
set FFMPEG="C:\BIN\ffmpeg.exe"

REM Where to get input file, No terminating Backslash, "." = current directory (ie same as dir .bat file)
set INDIR="."

REM Where to place output file, No terminating Backslash. "." would be same as .bat file
set OUTDIR="D:"

REM Below, can add extensionas as eg *.WMV (SPACE separated)
FOR %%A IN (*.mp4 *.vob *.mpg *.TS) DO (

REM ****** Un-REM ONLY one of below lines *******.
%FFMPEG% -i "%INDIR%\%%A" -vcodec copy -acodec copy "%OUTDIR%\%%~nxA.MKV"
REM %FFMPEG% -i "%INDIR%\%%A" -vcodec utvideo -acodec copy "%OUTDIR%\%%~nxA.MKV"
REM %FFMPEG% -i "%INDIR%\%%A" -vcodec utvideo -acodec pcm_s16le "%OUTDIR%\%%~nxA.AVI"
REM *********************************************.

)

REM ... Above UN-REM'ed lines :
REM (1) Remux, copy both video and audio (output MKV).
REM (2) UtVideo lossless video, copy audio (output MKV).
REM (3) UtVideo lossless video, PCM audio (output AVI).

Pause

bradwiggo
23rd July 2018, 23:12
What, you aint even sure if its mp4 or mkv ?

Not really sure that you should be posting in the Avisynth forum if you have not even attempted to figure out how to use Avisynth.

Suggest that you look at ffmpegsource or LSMASHSource (I rarely use either and convert all except VOB/MPG to avi, doing anything else usually
involves too much messing about trying to figure out the better source filter to use).
I do not recommend DirectshowSource.

I have a few files that are mkv and a few that are mp4, I can't remember which one this is. I have a basic knowledge of avisynth, but I don't know a huge amount about it.

StainlessS
23rd July 2018, 23:54
Suggest LSMASHVideoSource(), and LSMASHAudioSource()
if one of these, mov, mp4, m4v, 3gp, 3g2, mj2, dvb, dcf, m21.

No idea what is best for mkv.

johnmeyer
24th July 2018, 00:32
I suggest that anyone trying to help the OP read the following because this thread is going down the same path as the thread he started a month ago on Videohelp.com:

Why don't my interpolated videos look as good as examples I see on youtube? (https://forum.videohelp.com/threads/389465-Why-don-t-my-interpolated-videos-look-as-good-as-examples-I-see-on-youtube#post2523083)

The problem is that everyone there -- and it is now true of the posts so far in this thread -- didn't initially understand the real problem at the heart of what he is trying to do. Here's that problem:

He wants to create smoother motion for animation and, as most people reading this know, animation repeats some frames, but not others, and does so in a way that does not follow a regular pattern, like telecine patterns usually do. So, if you simply apply MVTools2, SVP, or Interframe motion estimation to create more frames, you end up with a real visual mess, and the motion doesn't look that much smoother.

What first needs to be done is to replace the dups in a way that takes into account the variable time gap between frames that are actually different. Thus, I don't think you can simply use FillDrops() (a function I've posted many times) to replace all duplicates, first because there are some situations where there is more than one dup in a row which will cause FillDrops() to fail, but also because some gaps in time between non-duplicate frame are going to be larger than others. THAT is where you want to insert a motion estimated frame, after you've deleted a duplicate, NOT at the place where the dup is removed.

One thing I would suggest to the OP, now that he is here on doom9, is to take a look at this thread I started several years ago:

Automatically fix dups followed (eventually) by drops (https://forum.doom9.org/showthread.php?t=161758)

What I tried to do in that thread -- and with the help of some old code written by Didée I was able to accomplish -- was measure the temporal gaps between each non-dup frame. Then, after I deleted each duplicate, rather than insert an interpolated frame at the location of the deleted frame, I instead used my "gap logic" to insert an interpolated frame at a nearby location that had the biggest apparent jump in motion.

It wasn't perfect, but I think I was on the right track, and I believe that it might be a way to fix the OP's problem.

BTW, if someone can figure this out, what he wants is actually something that might be useful to other animation fans.

lansing
24th July 2018, 00:38
I already had algo as 2 on mine I thought?

Just use it and you'll see.

So far I see 3 approaches to deal with detected artifact.

1. Do nothing, rely solely on the ability of mvtools. You'll see artifact but get smoothness.

2. Don't change anything. Keep the object as to the original. You'll see smoothness on objects that aren't artifact detected and stutter on objects that are. No artifact.

3. Blend the frames. Since no new interpolated frame has been created, you basically ended up with what the original looks like on playback.


The scripts StainlessS referred are approach 1. The youtube one is 2. Your script as well as framerateconverter is 3.

bradwiggo
24th July 2018, 09:57
Just use it and you'll see.

So far I see 3 approaches to deal with detected artifact.

1. Do nothing, rely solely on the ability of mvtools. You'll see artifact but get smoothness.

2. Don't change anything. Keep the object as to the original. You'll see smoothness on objects that aren't artifact detected and stutter on objects that are. No artifact.

3. Blend the frames. Since no new interpolated frame has been created, you basically ended up with what the original looks like on playback.


The scripts StainlessS referred are approach 1. The youtube one is 2. Your script as well as framerateconverter is 3.

Which script would I want to use for option 2?

FranceBB
24th July 2018, 17:01
Just use it and you'll see.

So far I see 3 approaches to deal with detected artifact.

1. Do nothing, rely solely on the ability of mvtools. You'll see artifact but get smoothness.

2. Don't change anything. Keep the object as to the original. You'll see smoothness on objects that aren't artifact detected and stutter on objects that are. No artifact.

3. Blend the frames. Since no new interpolated frame has been created, you basically ended up with what the original looks like on playback.


I'd also add 2.5:

2.5. Interpolate something, blend something else. You'll get smoothness on objects that aren't artifact detected and blending on objects that are. Still, no artifact, but a slightly better smoothness.


I very rarely rely on MVTools in Broadcast and I use it on very rare circumstances like slow-motions.
The reason why I use it is that it achieves better results than the built-in linear interpolation filter in AVID Media Composer (hats off to the open source community :D).
Anyway, whenever we shoot something ourselves, we try to shoot at 50fps progressive in order to just use

assumeTFF()
separatefields()
selectevery(4,0,3)
weave()

When we have to make a slow-motion, we record at 200fps progressive so we can slow it down in post production and get it smooth.
Sometimes, the producer wants to make a slow-motion of a scene later on, on a second thought, when we are in studio and we already recorded the scene at 50fps progressive; in that case I use MVTools.

lansing
24th July 2018, 17:43
Which script would I want to use for option 2?

It's the sample script I posted. The snow was moving at 24 fps while the character was at 60 fps. Lowering the block size to 16x16 was able to detect the snow, but it wasn't able to interpolate any new snow object in between, so I think mvtools has reach its limit on this one. But you can try to tweak other parameters yourself to see if it helps.

bradwiggo
24th July 2018, 17:58
It's the sample script I posted. The snow was moving at 24 fps while the character was at 60 fps. Lowering the block size to 16x16 was able to detect the snow, but it wasn't able to interpolate any new snow object in between, so I think mvtools has reach its limit on this one. But you can try to tweak other parameters yourself to see if it helps.

When I look at one of the previous attempt I had made, the snow does move position every frame, but it seems to be in position x in one frame, and then it will appear I both position x and y the next frame, and then just y the one after.

How did you tell it was detecting the snow if it wasn't changing it, is there a way to view all the moving objects it has detected?

bradwiggo
24th July 2018, 19:03
It's the sample script I posted. The snow was moving at 24 fps while the character was at 60 fps. Lowering the block size to 16x16 was able to detect the snow, but it wasn't able to interpolate any new snow object in between, so I think mvtools has reach its limit on this one. But you can try to tweak other parameters yourself to see if it helps.

I tried using the sample script you posted, but megui is stuck at 99.98% completion.

That script seems doesn't seem to work very well, I press queue in megui and it it will start and immediately stop, no error displayed but megui has a red cross next to it on the icon which indicates an error.

The log tab in megui said this:

--[Error] [24/07/2018 19:14:11] Process exits with error: 0xC0000005 STATUS_ACCESS_VIOLATION (-1073741819)

lansing
24th July 2018, 22:27
I tried using the sample script you posted, but megui is stuck at 99.98% completion.

That script seems doesn't seem to work very well, I press queue in megui and it it will start and immediately stop, no error displayed but megui has a red cross next to it on the icon which indicates an error.

The log tab in megui said this:

--[Error] [24/07/2018 19:14:11] Process exits with error: 0xC0000005 STATUS_ACCESS_VIOLATION (-1073741819)

SVP is using Nvidia card to do the real time frame interpolation. Do you have a Nvidia card in the first place?

bradwiggo
24th July 2018, 22:32
SVP is using Nvidia card to do the real time frame interpolation. Do you have a Nvidia card in the first place?

No, I have an AMD integrated card, SVP can use all types of care can't it? https://www.svp-team.com/wiki/GPU_Compatibility

bradwiggo
24th July 2018, 22:36
I suggest that anyone trying to help the OP read the following because this thread is going down the same path as the thread he started a month ago on Videohelp.com:

Why don't my interpolated videos look as good as examples I see on youtube? (https://forum.videohelp.com/threads/389465-Why-don-t-my-interpolated-videos-look-as-good-as-examples-I-see-on-youtube#post2523083)

The problem is that everyone there -- and it is now true of the posts so far in this thread -- didn't initially understand the real problem at the heart of what he is trying to do. Here's that problem:

He wants to create smoother motion for animation and, as most people reading this know, animation repeats some frames, but not others, and does so in a way that does not follow a regular pattern, like telecine patterns usually do. So, if you simply apply MVTools2, SVP, or Interframe motion estimation to create more frames, you end up with a real visual mess, and the motion doesn't look that much smoother.

What first needs to be done is to replace the dups in a way that takes into account the variable time gap between frames that are actually different. Thus, I don't think you can simply use FillDrops() (a function I've posted many times) to replace all duplicates, first because there are some situations where there is more than one dup in a row which will cause FillDrops() to fail, but also because some gaps in time between non-duplicate frame are going to be larger than others. THAT is where you want to insert a motion estimated frame, after you've deleted a duplicate, NOT at the place where the dup is removed.

One thing I would suggest to the OP, now that he is here on doom9, is to take a look at this thread I started several years ago:

Automatically fix dups followed (eventually) by drops (https://forum.doom9.org/showthread.php?t=161758)

What I tried to do in that thread -- and with the help of some old code written by Didée I was able to accomplish -- was measure the temporal gaps between each non-dup frame. Then, after I deleted each duplicate, rather than insert an interpolated frame at the location of the deleted frame, I instead used my "gap logic" to insert an interpolated frame at a nearby location that had the biggest apparent jump in motion.

It wasn't perfect, but I think I was on the right track, and I believe that it might be a way to fix the OP's problem.

BTW, if someone can figure this out, what he wants is actually something that might be useful to other animation fans.

Is that the script you think the video might have been using, as that is my ultimate goal, to find a script that gets me as close to that video as possible.

bradwiggo
25th July 2018, 01:57
Suggest LSMASHVideoSource(), and LSMASHAudioSource()
if one of these, mov, mp4, m4v, 3gp, 3g2, mj2, dvb, dcf, m21.

No idea what is best for mkv.

I tried the second script you posted in your first comment, and there is quite a lot of stutter, however I have just noticed I didn't change the fps bit to 24, could that be causing the stutter, as it is 24fps not 25?

johnmeyer
25th July 2018, 02:37
OK, even though I don't like animation, I've been reading these posts (at videohelp and now here) for over a month so I download the clip and played with it.

My conclusion?

Unfortunately I now have exactly the same conclusion as I did over in Videohelp: you are chasing a unicorn.

There are several problems. First, even though the animation has no dups (unlike anime, etc.) it is still only 24 fps, so there are big gaps in time between frames. The bigger the time gap, the tougher time motion estimation has in figuring out where to put everything for the intermediate frames.

Second, there are some really small objects to track (e.g., the snowflakes). There is no way in the world motion estimation can figure out what to do with these, especially since they, by design, are darting almost at random. From a technical standpoint, they are pretty much the same as noise.

Third, many of the objects are pretty murky. As one example, about 1/3 of the way through the clip her turquoise glove hand is moving in front of her purple dress. There is very little contrast between the hand and the dress, so the algorithms don't do what they should.

I tried those "magic" settings I referred to before, and which seem to have worked well for many people on other material, but the result was pretty bad. It isn't worth posting the result, but here's the script I used (I always frameserve from Vegas, so the video file is always "fs.avi", the frameserver signpost):

loadplugin("C:\Program Files\AviSynth 2.5\plugins\removegrain.dll")

film="e:\fs.avi"

#setmtmode(5,4)
source= Avisource(film).killaudio().converttoYV12()
#setmtmode(2)


prefiltered = RemoveGrain(source,22)
super = MSuper(source,hpad=16, vpad=16, levels=1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad=16, vpad=16) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize=16,overlap=4,search=3,dct=0)
forward = MAnalyse(superfilt, isb = false, blksize=16,overlap=4,search=3,dct=0)
forward_re = MRecalculate(super, forward, blksize=8, overlap=2,thSAD=100)
backward_re = MRecalculate(super, backward, blksize=8, overlap=2,thSAD=100)
MFlowFps(source,super, backward_re, forward_re, num=60000, den=1001,ml=200,mask=2)

My advice is to simply watch and enjoy the film, although now that I know what film it is, my further advice is to turn down the volume whenever Idina Menzel is singing. She has the harshest, screechiest voice I've ever heard. Also, I've heard her sing live, and without autotune she can't hold a note.

Not my favorite singer, as you can tell.

lansing
25th July 2018, 07:21
No, I have an AMD integrated card, SVP can use all types of care can't it? https://www.svp-team.com/wiki/GPU_Compatibility

I don't know, you can try turning off gpu mode to see what happen, set "gpu:0" to turn it off.

bradwiggo
25th July 2018, 11:39
OK, even though I don't like animation, I've been reading these posts (at videohelp and now here) for over a month so I download the clip and played with it.

My conclusion?

Unfortunately I now have exactly the same conclusion as I did over in Videohelp: you are chasing a unicorn.

There are several problems. First, even though the animation has no dups (unlike anime, etc.) it is still only 24 fps, so there are big gaps in time between frames. The bigger the time gap, the tougher time motion estimation has in figuring out where to put everything for the intermediate frames.

Second, there are some really small objects to track (e.g., the snowflakes). There is no way in the world motion estimation can figure out what to do with these, especially since they, by design, are darting almost at random. From a technical standpoint, they are pretty much the same as noise.

Third, many of the objects are pretty murky. As one example, about 1/3 of the way through the clip her turquoise glove hand is moving in front of her purple dress. There is very little contrast between the hand and the dress, so the algorithms don't do what they should.

I tried those "magic" settings I referred to before, and which seem to have worked well for many people on other material, but the result was pretty bad. It isn't worth posting the result, but here's the script I used (I always frameserve from Vegas, so the video file is always "fs.avi", the frameserver signpost):

loadplugin("C:\Program Files\AviSynth 2.5\plugins\removegrain.dll")

film="e:\fs.avi"

#setmtmode(5,4)
source= Avisource(film).killaudio().converttoYV12()
#setmtmode(2)


prefiltered = RemoveGrain(source,22)
super = MSuper(source,hpad=16, vpad=16, levels=1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad=16, vpad=16) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize=16,overlap=4,search=3,dct=0)
forward = MAnalyse(superfilt, isb = false, blksize=16,overlap=4,search=3,dct=0)
forward_re = MRecalculate(super, forward, blksize=8, overlap=2,thSAD=100)
backward_re = MRecalculate(super, backward, blksize=8, overlap=2,thSAD=100)
MFlowFps(source,super, backward_re, forward_re, num=60000, den=1001,ml=200,mask=2)

My advice is to simply watch and enjoy the film, although now that I know what film it is, my further advice is to turn down the volume whenever Idina Menzel is singing. She has the harshest, screechiest voice I've ever heard. Also, I've heard her sing live, and without autotune she can't hold a note.

Not my favorite singer, as you can tell.

I don't see how I am chasing the impossible though, as I have seen an interpolation that looks good (the youtube video), surely it must be possible to get it to look at least that good, as somebody has done it before.

bradwiggo
25th July 2018, 11:41
I don't know, you can try turning off gpu mode to see what happen, set "gpu:0" to turn it off.

I tried that and got an error: cubic mode unsupported on CPU.

I have however just noticed that at the page I linked in my last comment, it says you need an older driver for AMD iGPUs, so I maybe should have a look at tracking that driver down.

bradwiggo
25th July 2018, 14:07
See here,

https://forum.doom9.org/showthread.php?t=174793

Something smaller and simpler


# jm_fps.avs

Global G_DCT=1

function jm_fps(clip source) {
fps_num = 60
fps_den = 1

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward = MAnalyse(superfilt, isb = false, blksize = 16, overlap = 4, search = 3, dct = G_DCT)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


EDIT:

Manolito mod of above, from here:- https://forum.doom9.org/showthread.php?p=1800439#post1800439


# Motion Protected FPS converter script by johnmeyer from Doom9
# Slightly modified interface by manolito
# Requires MVTools V2 and RemoveGrain
# Also needs fftw3.dll in the System32 or SysWOW64 folder for Dct values other than 0


function jm_fps(clip source, float "fps", int "BlkSize", int "Dct")
{
fps = default(fps, 25.000)
fps_num = int(fps * 1000)
fps_den = 1000
BlkSize = default(BlkSize, 16)
Dct = default(Dct, 0)

prefiltered = RemoveGrain(source, 22)
super = MSuper(source, hpad = 16, vpad = 16, levels = 1, sharp = 1, rfilter = 4) # one level is enough for MRecalculate
superfilt = MSuper(prefiltered, hpad = 16, vpad = 16, sharp = 1, rfilter = 4) # all levels for MAnalyse
backward = MAnalyse(superfilt, isb = true, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward = MAnalyse(superfilt, isb = false, blksize = BlkSize, overlap = 4, search = 3, dct = Dct)
forward_re = MRecalculate(super, forward, blksize = 8, overlap = 2, thSAD = 100)
backward_re = MRecalculate(super, backward, blksize = 8, overlap = 2, thSAD = 100)
out = MFlowFps(source, super, backward_re, forward_re, num = fps_num, den = fps_den, blend = false, ml = 200, mask = 2)

return out
}


I tried this script with the framerate at 25fps and at 23.978 fps (which is the source framerate), and both times the result had a lot of stutter: https://1drv.ms/u/s!AiOx2LWATSlvzj80scSHeGeZ30Ur (that is with the fps = 23.978)

johnmeyer
25th July 2018, 16:08
I don't see how I am chasing the impossible though, as I have seen an interpolation that looks good (the youtube video), surely it must be possible to get it to look at least that good, as somebody has done it before.You don't seem to understand what I have been posting. This technology can work miracles on some scenes, and totally fail on others. I gave you a list of the types of things which cause it to fail. That is what you are seeing. There is no way around it except to do the film in sections and use frame blending for the frames where interpolation fails. It takes a lot of manual work, but if you are willing to put the work into it, you can get decent results.

You will not get those results by suddenly finding some magic settings, pushing a button, and having the results appear.

bradwiggo
25th July 2018, 16:18
You don't seem to understand what I have been posting. This technology can work miracles on some scenes, and totally fail on others. I gave you a list of the types of things which cause it to fail. That is what you are seeing. There is no way around it except to do the film in sections and use frame blending for the frames where interpolation fails. It takes a lot of manual work, but if you are willing to put the work into it, you can get decent results.

You will not get those results by suddenly finding some magic settings, pushing a button, and having the results appear.

I see what you mean, but the video I linked to I assume was all made with one script, as it is only 3 minutes long, so surely there must be a script which can produce that, even if it doesn't do as well for the rest of the film. I have looked a bit more at the youtube channel of the person who uploaded that video, and they have 3 similar videos, which I assume were done using the same script.

My goal at the moment isn't to try to find a script that can produce interpolation of the quality in the video for the whole movie, it is simply to find the script that was used to make that video. Even if that script makes the rest of the movie look rubbish.

bradwiggo
25th July 2018, 19:26
I don't know, you can try turning off gpu mode to see what happen, set "gpu:0" to turn it off.

Does the quality of the interpolation depend on the type of graphics card you have?

FranceBB
25th July 2018, 19:52
Does the quality of the interpolation depend on the type of graphics card you have?

No, only speed is affected.
Anyway, the GPU implementation might be slightly different than the CPU one.

Anyway, johnmeyer is right, there are cases in which interpolation fails, no matter what filter you use. The best advice would be to use motion interpolation whenever you can and use blending on all the other scenes. Blending doesn't look as smooth as motion interpolation, but it doesn't make the video stutter as a repeated frame does.

bradwiggo
25th July 2018, 20:07
No, only speed is affected.
Anyway, the GPU implementation might be slightly different than the CPU one.

Anyway, johnmeyer is right, there are cases in which interpolation fails, no matter what filter you use. The best advice would be to use motion interpolation whenever you can and use blending on all the other scenes. Blending doesn't look as smooth as motion interpolation, but it doesn't make the video stutter as a repeated frame does.

Was the youtube video done mainly with motion interpolation or blending? As at the moment I am more just trying to find the script that was used to make that video.

poisondeathray
25th July 2018, 20:31
One difference is the YT version you linked to uses scene blending . That could explain the "stutter" that you are seeing, because there would be some duplicate frames at the end of each scene. So in any of those generic interpolation scripts, you would use blend=true for the flow part . Usually it's set to false by default for most interpolation scripts for any generic scripts

In my experience, GPU quality is noticably worse for interpolation for SVP ; larger artifacts, and sometimes even duplicate frames. I posted examples and comparisons probably here and other forums as well. This might not be true for your system or card/hardware setup, so try different combinations . But it's usually much faster

Disable all the other options , things like like artifact masking if you want it to look like the YT version

If you do all that and still think the YT version is "smoother" ; the other possibility is some playback issue; there might be differences in HW acceleration in browser or local media playback.

bxyhxyh
25th July 2018, 20:59
as most people reading this know, animation repeats some frames, but not others, and does so in a way that does not follow a regular pattern

As johnmeyer said
This nature of animation leads to ugly results instead of getting smoother video.

For example,
Think that there are 2 objects move in the video.
They don't move together sometimes. They might even animated separately.
One moves at 12 fps and other one is 8 fps etc...
Not full 24 fps.

Any interpolation isn't smart enough to see this.
They will just add duplicate of that object since it can't see objects as 'moving'.
Result wouldn't be not much smoother than the original if not any smoother.

That's why he is saying it's impossible.
But you can try.

lansing
25th July 2018, 21:20
People need to actually watch op's video before giving opinions. The video he's talking about is a cgi movie, not animation, there are no repeated frames, so everything you said about animation is invalid to him.

lansing
25th July 2018, 21:31
Blending doesn't look as smooth as motion interpolation, but it doesn't make the video stutter as a repeated frame does.

No, blending is visually the same thing as repeated frame. There's no new interpolated object added in between, so on playback you're still going to see the same 2 frames, same old stuttering.

bradwiggo
25th July 2018, 21:32
As johnmeyer said
This nature of animation leads to ugly results instead of getting smoother video.

For example,
Think that there are 2 objects move in the video.
They don't move together sometimes. They might even animated separately.
One moves at 12 fps and other one is 8 fps etc...
Not full 24 fps.

Any interpolation isn't smart enough to see this.
They will just add duplicate of that object since it can't see objects as 'moving'.
Result wouldn't be not much smoother than the original if not any smoother.

That's why he is saying it's impossible.
But you can try.

I know it isn't impossible though, as I have found a video of it. My current goal is simply to reproduce the linked youtube video.

bradwiggo
25th July 2018, 21:34
One difference is the YT version you linked to uses scene blending . That could explain the "stutter" that you are seeing, because there would be some duplicate frames at the end of each scene. So in any of those generic interpolation scripts, you would use blend=true for the flow part . Usually it's set to false by default for most interpolation scripts for any generic scripts

In my experience, GPU quality is noticably worse for interpolation for SVP ; larger artifacts, and sometimes even duplicate frames. I posted examples and comparisons probably here and other forums as well. This might not be true for your system or card/hardware setup, so try different combinations . But it's usually much faster

Disable all the other options , things like like artifact masking if you want it to look like the YT version

If you do all that and still think the YT version is "smoother" ; the other possibility is some playback issue; there might be differences in HW acceleration in browser or local media playback.

Which script would you recommend using in order to reproduce the video, would it be one of the ones posted by people here?

I don't think it will be a playback issue, as I have downloaded the youtube video using the link in the video description that actually links to the file, and I played it in my normal media player and it still looks better.

johnmeyer
25th July 2018, 21:42
People need to actually watch op's video before giving opinions. The video he's talking about is a cgi movie, not animation, there are no repeated frames, so everything you said about animation is invalid to him.Yes, if you read my last post, I acknowledged that. No need for this post.

johnmeyer
25th July 2018, 21:47
No, blending is visually the same thing as repeated frame. There's no new interpolated object added in between, so on playback you're still going to see the same 2 frames, same old stuttering.
There is no stuttering. The visual artifacts of the original movie are simply those which happen with 24 fps progressive material. It has been known for 100+ years -- going back to 12-16 fps hand-cranked movies -- that you get "judder," a visual disturbance that is entirely created within your head because these lower frame rates -- including the universal sound film 24 fps speed -- is lower than the threshold for human persistence of vision.

Thus, the OP's original desire to increase the frame rate in order to eliminate these visual disturbances is quite well founded, but the reality that he won't seem to acknowledge is that the technology does not exist to do this on all scenes. For a month he has posted that he thinks this is possible because he has seen examples where 24 fps has been increased in frame rate without introducing motion estimation artifacts. The problem is, these examples show scenes where ME works just fine, but it will always fail on scenes with attributes that I have described multiple times in previous posts.

Of course if you can come up with a solution for his video that works, my hat is off to you!

johnmeyer
25th July 2018, 21:48
I think I should have worded my original post better, as I was not necessarily looking for a perfect script for the entire film, I understand that is most likely not possible, I was instead looking for the script that was used to make that youtube video.If you re-read my post, I was responding to Lansing, not you (i.e., not the name in the quote in my post).

poisondeathray
25th July 2018, 21:48
I just copy and pasted the "Manolito mod" posted here where you said it had stutter and indeed there were duplicate frames. I explained why (or at least one of the reasons why) - the scene changes have duplicated frames when you set blend=false. It's the same for SVPFlow or MFlowFPS or any of the avisynth interpolation functions.

You said the YT video used SVPFlow, then use SVPFlow . There must be some combination of settings that reproduces it, but 100% certain it uses blend=true (for the scene change) . If you go frame by frame in the YT you will see this. Although in the comments the guy wasn't sure what was used...

If you can't explain in words why one is "smoother", then compare it frame by frame

And you don't need to encode a video to preview it, you can preview it in avspmod or vdub2 . Go frame by frame or even stackhorizontal() with the youtube video (resize either yours to 568 ,or YT's to 570 height)





No, blending is visually the same thing as repeated frame. There's no new interpolated object added in between, so on playback you're still going to see the same 2 frames, same old stuttering.

Not really. Visually they are different. Blending is slightly smoother but gives a "strobey" or "ghosting" look. Repeated frames is the cleanest, but the least smooth - it's what most people would say exhibits the most "stutter"

For example try ChangeFPS vs. ConvertFPS . You're implying they give visually same result ?? They definitely don't.

bradwiggo
25th July 2018, 21:53
There is no stuttering. The visual artifacts of the original movie are simply those which happen with 24 fps progressive material. It has been known for 100+ years -- going back to 12-16 fps hand-cranked movies -- that you get "judder," a visual disturbance that is entirely created within your head because these lower frame rates -- including the universal sound film 24 fps speed -- is lower than the threshold for human persistence of vision.

Thus, the OP's original desire to increase the frame rate in order to eliminate these visual disturbances is quite well founded, but the reality that he won't seem to acknowledge is that the technology does not exist to do this on all scenes. For a month he has posted that he thinks this is possible because he has seen examples where 24 fps has been increased in frame rate without introducing motion estimation artifacts. The problem is, these examples show scenes where ME works just fine, but it will always fail on scenes with attributes that I have described multiple times in previous posts.

Of course if you can come up with a solution for his video that works, my hat is off to you!

My original post was not clear enough on what I was trying to achieve. I do understand that a script that makes the whole movie look as good as that video does not exist (or at least is very very unlikely to exist), however, that is not currently my aim. What I am currently trying to achieve is to find the script that made that youtube video, regardless of how well that script would work with the rest of the film.

poisondeathray
25th July 2018, 22:50
This comparison is aligned (using trim()) and stacked; each is resized 1212x540 to keep approx. AR (the reason is so it can be stacked and viewed on a 1080 height screen).

They are not labelled on purpose - Which one is the YT video, which one is the jm_fps manolito mod (with blend=true, masking disabled) using your test1.mkv ? It's easy to tell from a compression standpoint (the YT version will have more compression artifacts)
http://www.mediafire.com/file/vmi3pm1h3o2bb6y/compare.mp4/file

Some frames slightly better, some slightly worse, but in terms of overall "smoothness" , I'd argue it's fairly close. I'm sure you can tweak the settings a bit to make it even better in some scenes, but the main differences between typical scripts is the blend=true . (Most of the time people don't want blending for general use scenarios)

I understand you're mainly interested in "smoothness" only here, less so about artifacts . But artifacts can contribute to the perception of reduced smoothness; so don't automatically discount artifacts either. But clearly both have ugly artifacts, some better some worse

OR - if you still think one is more smooth, then identify which one and why, or what about it is more smooth ?