A friend has downloaded some TV shows but has noticed slight jerkiness in the playback. Is it possible to smooth out the motion and if so, how?
We did some work previously with a interlaced MPEG source and I got it to be fairly smooth with QTGMC (D2V), but this episode is already Progressive.
Thanks a lot for any advice.
+ Reply to Thread
Results 1 to 18 of 18
I didn't see any problem, but you might have a look at this script I developed many years ago.
Automatically fix dups followed (eventually) by drops
It finds both dups and drops and attempts to correct. I couldn't find any problems with your posted video, but I think that you'll find that if there is jerkiness and if it was captured from a streaming source, the jerk is probably caused by a dropped frame due to an interruption in the stream. Then, to keep the audio in sync, the streaming service usually introduces a duplicate frame. To correct, you need to insert a synthesized frame at the point where the drop occurred and then delete the duplicate. I keep meaning to go back to the script and make it more robust, but I've never gotten around to it.
I agree, it looks like about right for a "25p" production. There are no drops or duplicates on a quick look frame by frame, and it looks ok during normal playback
Maybe you are comparing the "smoothness" to interlaced video, or 50p content ? If that's the case, you can try to synthesize in-between frames using mvtools2 based functions such as mflowfps , or use wrapper functions like framerateconverter, or svpflow, or rife (neural net, slower but generally higher quality) . That would create the "soap opera effect" with 50p. Motion interpolation is never perfect, some types of scene/content can produce artifacts, sometimes severe
Thanks John, I see the (slight) jerkiness in the start sequence as the shot goes higher and turns around to the left. The houses/ground detail is a bit jerky.
I'll try to get my head around your script.
Originally Posted by PDR
Your options are getting out of my depth, unfortunately.
Thanks Sharc, what would be involved there? Cost Benefit Analysis and all that!
My friend also advises that the movement appears a little more jerky on his TV.
Could it be a playback problem ? Maybe some issue with AVC playback , older hardware setup?
When that program was originally broadcast in the UK, it was 25p in 25i . So the content was progressive and it was transmitted interlaced. It should look the same in terms of motion characteristics now as it did then on a 50Hz display
To do motion interpolation it might be as simple as 2 lines. But gathering dependencies is always the tedious part in avisynth. Mvtools based interpolation (e.g. Framerateconverter using "old settings", it can use RIFE too now), might be 10x faster than RIFE
I would not convert 50p back to interlaced 25i, unless your playback setup cannot handle 50p
This is what RIFE looks like for the 1st 45 seconds . If you're really interested you can search for comparisons between various interpolation algorithms , there are many posted. Essentially RIFE is generally the best, but the slowest. The avisynth vulkan version is generally slower than the vapoursynth cuda version if you have a Nvidia card. The latter might be 1-4x faster depending on hardware.
Here is the 1st 45 seconds of what RIFE looks like
There are also options to activate it on playback using svpflow (player interpolates on the fly). Or many TV's can do this on the fly "motionflow" or similar. Many people do not like the "look" of the smoothness for dramas (which are purposely shot at 24p or 25p)
Is your friend in NTSC land or 50hz land (down under or UK)
I think your rife.mp4 is smoother.
I did have a go at upping the framerate in VDub but didn't achieve anything, but will have a look at Framerateconverter.
If you really want your 24p material to look like TV video, most modern TV sets have a setting which does exactly that. The name for the setting depends on the TV set's manufacturer, but it interpolates new frames between existing frames, thus giving you a higher frame rate. IMHO the result -- even when done in AVISynth, which can do more processing since it doesn't have to be done in real time -- is awful. However, it does make the video look smoother.
The problem I have is that you completely lose the "once removed" feel of 24p which, because it is below the persistence of vision threshold, makes the show look less real, something that is very desirable for a show or movie which, if no one has told you, are not real.
The over-heralded 1960s author, Marshall McLuhan, dubbed movies as "hot" and television as "cool." I don't think he had any idea why they affected people so differently because I'm sure he didn't understand anything about 60 fields per second compared to 24 frames per second, but he could sense that there was a very real difference.
So, if you change your movies from 24p to 60 fps, you will change them from hot to cool and -- again, IMHO -- you will never be the same again.
Thanks Sharc, unfortunately, that is much of an improvement but I do appreciate your effort.
John, in our defence, this is 25fps, and only a British soapie, so I doubt there's much chance of going too COOL.
For those of you with 60 or 59.94 Hz displays here's a portion of the video converted to 59.94p with RIFE(gpu_thread=1, model=9, fps_num=60000, fps_den=1001).
^^^ Smooth as silk on a 60Hz display.
RIFE scared me so I tried Framerateconverter and I can see an improvement.
As I discovered, there's no audio here. Is there a way of opening the audio as well, so when I export this from VDub, I have audio too? I'm not keen on remuxing as a separate step. I did try LSmashaudiosource but that threw an error with ChromashiftSP (which I'm not using on this particular video but want to use it on a music video). The ChromashiftSP error was "Resize: width must be greater than zero".
The failing script I am trying to use is:
LSmashVideoSource("video.mp4") Lsmashaudiosource("video.mp4") ChromaShiftSP(X=-2, Y=2) #-X is right, -Y is down Framerateconverter(Preset="slower")
aud=LSmashAudioSource("video.mp4") LSmashVideoSource("video.mp4") ChromaShiftSP(X=-2, Y=2) #-X is right, -Y is down Framerateconverter(Preset="slower") vid=last AudioDub(vid,aud)
Thanks PDR, I think I have "Audio from another file" working OK.