As some may have noticed, I've been advertising that I've been encoding movies with a specific script that I've claimed is literally as tough as possible while having no quality loss. Put simply, it's
The Stig the
A Flygons Guide to Encoding script. It's incredibly slow, but as far as we (The several encoders that I've discussed this with) are aware, it is the toughest possible attainable encoding script using directx264.
For those too lazy to click the page, I'll insert the script below.
start /wait x264 "mixed.avi" --deldup 0.1:0.1:100:1:0.1 --versioninfo --ssim --crf 0 --keyint 600 --ref 16 --mixed-refs --no-fast-pskip --bframes 16 --b-adapt 2 --mbtree --weightb --direct auto --subme 10 --trellis 2 --partitions all --me tesa --merange 512 --rc-lookahead 250 --fullrange on --threads 2 --8x8dct --no-dct-decimate --output "encodedboth.mp4"
The first thing that experienced encoders will notice is the very unusual
deldup value, quite simply, this will ensure that as many frames are chucked out as possible without getting rid
legitimate frames... I'm actually a bit confused as to how it works still, sgrunt and Aktan brought the issue up with me, I tested it, and was amazed at how well it worked. The only downside is that the value will make incredibly low motion scenes mess around with the playback position, this is especially noticeable inside credits sequences (I had VLC jumping between 10 seconds at a time simply because it couldn't tell where the hell it was), however, this shouldn't cause any compatibility and you're usually just focusing on the movie itself anyway.
Closer inspection reveals absurdly high
keyint and
merange values, the former helping with making VLC spazz out with its jumping around of the playback slider. Basically, the
keyint is set as high as I feel safe without sacrificing player compatibility, and is probably the only value in the script that can be used to make the encode smaller, but I really wouldn't recommend adjusting it too much, it's like adjusting the CPU voltage while overclocking, you can do it but it's dangerous. The
merange value is really the heart and soul of this script, it probably makes the largest difference compared to standard scripts, while standard scripts usually have a
merange equal to
64, this script has a range that is as high as the largest x or y resolution of the video (Going any higher is pointless, the range is measured in pixels) which really chops down the size... but really kicks up the encoding time.
Ah, the encoding time, that is the problem with this script, it's bloody slow, it's like comparing a solar powered car to a V8 engine powered
Holden... without sounding like someone out of
Top Gear, it's basically mindnumbingly slow on anything that has very complex motion, 3D games and games with heavy parallax scrolling are the main offenders here, the script is best used on encodes for 8-bit consoles (Such as the NES, SMS or Game Boy), and simpler 16-bit games (Such as early Mega Drive and SNES titles). Using it on anything else is basically suicide, it saves space, but it really does get to the point where it's not worth the time spent (For example,
Putter Golf encoded at 0.20fps on a Dual Core 1.6ghz machine simply because of the scrolling water in the background... I ended up cancelling the encode it was that bad). This script also isn't recommended for anyone that has a weak machine, it's extremely recommended you have a very high end Dual Core machine or a pretty decent Quad Core machine, now, I can see the Aktan alarms being set off, but I'm sorry, I just cannot see the quality degradation on 2-4 threads (But I wouldn't recommend going above 4 anyway, just in case), and that of course, you can't lose quality on lossless. I'd recommend a crf value between 18 to 20 for more complex games, while simpler ones keeping at 0 simply because it'll be tiny anyway.
Anyway, the point of this topic? I want to get people with powerful machines into using this script for 8-bit consoles and early 16-bit titles, I noticed I was the only one making them and was a bit disappointed, especially considering how simple it is to just use this script.