Convert videos to 60fps (Updated 10 Jan 2013)
Sections:
Introduction:
Many of the latest models of LCD 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 and X-Men: Days of Future Past, which will use HFR at 60fps, so why not watch all your movies at higher framerates?
A lot of people don't realise 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.
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 (~6MB).
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.
Close MeGUI and extract the tools folder over the top of your MeGUI tools folder, which for most people will be 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.
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.
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")
<input>.ConvertToYV12()
SetMTMode(2)
<deinterlace>
<crop>
<denoise>
<resize>
InterFrame(Cores=4)
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 lines 2 and 13) 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.
Important note #3: If you have a recent video card in your computer, you can increase the speed of the script by adding ", GPU=true" to the script.
So InterFrame(Cores=4) would turn into InterFrame(Cores=4, GPU=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.
You might also want to choose your preferred resizer. For aspect-ratio changes (like from 720x576 to 720x480) a neutral filter like Spline36 will be nice. For actual resizing (like from 1920x1080 to 1280x720) a sharp filter like Spline64 will be best. I usually just leave it on Spline64.
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 to give you 3 buttons, click "DirectShowSource".
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 Enqueue 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 PS3 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 me, you can do so here:
FAQ:
- How can I fix 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 Codec Pack (I use Mega) and the error should go away after you install it. - 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.
This probably means your codecs aren't configured properly.
You can fix it by uninstalling any codecs you have, restarting your computer, installing a K-Lite Codec Pack, and restarting your computer again.
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:
10/01/2013:
- Updated Introduction section
24/12/2012:
- Updated InterFrame to 2.3.0 which is faster, better quality, supports more video cards and has lower memory usage.
- Updated the link to MKVToolnix to 5.9.0
- Simplified instructions
27/06/2012:
- Updated InterFrame to 2.1.0 which is much faster, better quality, etc.
- Updated SEt's AviSynth MT to 2.6 (2012.05.16)
- Include the new AviSynth DLL in the installer to make things easier to set up
- Updated the link to MKVToolnix to 5.6.0
- Simplified instructions
03/04/2012:
- Updated InterFrame to 1.14
- Updated SEt's Avisynth MT to 2.6 (2012.03.31) which is faster and more stable
- Updated the link to MKVToolnix to 5.4.0
- Improved instructions slightly
25/02/2012:
- Script stability improvements
- Updated the link to MKVToolnix to 5.3.0 from 5.0.1
29/02/2012:
- Updated InterFrame and its dependencies to 1.13 from 1.12.2 (Changelog) which improves speed and ATI GPU compatibility
03/11/2011:
- Updated InterFrame and its dependencies to 1.12.2 from 1.12 (Changelog) which improves speed by up to 15%
- Updated AviSynth DLL (SEt's MT Build) to 2011.09.13 from 2009.09.19 which increases stability and fixes bugs
- Updated the link to MKVToolnix to 5.0.1 from 4.6.0
12/09/2011:
- Updated InterFrame to 1.12 from 1.11 (Changelog)
- Rolled back to previous AviSynth version because the newer one was causing crashes
- Link to latest MeGUI installation package directly since they don't seem to be releasing installers anymore
22/07/2011:
- Updated SEt's AviSynth DLL to 2011.07.19 from 2009.09.19
- Updated AviSynth to 2.6 Alpha 3 from 2.6 Alpha 2
05/07/2011:
- Updated InterFrame to 1.11 from 1.10 (Changelog)
04/07/2011:
- Updated Step 9 because of an extra window added by MeGUI (thanks to Sko for the reminder)
- Updated sample videos
18/06/2011:
- Updated InterFrame to 1.10 from 1.8.1 (Changelog)
- Updated sample videos
20/05/2011:
- Updated InterFrame to 1.8.1 from 1.7.1 (Changelog)
03/05/2011:
- Wrote version information to avisynth.dll to fix software conflicts
30/04/2011:
- Updated InterFrame to 1.7.1 from 1.7 (Changelog)
- Updated the thanks section to include SVP
29/04/2011:
- Fixed a mistake in the guide (Thanks Sebastian)
28/04/2011:
- Updated InterFrame to 1.7 from 1.6 (Changelog)
22/04/2011:
- Added a new note below the scripts explaining how to increase the encoding speed
20/04/2011:
- Updated InterFrame to 1.6 from 1.5.1 (Changelog)
- Changed the guide so that it muxes audio and/or subtitles, whereas before it always converted audio and ignored subtitles
- Changed a lot of text and some images in the guide to be easier to follow
- Added donation link
13/04/2011:
- Updated InterFrame to 1.5.1 from 1.5 (Changelog)
12/04/2011:
- Updated the scripts to disable GPU-acceleration by default since it causes errors for people with older or no video cards.
11/04/2011:
- Updated InterFrame to 1.5 from 1.3.1 (Changelog)
- Updated the scripts and made them more simple
- Added new video samples
09/04/2011:
- Slightly changed the scripts to fix a colorspace bug
01/04/2011:
- Updated InterFrame to 1.3.1 from 1.2 (Changelog)
- Updated the video samples
24/03/2011:
- Updated InterFrame to 1.2 from 1.1 (Changelog)
- Updated Speed script to work with InterFrame update
22/03/2011:
- Updated InterFrame to 1.1 from 1.0.2 (Changelog)
- Updated scripts to work with InterFrame update
21/03/2011:
- Updated InterFrame to 1.0.2 from 1.0 (Changelog)
- Updated MVTools2 to 2.5.11.2b from 2.5.11.1b (Changelog)
19/03/2011:
- Updated FAQ with links and more correct and specific answers
18/03/2011:
- I'm releasing the script as an AviSynth plugin called InterFrame so I've added that to this guide
17/03/2011:
- Removed unnecessary file (mt.dll) and updated guide and scripts accordingly
16/03/2011:
- Increased quality of the scripts by improving the detection of scene-changes
25/02/2011:
- Increased quality of Quality script
23/02/2011:
- Increased quality of scripts
22/02/2011:
- Improved accuracy of the Quality script with little performance impact
- Updated file package to include fftw, a requirement of the improved accuracy setting
- Updated file package to include Builds.txt which contains the versions and links to the files in the package
- Added a menu at the top of the post to make it easier to see which sections there are and jump to them
10/02/2011:
- Updated introduction section
03/01/2011:
- Updated MVTools from 2.5.11b to 2.5.11.1b
- Re-introduced divisible framerates, which increases interpolation accuracy and speed
17/11/2010:
- Minimised artifacts in Quality script with no performance hit (maybe a bit faster, too)
- Moved resize to above the interpolation after testing that showed it is more accurate at 720p than 1080p
08/11/2010:
- Updated AviSynth from 2.5.8 to 2.6 after tests which found it is more stable for multithreading.
- Improved instructions, fixed typos, restructured steps.
27/10/2010:
- Updated the Quality script sample.
26/10/2010:
- Updated MVTools from 2.5.10.1b to 2.5.11b.
13/10/2010:
- Increased the interpolation strength of the scripts. It can cause errors, (stripes and cross-like patterns may cause glitches), but it is better than before for general use.
08/10/2010:
- Added a common question to the FAQ; "Prefer DSS2 over DirectShowSource" is disabled.
20/07/2010:
- Increased accuracy of the Quality script
- Corrected minor language errors
17/07/2010:
- The value of blksize will now automatically change based on input resolution, which hopefully provides the most accurate settings for all inputs
- Added the ConvertToYV12 function, just meaning MeGUI doesn't need to keep adding it all the time
16/07/2010:
- Significantly reduced tearing in high-motion scenes using the Quality script. Here are comparisons of interpolated frames:
Comparison 1, old script, comparison 1, new script
Comparison 2, old script, comparison 2, new script
It's almost unbelievable they are the same frames, but they are. - Speed of the Quality script has also increased
15/07/2010:
- Input uses SetMTMode 2 now instead of 1, since 1 can cause quality problems for .avi files.
13/07/2010:
- Reverted to always using 60FPS. Using divisible framerates did provide increased accuracy with technically the same level of smooth motion, but monitors and televisions can't display those exact framerates anyway which results in less visible smoothness. Thanks to Widezu for pointing this out.
12/07/2010:
- Added to the FAQ
- Minor wording changes
10/07/2010:
- Increased accuracy of both scripts by allowing for different framerates depending on the input. See here for more details.
The videos still play perfectly on 60Hz and 75Hz monitors/TVs, so don't worry about that.
06/07/2010:
- Increased speed by roughly 100% for both scripts
- Updated DLL package:
- Removed DirectShowSource.dll
- Removed TCPDeliver.dll
- Updated mvtools2.dll from 2.5.10b to 2.5.10.1b
- Updated mt.dll
- Updated avisynth.dll
- Fixed a bug that would very infrequently cause a backwards frame
- Note: Users of previous scripts will need to make sure they have selected "Prefer DSS2 over DirectShowSource" in the AviSynth configuration settings (under the Extra Setup tab)
- Updated instructions and wording throughout the whole article, to keep it current with these latest changes and make it easier to follow.
- Added instructions on how to make MeGUI update to the latest releases
- Added basic instructions on video encoding quality
02/07/2010:
- Added new sample videos (original, speed and quality)
01/07/2010:
- Increased accuracy in the Quality script
25/06/2010:
- Added a new script with improved quality
16/06/2010:
- Improved speed slightly
- Fixed a crash
15/06/2010:
- Updated script for increased accuracy
05/06/2010:
- Fixed a bug with resizing
04/06/2010:
- Merged both scripts since the high quality one produced choppier motion
- Fixed a bug that stopped functions like crop and resize from working
- Fixed a bug that caused random crashes on very high-quality videos
26/05/2010:
- Updated high quality script since last version had problems
24/05/2010:
- There are now 2 scripts; one for quality and one for speed. Both are good.
- Updated Step 2 for better compatibility
- Removed code formatting since it was confusing to copy/paste
23/05/2010:
- Removed need to change script depending on your CPU and improved quality
21/05/2010:
- Small change to script
20/05/2010:
- Fixed an error with the DLL files









March 24th, 2013 - 05:39
I have followed all the steps, retraced my tracks a many times now to make sure. I get to the Step 12-13 but when in queue the video final just says “waiting” as the status and never changes. Previewing the script shows it clearly working before hand.
I am just stumped at this point, I hope someone can help. Thank you for all this I will be beyond glad when I finally get it working for sure.
March 24th, 2013 - 09:17
@GimpCent: So you clicked the “Start” button at the bottom of the Queue tab but nothing happens? Is there anything in the Log tab?
March 25th, 2013 - 17:56
@Polanski
I actually have the Setmemorymax back to 512. Was getting some crash issues when trying to preview the video. Keeps saying out of memory, when I still have another 20GB+ freed up. You’re also correct, that it doesn’t really improve performance increasing it.
SetMTMode, from what I understand set the force amount of CPU cores to use. These are logical cores and not the Hyper Threads from Intel CPUs. You won’t notice any difference, if you don’t have many logical cores to take advantage of. Right now, with SetMTmode(3,6), it’s using all of my CPU cores with HT enabled. So 12 CPUs are running at 99% on my i7 3930k @ 4.5Ghz.
Also, of course you’re gonna get picture quality degradation. You’re doubling the frame rate, which requires more data to maintain it’s picture quality. If you keep the bitrate the same size for a 30fps, but increase the fps to 60, you’re basically cutting the bitrate in half for the extra frames now.
For example, on a 30fps video, each frame get a set amount of bitrate. To keep things understandably easy, let’s just say 1 frame uses 100KB/s of data. Now, if you don’t increase the bitrate size, but you want more frames, that 100KB/s will need to split up it’s available data down to 50KB/s for each new added frame. You’ll of course notice a considerable amount of quality loss.
So in order to maintain quality, the bitrate will need to double along with it.
@snave
I’m transcoding a 2hr 1080p movie at 44fps on x264 using Medium Preset with CRF @ 16. I don’t recall doing any 720p videos lately, but I believe it’s faster than real time.
As for 2560×1600 videos, my fps average around 28fps.
March 26th, 2013 - 06:32
Is converting better or using live interpolation players like :Splash Pro for example.?
I am talking about quality.
Another question,How many hours would it take to convert a Bluray movie on intel i5?
March 30th, 2013 - 10:41
Please some one to tell me, where is the problem when start encoding 60.000 fps with Megui x264 64bit 10bit when process is 48% Megui stopped with error in log info:
“The 64 bit mode of x264 is enabled. Depending on the error it may help to disable it in the MeGUI settings”
please helping me to fix this problem, any chanse to use x264 64bit 10bit encoding for 60.000 fps, and is there any problems with this method when is encoding 30fps and 50fps ?
April 7th, 2013 - 03:40
I just want to have a program that gives med 60 FPS and i want the program to have as few buttons as possible.
Can you make an easier program that is easier to install and easier to use?
Can you make or recommend a program that converts to 60 fps more easily?
The AVC video track is missing the CTTS atom for frame t
Process exits with error: 1
April 7th, 2013 - 09:00
@Alex: http://highframerate.wordpress.com/interframegui-download/
May 3rd, 2013 - 12:38
How do I go about this on Windows 7 Pro 64-bit?
Do I need to do anything differently?
May 3rd, 2013 - 13:46
@Nathan: Nope, nothing different
May 4th, 2013 - 12:53
Am I doing something wrong? I get this error in Step 9: http://imageshack.us/a/img13/385/erroruw.jpg
I had this all set up and working, but I recently upgraded my hard drive and installed 64-bit Win 7 instead to take advantage of my CPU and Ram better.
May 5th, 2013 - 08:51
For differents reasons, lot of peoples ever still with windows XP Framework 2 (standard) and don’t be abble or won’t to change this loud part of a system.
Big mistake you made… Like a child, programming something on your own situation and hardware.
I can use twixtor and big others programs on my PC, but not your app !..
Shame.. no donation, no use, no way…
Rokets to the space imbarq material very lower than your personnal PC…
May 6th, 2013 - 07:14
Great work, but i have some problem with audio/video synchronization after using MKVmerge.
In MKVinfo i get video framerate 60fps but audio framerate is 23.976fps. When i play movie with MPC-HC sound is delayed to the video. Also the same problem occures on standalone hd player connected to TV.
May 6th, 2013 - 10:14
@Nathan: Looks like there is a problem with the AviSynth installation, you could try re-installing it
@mkpkpkopk: AFAIK it works fine on XP, you probably did something wrong
@tommi: Maybe the source file had an audio or video delay, in which case you need to set that again in MKVMerge
May 6th, 2013 - 18:34
@SubJunk – how can i check this delay?
May 6th, 2013 - 19:14
@tommi: I use MediaInfo
May 6th, 2013 - 23:46
@SubJunk – mediainfo says that audio is delayed to video 10ms, in mkvmerge i write this 10ms for audio track (input -> format specific options -> delay (in ms). Even i do this audio/video synchrnozation is still wrong.
May 7th, 2013 - 09:20
@tommi: It’s possible there is also a video delay. To find the delay yourself within 50ms you can play the output in VLC and use the keys “K” and “L” to shift the audio, then when you find the right value you can enter it in MKVMerge. It’s annoying and that is why the people who make files usually encode without audio delay – the better thing to do is to add silence to the beginning of the track to synchronise it (which can be done using DelayCut)
May 7th, 2013 - 13:51
I’m getting this error=0x7e
http://i1089.photobucket.com/albums/i349/beatsan/0x7eerror.jpg
Is there a way to fix this? Thanks for the tutorial btw. I tried following step by step but things like this are really discouraging for someone who isn’t too savy on the in-depth tech stuff. Any help is appreciated
May 10th, 2013 - 14:03
I have so so much trouble to convert some videos to 60FPS, specially animations. I guess is a codec problem, but could anyone recommend something to solve those codec problems? (I’ve installed Klite Mega Pack) or maybe recommend something to do before I try to convert to 60FPS? (like a recodec or something)
Please, I’m a big fan of HFR, but sometimes it gets ultra difficult.
May 20th, 2013 - 08:41
When I take a 1080p source at a high bitrate and use the One Click Encoder option (because I get way less WMV 99% complete loops this way) when I use 16 as the preset for Quality…the bitrate is usally below 2000kbs. Is there a setting I’m not adjusting properly? I’m using the 60fps profile from the guide and the x264: Blu-ray 720p60 encoder setting.
Thanks for your time!
May 25th, 2013 - 16:33
I’ve tried reinstalling AVISynth and am still getting the same error