Hi! I've been looking for ways to make my speedrun footage of rage look better for youtube the last few days when i stumbled upon avisynth. I don't want to waste the extra frames in my footage by just dropping them so i've looked at some ways to "sample" all frames to create motionblur. The best i've come up with so far is:
I'm not really satisfied with this and i haven't found any other good way of doing it, 60 fps seems to be to low for this kind of fast footage with every method i've tried.Code:AVISource("footage.avi", audio=true).AssumeFPS(60.000).converttoYV12 super = MSuper(pel=4, sharp=2, rfilter=4) backward_vectors = MAnalyse(super, overlap=4, isb = true, search=3) forward_vectors = MAnalyse(super, overlap=4, isb = false, search=3) MFlowBlur(super, backward_vectors, forward_vectors, blur=30, prec=1)
I also want to use something like OLMsmoother (morphological-antialiasing) but for avisynth. This seems to work well since it looks at each frame individually and not at combined frames wich doesen't seem to work well with this kind of footage. I also want to use a good sharpening filter on top of it since it makes textures in the game look much better. A good color correction filter would also be great.
Basically what I want is something that works like OLMsmoother, a good sharpening filter on top of that, a good color correction filter on top of that and finally a good way to make the footage smoother with motion blur on top of all that. Other tips to make my footage look nicer for youtube is appreciated as well.
Link to 60 mb compressed sample footage
Support our site by donate $5 directly to us Thanks!!!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
+ Reply to Thread
Results 1 to 30 of 31
-
-
You can use Santaig() or AAA() to antialias.
For simple frame rate reduction you can use Merge(SelectEven(),SelectOdd()). But that looks like double exposures when motions are large. You can use motion interpolation to generate very high frame rates (like 8x) then several Merge(SelectEven(),SelectOdd()) calls to get better motion blur. -
Will try Santaig() and AAA().
Do you mean something like this?
Code:AVISource("footage.avi", audio=true).AssumeFPS(60.000).converttoYV12 super = MSuper(pel=2) backward_vectors = MAnalyse(super, isb = true) forward_vectors = MAnalyse(super, isb = false) MFlowFPS(super, backward_vectors, forward_vectors, num=480).TemporalSoften(3,255,255,0,2).selectevery(16,1)
Or do you mean some other motion interpolation? I also don't really understand "several Merge(SelectEven(),SelectOdd())", could you provide an example? -
Code:
SmoothFPS2(480,1) # 60 to 480 Merge(SelectEven(), SelectOdd()) # 240 Merge(SelectEven(), SelectOdd()) # 120 Merge(SelectEven(), SelectOdd()) # 60 Merge(SelectEven(), SelectOdd()) #30
Yes, you will see ghosting (multiple exposures) when motions are large. But it's not so obvious in realtime playback. You can reduce the ghosting by going to even higher frame rates and merging more.
If that's too much blur you can selectively decimate:
Code:SmoothFPS2(480,1) # 60 to 480 Merge(SelectEven(), SelectOdd()) # 240 Merge(SelectEven(), SelectOdd()) # 120 SelectEven() # 60 SelectEven() # 30
Last edited by jagabo; 19th Oct 2013 at 08:49.
-
Thanks, I can't find SmoothFPS2() plugin in this forum though (if it is a plugin). Read something about svpflow1+2.dll and mvtools.dll and i have booth of those, yet is says "there's no function named SmoothFPS2" when i load the script in VDub.
Edit: Found the code for SmoothFPS2 now, thanks again!Last edited by Kitin; 19th Oct 2013 at 09:19.
-
I don't think the end results will work much better than what you were doing. It's just the limitations of the motion interpolation techniques. When motions are too large or too complex they can't detect them and end up doing nothing or just weighted pixel interpolation. And sometimes you just get weird artifacts from misidentified motions.
-
That's what I expected when nothing worked but I thought that I might've missed something . Pretty much every method i've seen prior uses some ridiculously high framerate for this kind of footage, which isn't possible with this game.
This method allows for more controll, looks better and renders faster than the one i used prior though so that's great. -
Here's an example where motion interpolation really screws up:
https://forum.videohelp.com/threads/352741-Frame-interpolation?p=2215502&viewfull=1#post2215502 -
Yeah, I don't believe my footage suffers from that problem though. It's just to much difference between each frame which prevents me from getting really good motion interpolation I guess . I just rendered this with motion blur:
It might not be the motion blur that causes it, but something with 60 fps 1080p lossless source footage shouldn't end up looking like that on youtube.Last edited by Kitin; 19th Oct 2013 at 11:11.
-
The problems were especially visible in the Tron sample but I can see the same type of problem many places in your video. Just increase the frame rate and step through the video frame by frame. You'll see all the problems.
-
-
Remember, this type of motion interpolation looks for blocks of pixels that have moved between frames. That works very well for simple panning (except at the edges of the frame) but not so well with zooms, objects moving over a complex background, perspective changes, rotations, etc. You can try playing around with the settings in MSuper and MAnalyze but I don't think you'll get much improvement.
-
-
QTGMC has pretty good motion blur ability. From the doc:
Shutter Speed Motion Blur / Frame Rate
Key Points: Can output video at single or double-frame rate. For smoother playback of single-rate output there are settings to add light motion blur to simulate different shutter angles (shutter speeds)
By default QTGMC outputs video at "double-rate", twice the frame rate of the source. This is because there are two separate images (fields) in every frame, which the deinterlacing process restores in full. By setting FPSDivisor to 2, every second frame is dropped and the output frame rate is the same as the source ("single-rate")
Single-rate output may look a little stuttery, depending on how the source was filmed/created. Adding motion blur to each frame can help with this, smoothing the feel of the slower rate playback. This is done by setting ShutterBlur to 1,2 or 3, then specifying the shutter angle that you wish the output to simulate. However, as there may be some motion blur already in the source you also need to specify/estimate the shutter angle used in the source. Shutter angles range from 0 to 360, with 0 being perfectly sharp and 360 being fully blurred from one frame to next (artificial output shutter angles > 360 are supported to a very limited degree). Motion-blur can also be applied to double-rate output, but the effect is less noticeable.
As motion analysis is block-based, motion blur of an object can "bleed" into surrounding, more static areas. This can be reduced using the slower ShutterBlur modes or by increasing the SBlurLimit setting (which is enabled and set to 4 by default). Both repair methods may reduce the level of motion blur a little though. In situations of complex motion the motion analysis can be incorrect, which can lead to inappropriate blurring. -
-
Code:
SmoothFPS2(1920,1) # 60 to 1920 Merge(SelectEven(), SelectOdd()) # 960 Merge(SelectEven(), SelectOdd()) # 480 SelectEven() # 240 SelectEven() # 120 SelectEven() # 60 SelectEven() # 30
Will probably keep testing different stuff so I'll likely come back here with the optimal solution later.
Here's two screenshots when both are turned up pretty high to show what I mean:
Merged from 1920 to 120fps:
Script in topic with blur=60
Last edited by Kitin; 19th Oct 2013 at 18:27.
-
Thanks for that update. By the way, SelectEvery(16,0) should get you the same thing as four SelectEven().
-
TemporalSoften seems to work way better than merge:
Like this:
Code:SmoothFPS2(3840,1).TemporalSoften(5,255,255,0,2) SelectEven().TemporalSoften(5,255,255,0,2) # 1920 Selectevery(64,0)
-
Here's my analysis of what's going on: When the motion detector fails to find motions it temporally blends pixels rather than interpolating motion. And when motions are misidentified, or where the motion of a block is properly identified but the motions of surrounding blocks are not, you get warping artifacts in the interpolated frames. Those frames nearest (temporally) the original frames show the least of these problems, those frame farthest away from the original frames show the most. So when you are selecting a subset of those frames to blend together to produce the final motion blurred frames, what you see depends on which frames are blended together. If you select frames nearest the original frames you get the fewest artifacts. If you select frames farthest away you get more artifacts.
MFlowBlur is essentially blending frames nearest the original frames internally. So it gives fewer artifacts and less blending, but when it fails to find motion vectors you get little motion blur.Last edited by jagabo; 20th Oct 2013 at 09:09.
-
So i've started exprementing with multi-threaded avisynth (downloaded everything on this page essentially http://www.svp-team.com/wiki/Download )
This is the codes i've tried:Code:SetMemoryMax(2048) pel=2 SetMTMode(5,4) AVISource("Footage.avi", audio=true).AssumeFPS(60.000).ConvertToYV12() ConvertToYV12() SetMTMode(2) super=MSuper(pel=2) finest=pel==1 ? super : MFinest(super) backward_vec=MAnalyse(super, isb=true, blksize=16, overlap=4) forward_vec=MAnalyse(super, isb=false, blksize=16, overlap=4) backward_vec = MRecalculate(super, backward_vec, blksize=8, overlap=2) forward_vec = MRecalculate(super, forward_vec, blksize=8, overlap=2) MFlowBlur(super, backward_vec, forward_vec, blur=50, prec=1) selectevery(2,1)
Code:setmtmode(5) AVISource("footage.avi", audio=true).AssumeFPS(60.000).converttoYV12 setmtmode(2) super = MSuper(pel=4, sharp=2, rfilter=4) backward_vectors = MAnalyse(super, overlap=4, isb = true, search=3) forward_vectors = MAnalyse(super, overlap=4, isb = false, search=3) MFlowBlur(super, backward_vectors, forward_vectors, blur=50, prec=1) SelectEvery(2,1)
Any ideas of what causes this? I'm guessing it has to do with "SetMTmode". I have an Intel i5 2500k @ 4.5GHz, 8gb ddr3 @ 1600MHz and a gtx 670 slightly factory overclocked if that matters.
Edit: FIXED, just needed to set a lower value for setmaxmemory(), < 1500mb seems to work.
Now I'd appreciate some help with a script that uses the features of SVPflow to produce motion blur, i'm a little lost on the syntax and in which ways I can use it alongside with MVtools2. Would like to try GPU-acceleration.Last edited by Kitin; 21st Oct 2013 at 14:40.
-
-
-
-
Some SVPFlow examples and problems:
https://forum.videohelp.com/threads/352741-Frame-interpolation -
Thanks, will try once my problems (that i thought was resloved by lowering setmemorymax) is resolved.
There's some weird stuff going on:Code:setmemorymax(1024) setmtmode(5,4) AVISource("Footage.avi", audio=true).AssumeFPS(60.000).converttoYV12 setmtmode(2) super = MSuper(pel=4, sharp=2, rfilter=4) backward_vectors = MAnalyse(super, overlap=4, isb = true, search=3) forward_vectors = MAnalyse(super, overlap=4, isb = false, search=3) MFlowBlur(super, backward_vectors, forward_vectors, blur=50, prec=1) SelectEvery(2,1)
These frames are not only weird looking, but they also appeared randomly in the video, completely out of the correct frame sequence order.
Tried this today:
Code:setmemorymax(1300) setmtmode(3,4) AVISource("Footage.avi", audio=true).AssumeFPS(60.000).converttoYV12 setmtmode(2) super = MSuper(pel=4, sharp=2, rfilter=4) backward_vectors = MAnalyse(super, overlap=4, isb = true, search=3) forward_vectors = MAnalyse(super, overlap=4, isb = false, search=3) MFlowBlur(super, backward_vectors, forward_vectors, blur=50, prec=1) SelectEvery(2,1)
.m4v video file @ 4mb (Warning: Unpleasant/loud sound)
VDub still crashes sometimes when i jump around in the timeline and lowering the memorymax to 512 made it crash upon rendering as well, KERNELBASE.dll error every time. What's wrong here? What excactly do I need in order to use multithreaded Avisynth with MVtools2? -
Simple : don't use MT with temporal filters. Often you get get messed up or out of place frames . Some people swear it's ok, but in my experience it's not worth the problems . MT crashes a lot too . MT just ins't implemented very well in avisnyth. Once/If vapoursynth gets developed more, MT should work better
I spent days on different setups and systems trying to get it working reliably and consistently, testing different dll combinations and avisynth builds. It's just not possible with temporal filters and the current state of avisynth. -
Yes, I often have problem with AviSynthMT -- including some of the scripts I was working with with this video. But this morning I just updated some of my filters (svpflow, and mvtools from that package) and I haven't had a crash since. The scripts in post #28 gave no problems. Time will tell...
Similar Threads
-
Recording Gameplay Footage from PC
By darkdestiny in forum Video Streaming DownloadingReplies: 26Last Post: 20th Aug 2014, 13:20 -
Gameplay footage with minimum quality loss
By dBallaz in forum Newbie / General discussionsReplies: 1Last Post: 14th Apr 2011, 07:02 -
how to prepare Youtube Vids?
By 3thman in forum Video Streaming DownloadingReplies: 6Last Post: 8th Dec 2009, 11:11 -
A simple, no fuss way to prepare clips from a DVD to upload to YouTube
By G)-(OST in forum User guidesReplies: 9Last Post: 10th Nov 2009, 21:35 -
how to prepare high quality clips so that Youtube will not re-encode them
By pawel7 in forum LinuxReplies: 2Last Post: 28th Oct 2008, 03:27