Sections:
Introduction:
Many modern TVs now include an extra frames feature, usually either 120Hz or 240Hz. This just means they take the source video, which is usually between 24-30FPS, and add new, interpolated frames between the original frames that make the motion look much more smooth.
High framerate (HFR at 48fps) was used in The Hobbit and will be used in upcoming films like the Avatar sequels, so why not watch all your movies at higher framerates?
A lot of people don’t realize this, but 99% of TVs made before this feature was introduced are actually capable of displaying 50FPS and 60FPS, and of course most LCD monitors display 60FPS as well.
This tutorial will allow you to convert videos of any framerate to higher framerates; 25FPS becomes 50FPS and 24/30FPS becomes 60FPS by default, or you can specify whichever framerate you want.
This script offers greater quality than any televisions I have seen.
I’m sure many people will want to see how well this script works, so here’s a comparison:
Original File
Converted File
Note: This can now be done in realtime using Universal Media Server!
Purpose:
This post provides instructions on how to easily convert any video to 60FPS, which allows you to take advantage of this feature of modern TVs on your computer monitor or TV without actually buying anything.
Step 1:
The files needed for this step are found in this zip folder (~3MB).
Run and install the file AviSynth.exe.
It is an early version of AviSynth 2.6 that is more stable and faster for multithreading than 2.5 releases.
Download and install MeGUI, run it, let it update all the things it wants to and import all of the presets.
Optional Tip: If you want MeGUI to update to the very latest stuff (at your own risk) you can push ctrl+s, go to the Extra Configuration tab, and in the Auto Update section select “Use development update server”
Close MeGUI and extract the files in the tools folder from our zip file into your MeGUI tools folder, which for most people will be either C:\Program Files (x86)\MeGUI\tools\ or C:\Program Files\MeGUI\tools\.
Step 2:
Download and install MKVToolnix.
When that is installed, run MKVMerge (Start Menu -> All Programs -> MKVToolnix -> mkvmerge GUI).
You will also need codecs installed. If you don’t already have them I recommend K-Lite Mega Codec Pack. If you install K-Lite, make sure to select “Profile 9: Lots of Stuff” during installation.
Step 3:
Start MeGUI again. You should be left with a window that looks similar to this:
Step 4:
Push ctrl+r, or go to Tools -> AVS Script Creator.
Now you should see something like this:
Step 5:
Click the Config button next to Avisynth profile.
It should look like this:
Step 6:
Click the New button down the bottom and type 60FPS in the name box, so it should look like this:
Step 7:
Now for the script that will do the actual 60FPS conversion.
Just copy and paste the following code into the text input area.
Cores=4
SetMemoryMax(512)
SetMTMode(3,Cores)
PluginPath = "C:\Program Files (x86)\MeGUI\tools\avisynth_plugin\"
LoadPlugin(PluginPath+"svpflow1.dll")
LoadPlugin(PluginPath+"svpflow2.dll")
Import(PluginPath+"InterFrame2.avsi")
<input>.ConvertToYV12()
SetMTMode(2)
<deinterlace>
<crop>
<denoise>
<resize>
InterFrame(Cores=Cores)
Important note #1: Make sure the path on the third line is correct.
For example, if you are running 32-bit Windows, you will need to modify the path to “Program Files” instead.
Important note #2: You should change the number “4” in the script (on line 1) to your number of CPU cores. If you don’t know how many cores your CPU has just Google your CPU and you should be able to find the specs somewhere, or 4 should be fine anyway.
Important note #3: If you have a video card, you can improve quality by adding “GPU=true” to the script. However, it may make encoding time slower, so take that into account.
So InterFrame(Cores=Cores) would turn into InterFrame(Cores=Cores, GPU=true)
If you do this, you may also need to go into your MeGUI tools folder (usually C:\Program Files (x86)\MeGUI\tools\x264) and rename the file opencl.dll to opencl.dll.bak. This will let MeGUI use the version of opencl.dll that your video card drivers have installed, instead of the generic one from MeGUI.
Important note #4: This script always outputs either 50FPS or 59.94FPS (60FPS) for compatibility reasons. If you want to always double the framerate instead, so that for example 23.976FPS turns into 47.952FPS (48FPS), you can use the “FrameDouble” parameter.
So InterFrame(Cores=Cores) would turn into InterFrame(Cores=Cores, FrameDouble=true)
So now your window should look similar to this (with different text):
Step 8:
Click the Extra Setup tab and make sure “Prefer DSS2 over DirectShowSource” is checked.
Optional tip #1: You might also want to choose your preferred resizer. For aspect-ratio changes (like from 720×576 to 720×480) a neutral filter like Spline36 will be nice. For actual resizing (like from 1920×1080 to 1280×720) a sharp filter like Spline64 will be best. I usually just leave it on Spline36. Make sure to untick the checkbox on the option after you change the default resizer, otherwise it will always be used by default which is often unnecessary.
Optional tip #2: I recommend changing the “MOD value used for resizing” to mod4. This gives the best balance between compatibility (a lot of devices like PS3 don’t have good mod2 support) and aspect ratio accuracy (the higher the MOD value, the more likely the aspect ratio is to be skewed more heavily).
Now it should look something like this:
Then just click the Update button then the OK button
Step 9:
Now we’re back to the AviSynth script creator window and now that we have our 60FPS AviSynth template made and selected, it’s time to choose which video we want. Just click the … button next to Video Input up the top of the window and find your video, then click Open.
A window will pop up with buttons, click the option on the right, usually either “DirectShowSource” or “AviSource”.
A window will pop up to show you the video, you can just close that.
Now you should see something like this:
Step 10:
Click the Save button. The video preview window might pop up again, you can close it again.
Step 11:
Now is the time when you need to choose the quality of the video and audio.
If you don’t know what to do here, something quick and easy is to just use CRF, which means you let the codec decide on the bitrates itself. So you can click the “Config” button next to the “Encoder settings” dropdown when you have a x264 option selected, then just enter a number between 16-20 in the “Quality” input box. 16 means your video will be almost exactly the same quality as the source, while 20 will look good too while taking up less space. Personally I use 16 for everything because why not? π
So when you have your quality, click Queue in the Video encoding section.
Step 12:
Now your video is ready for conversion.
Now just go to the Queue tab and click Start down the bottom, then wait for it to finish.
Step 13:
The final step is to add your audio and/or subtitles from the original file to the converted file. This process uses muxing, not conversion, so there is no quality loss.
For this we will use the program we installed earlier, MKVMerge.
So run that and drag the converted file into that program, then do the same with the original file. If you can’t drag them on, you can use the add button instead.
Now you have several items in the Tracks, chapters and tags section. You just need to untick the ones you don’t want. Usually you will want to leave them all selected except for the original video track, as I’ve done in the following example:
Finally, set the Output filename down the bottom of the window and click Start muxing.
When that is done, you have your final video!
Final Thoughts:
This might seem like a long process, but actually it is only long once. Since we have now made templates, the process for the videos from now on will be much faster; instead of entering the script each time, now you can just make sure your 60FPS AviSynth script is selected.
This file can now be played just like any other video. I personally watch videos on my TV which is linked up to my computer using the awesome, free program called Universal Media Server, and that handles these 60FPS videos perfectly with no configuration.
Any comments are appreciated. If you can think of an improvement to the script, or to the process, or if you just found it useful and want to say thanks, please do leave a comment. I would love to know that it’s being used.
If you want to donate to help me with server costs and time spent keeping this article updated, you can do so here with my thanks π
FAQ:
- How can I fix random crashing of vfw4x264.exe?
This probably means you are encoding a file using an input mode other than DSS2, which can happen if the clip is .m2ts or .dga (blu-ray) or another uncommon format.
You can fix it by changing the 2 in the second line of the script to either 3, 4, 5 or just removing that line (try them in that order, since the options get progressively slower) - The option “Prefer DSS2 over DirectShowSource” is disabled. or
I get an error like “can’t load avss.dll”.
This means your computer is missing Haali Media Splitter. You can download it here or as part of a K-Lite Mega Codec Pack and the error should go away after you install it. If you install K-Lite, make sure to select “Profile 9: Lots of Stuff” during installation. - The file stops encoding after 99%.
This usually indicates a codec configuration issue. Try installing/reinstalling K-Lite Mega Codec Pack, and make sure to let it select its preferred defaults (not “quick upgrade”) - Can I customize the output framerate to make it 48FPS, 75FPS, 120FPS, or anything else?
Yes, you can choose any framerate you want. It is best to choose a framerate that is divisible in some way with the original video, but even that is your choice. You just need to add the options “NewNum” and “NewDen”, like this:
InterFrame(Cores=Cores, NewNum=48000, NewDen=1001)
NewNum stands for “New Numerator” and NewDen stands for “New Denominator”. In general, with NTSC material the NewDen should be 1001 and the NewNum should be 1000x your desired framerate (so for 48FPS you want 48000 and 1001) while for PAL content you might just want something like NewNum=75,NewDen=1 to output 75FPS content. - The output seems choppy, can I make it smoother?
Yes, by default we output a video that sacrifices a little smoothness in order to reduce errors, but different people’s eyes pick up on different things so it can all be a matter of taste. You can try the Smooth tuning, like this:
InterFrame(Cores=Cores, Tuning="Smooth")
Also, using GPU mode produces more accurate results and therefore should appear smoother, though it can be slightly slower overall. You can try it like this:
InterFrame(Cores=Cores, GPU=true)
Or try both options at once like this:
InterFrame(Cores=Cores, Tuning="Smooth", GPU=true)
- Why isn’t the GPU being used much in GPU mode?
Only some things are done with the GPU in GPU mode, it’s still mostly done by CPU but helped by GPU. - Why is the video still the original framerate after running it through MKVMerge?
You probably selected the wrong tracks in MKVMerge so you’re getting the original video track instead of the new one; make sure you untick the original video stream before muxing. - Why does MeGUI give an error “SVSmoothFPS: unable to load library given in ‘compose’ […svpflow2.dll]
Try re-installing or updating your video card drivers, and if that doesn’t work then maybe your video card doesn’t support OpenCL so remove GPU=true from your script. - Why am I getting the error “SVSmoothFps: unable to load library given in ‘compose'” when I try to run the encoding process, but not when I preview?
Go into your MeGUI tools folder (usually C:\Program Files (x86)\MeGUI\tools\x264) and rename the file opencl.dll to opencl.dll.bak. This will let MeGUI use the version of opencl.dll that your video card drivers have installed, instead of the generic one from MeGUI. - Why am I getting the error “Error message for your reference: Can not read the video stream”?
MeGUI can’t read from folders or files with certain characters, so try moving the video to a different folder and/or renaming the file.
Thanks:
Widezu69 for providing the original AviSynth script that I used as a base.
Fizick for MVTools, the library that does all the work, and SVP for the modifications to MVTools that make it even better for our purposes.
Everyone on various forums for their feedback, this is really a community effort.
Changelog:
21/05/2015:
- Updated InterFrame to 2.8.2, which improves speed
16/03/2015:
- Corrected and improved the instructions and FAQ
05/03/2015:
- Updated InterFrame to 2.8.0, which improves speed and lowers memory usage
- Updated conversion script
24/02/2015:
- Updated the instructions and FAQ
27/09/2014:
- Updated InterFrame to 2.6.0
- Added a tip about using framedoubling mode
- Updated most images to reflect the minor changes to MeGUI
- Minor improvements to instructions
22/07/2014:
- Added more items to the FAQ
10/07/2014:
- Added more items to the FAQ
- Shortened the changelog to only the latest 3 changes by default
20/05/2014:
- Updated instructions
- Added more tips
- Added to and updated the FAQ
- Updated the link to MKVToolnix to always point to the latest version
October 2, 2012 at 10:31 am
I copied it, checked again to be sure and it’s there.
October 2, 2012 at 11:31 am
@Soma: It could be a corrupted version of the file, though not likely you could re-download it. I can’t think of anything else it could be right now, sorry.
October 2, 2012 at 9:26 pm
Re-downloaded and re-copied still nothing. Oh well I’ll just keep trying and if I could get it to work I’ll post here.
October 5, 2012 at 7:22 am
Thanks for the great tutorial.
I added the gpu line but my gtx 580 doesn’t do anything(0% usage).It’s just tooooooo slow otherwise.
My i7 920 at 4Ghz needs more than two days to convert a 720p video with a size of 1.07Gb
October 5, 2012 at 6:15 pm
I am having that same problem as Mythotin…my original video file get’s processed typically to just over 90%, and then the processing stops/freezes. The log file says “Process exits with error: 0xFFFFFFFF (-1).
What makes this weirder is that MeGUI ran the 60FPS script fine the first couple times I used it a few days ago. Now in the last couple days, I keep getting the above error…as far as I know, nothing in my system or settings changed (or the setting of MeGUI itself) (Win 7, 64 bit).
October 6, 2012 at 11:33 am
Figured out what the problem was. When I re-installed my system I didn’t check the AMD OpenCL/Hardware encoding/decoding on the ATI driver package. Installed the driver and it’s working now. Still slow but it cut the usual time by a half even though it’s only using 3% of the GPU power (measured using GPU-Z program).
October 7, 2012 at 6:38 pm
@Commander Shepard: To make it faster you can select a faster x264 preset. The presets do not affect video quality.
@Bill: What codecs or codec packs do you have installed?
October 31, 2012 at 6:48 pm
When I load the avs file, the program causes the mouse to show a busy animation, I can still click around but “Queue” doesn’t put the file into the queue. Any ideas?
November 16, 2012 at 5:07 pm
Can confim Commander Shepards and somas statement. Got also only 3% GPU (measured using GPU-Z @ 580GTX) usage during the encoding. The measurement seems to be correct because other OpenCL-Application show an 100% load using GPU-Z.
December 2, 2012 at 6:12 am
Hi subjunk thanks alot for this tutorial… is there anyway to increase the framerate to even more than 60fps?, i heard some tvs interpolate up to 240fps.
December 2, 2012 at 10:00 am
@Daniel: Sure, you can make it any framerate you want π The only thing is that most TVs will only support a maximum of 60FPS, even the ones that display 240fps (my TV displays 600fps but will only accept 60fps inputs)
Anyway if you want to try, feel free to with the NewNum and NewDen parameters, so for 240fps you would use:
InterFrame(cores=4, NewNum=240000, NewDen=1001)
December 19, 2012 at 12:33 am
Hello, I have a problem a week ago. I followed all the steps in the tutorial but when you click “save” I get this error. I need help please, I have a month trying to make this work.
This is the image of error…
http://imageshack.us/photo/my-images/846/errormf.png/
This is the Script de AviSynth…
Setmemorymax(512)
SetMTMode(3,4)
PluginPath = “C:\Program Files (x86)\MeGUI\tools\avisynth_plugin\”
LoadPlugin(PluginPath+”svpflow1.dll”)
LoadPlugin(PluginPath+”svpflow2.dll”)
Import(PluginPath+”InterFrame2.avsi”)
LoadPlugin(“C:\Program Files (x86)\K-Lite Codec Pack\Filters\Haali\avss.dll”)
dss2(“C:\Users\JosΓ©\Desktop\Nueva descarga\20110618-Sample-Original.mkv”, fps=23.976).AssumeFPS(24000,1001).ConvertToYV12()
SetMTMode(2)
#deinterlace
#crop
#denoise
#resize
InterFrame(Cores=2)
December 19, 2012 at 12:38 pm
@Joseph: It may be the Γ© in “JosΓ©”. Try putting the file in a different folder and try then.
December 20, 2012 at 12:15 pm
Hi Subjunk im getting this error message for some reason. What am i doing wrong?
http://imageshack.us/photo/my-images/191/erroruax.png/
December 20, 2012 at 2:57 pm
@Hector: Not sure about that one. Are you using the same version of AviSynth from the guide?
December 20, 2012 at 6:04 pm
Yes i did, i unistalled K-lite codec pack, megui, and avisynth and installed them again but the problem stays, the funny thing is that i already did this procedure a few months ago and it worked after a few attempts but since i just restored my system i have to do it again but this error appears.
December 20, 2012 at 8:58 pm
@Hector: Weird! I don’t know what the error means. If it worked before it must work again so I guess just go through the steps again if you want, sorry I can’t be of more help
December 21, 2012 at 7:55 am
Fixed, in line 4 the (x86) was missing in this command:
C:\Program Files\MeGUI\tools\avisynth_plugin
So i just added the (x86) and now looked like this:
C:\Program Files (x86)\MeGUI\tools\avisynth_plugin
And that solved the problem hope this helps others x86 users. Thanks alot Subjunk.
December 21, 2012 at 8:37 am
@Hector: Glad you fixed it. There is a note in Step 7 about that π
December 30, 2012 at 1:32 am
I have a question. First to tell that i love you giude. It really works and it saves me a alot of time and space.
You have seen some videos on youtube that are really smooth ? They look like 60 fps but they are 30 beucase youtube supports only 30 fps. I don’t know how they do it. I have seen it in some video recorders (those camcorders) they film 30 but it’s super smooth not chopy. I wanted to do this with my gameplay videos. I have read everything in the net (forums videos and so on) and i can’t find anythink that can help me. Hope you can help.
Merry Xmas and a Happy New Year π
January 2, 2013 at 9:57 am
@Quetz: It sounds like you are talking about motion-blur. AviSynth has plugins that can achieve that, I recommend searching doom9 forums for more info π
January 5, 2013 at 6:31 am
Is it possible to make this only bring it up to 48fps instead of 60? The 60fps felt a little too sped up for me in certain scenes, especially in ones with dialog.
January 5, 2013 at 10:22 am
@Eyvin: Sure, that stuff is located in the InterFrame documentation at http://www.spirton.com/uploads/InterFrame/InterFrame2.html
For what you want, you would use NewNum=48000, NewDen=1001
January 5, 2013 at 1:19 pm
Hello. I have this error. What do I do wrong?
http://i.piccy.info/i7/af3b9bd0568707c1c2be78d81a48cdfd/4-55-366/1644847/Bezymiannyi.png
January 5, 2013 at 1:57 pm
Thanks so much!! Been looking for exactly this and the instructions made it easy. much obliged π
January 6, 2013 at 4:08 pm
@L.Antigreen: That means you have a different version of AviSynth installed than the one in the zip file from this article.
@Aye Jay: You’re welcome, cheers π
January 10, 2013 at 2:30 am
Changelog is not updated (new version from December is much faster than previous, thanks a lot)
January 10, 2013 at 9:52 am
@klerik: Thanks for reporting this, the changelog is updated now π
January 10, 2013 at 1:12 pm
Hi,
I have this error http://image.noelshack.com/fichiers/2013/02/1357776638-error.png and I don’t know what to do. I’m doing all correctly and it doesn’t work. Is it possible for you to make a software to convert the video in 48 fps automaticly or in 60fps? with sound?
January 10, 2013 at 2:36 pm
Ok I found the problem π How to do in 48fps?
January 10, 2013 at 3:34 pm
@Nicolas: For 48fps you would use NewNum=48000, NewDen=1001, like:
InterFrame(Cores=4, NewNum=48000, NewDen=1001)
January 10, 2013 at 4:16 pm
Hi, I don’t know if it worked very well… Check my video, I don’t see the 60FPS in that or it’s my eyes π
Some scene are better, but other scene have the 24 fps look.
http://depositfiles.com/files/thhphhq9m
I put Cores=2 for this one, but I will try with Cores=4
thx a lot for your guide π
January 10, 2013 at 4:53 pm
@Nicolas: The source video is 25fps so it is only outputting the trailer at 50fps. Try getting a trailer at 24fps, then you will get a 60fps video and it will be smoother.
Also you can try using Tuning=”Smooth” for more smoothness
January 11, 2013 at 3:58 am
OK, because I took that on youtube, I will try with Tuning=”smooth”
thx for your help
January 11, 2013 at 4:15 am
Oh, where I put Tuning=”smooth”, because I have an error
January 11, 2013 at 9:21 am
@Nicolas: InterFrame(Tuning=”Smooth”)
January 11, 2013 at 10:53 am
MY NEW VIDEO CAN’T BE UPLOADED, WILL TRY TOOMOROW
PS: I already have InterFrame(Core=4) and it said that I have an error when putting two InterFrame and even if I put (Tuning=βSmoothβ) on the same line as the other…
January 11, 2013 at 12:06 pm
@Nicolas: Make sure you use regular quotation marks instead of the slanted ones; it should be Tuning=”Smooth”, not Tuning=βSmoothβ
January 11, 2013 at 3:14 pm
I put
InterFrame(Core=4, Tuning=”smooth”)
instead of
InterFrame (Core=4), (Tuning=”smooth”)
It worked.
thx,
do you know where I can upload my video free without account? (more than 100mb/files)
January 12, 2013 at 4:40 am
Check my new video http://depositfiles.com/files/4njtm2ig8
It’s the same, but with smoother action.
thx
January 12, 2013 at 6:13 am
Lord of the rings : http://depositfiles.com/files/x4ysqxhh1
January 14, 2013 at 8:08 am
Hello , please help me !!! I have this problem http://postimage.org/image/n8v4yc1hv/ . What should I do ???
January 14, 2013 at 9:19 am
@Jojo: The problem is the characters in your username. Put it in a different folder like just C:\
January 14, 2013 at 10:39 am
Oh man !!!SubJunk , Thank you !!!
January 14, 2013 at 10:49 am
@Jojo: You’re welcome, enjoy!
January 21, 2013 at 8:02 am
hi – very very useful script and guide, thanks!
couple of things:
1) things always seem to hang at the end of step 12 – after encoding the new mkv file – and i have to abort (though the converted file can be copied somewhere else and then used before i abort.) any idea why this happens?
2) is there a way to enable intel quicksync for the encoder? it’d speed things up greatly for me as i have no dedicated graphics card in this machine, but i do have a i7 2600k that’s going to waste..
hope to get a reply soon – thanks in advance!
January 21, 2013 at 4:20 pm
@elm: The first thing can be fixed by changing codecs, I recommend uninstalling all codecs and codec packs, restarting the computer, then installing K-Lite Mega 32-bit (no 64-bit!) As for quicksync, probably not
January 24, 2013 at 12:28 am
SubJunk, nice tutorial. i have made a translation of your tutorial and post it in a forum, is it okay?
i also want to ask. can i made a 1080p 60fps video? without resize to 720p? because everytime i tried, it ends up not smooth but lagging instead. and the audio always out of sync. when i added the resize to 720p command, the re encoded video always succesfully converted to 60fps and played smoothly.
so i just wan to confirm, is it possible to produce 60fps @ 1080p or not. or maybe it just my x264 setting problem.
thanks.
January 24, 2013 at 11:15 am
@fatboy05: That sounds great, if you give me a link to the translation I can link to it from here π Yes 1080p (or any resolution) is possible so the problem must be something else
January 29, 2013 at 5:16 pm
Does anyone know how to do this using Staxrip?