--- /dev/null
+#!/usr/bin/env python
+
+import optparse, subprocess, sys
+
+cmd = [
+ "mencoder", "%(input)s", "-o", "%(output)s",
+ "-ffourcc", "DX50",
+ "-vf", "%(filters)s",
+ "-ovc", "xvid", "-xvidencopts", "pass=%(pass)d:bitrate=%(vbitrate)d:vhq=4",
+ "-oac", "mp3lame", "-lameopts", "abr:br=%(abitrate)d",
+]
+
+parser = optparse.OptionParser(usage="%prog [options] input output")
+parser.add_option("--dvd", action="store", dest="dvd")
+parser.add_option("--filters", action="store", dest="filters", default="denoise3d")
+parser.add_option("--vbitrate", action="store", dest="vbitrate", type="int", default=600)
+parser.add_option("--abitrate", action="store", dest="abitrate", type="int", default=192)
+parser.add_option("--dump", action="store_true", dest="dump")
+try:
+ opts, (input, output) = parser.parse_args(sys.argv[1:])
+except:
+ parser.print_usage()
+ sys.exit(1)
+
+# Start/stop time?
+# Custom dvd device?
+if opts.dvd:
+ cmd.insert(1, opts.dvd)
+ cmd.insert(1, "-dvd-device")
+
+# Default options
+subst = {
+ "vbitrate": opts.vbitrate,
+ "abitrate": opts.abitrate,
+ "filters": opts.filters,
+ "input": input,
+}
+
+def run(args):
+ if opts.dump:
+ print " ".join(args)
+ else:
+ subprocess.Popen(args).wait()
+
+# Pass 1
+subst["pass"] = 1
+subst["output"] = "/dev/null"
+run([x % subst for x in cmd])
+
+# Pass 2
+subst["pass"] = 2
+subst["output"] = output
+run([x % subst for x in cmd])
+