]> code.delx.au - transcoding/commitdiff
xvid encoder
authorJames Bunton <jamesbunton@fastmail.fm>
Sun, 16 Mar 2008 11:48:25 +0000 (22:48 +1100)
committerJames Bunton <jamesbunton@fastmail.fm>
Sun, 16 Mar 2008 11:48:25 +0000 (22:48 +1100)
toxvid.py [new file with mode: 0755]

diff --git a/toxvid.py b/toxvid.py
new file mode 100755 (executable)
index 0000000..dc545c2
--- /dev/null
+++ b/toxvid.py
@@ -0,0 +1,54 @@
+#!/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])
+