]> code.delx.au - transcoding/blobdiff - encode.py
Consolidated encoders
[transcoding] / encode.py
similarity index 72%
rename from toh264.py
rename to encode.py
index afa83c358881e8b7ea01ea5f4bf01f6ada7a593b..c376cb6dec51becf6280262aec7ee21b3ee28fbb 100755 (executable)
--- a/toh264.py
+++ b/encode.py
@@ -2,15 +2,33 @@
 
 import optparse, subprocess, sys
 
-cmd = [
+codecs = {
+"x264":
+[
        "mencoder", "%(input)s", "-o", "%(output)s",
        "-vf", "%(filters)s",
        "-ovc", "x264", "-x264encopts", "pass=%(pass)d:bitrate=%(vbitrate)d:me=umh:partitions=all:trellis=1",
        "-oac", "faac", "-faacopts", "br=%(abitrate)d:mpeg=4:object=2", "-channels", "2", "-srate", "48000",
-]
+],
+
+"xvid":
+[
+       "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",
+],
+}
 
 
 def parseArgs():
+       for codec in codecs.keys():
+               if sys.argv[0].find(codec) >= 0:
+                       break
+       else:
+               codec = "x264"
+
        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")
@@ -20,6 +38,7 @@ def parseArgs():
        parser.add_option("--startpos", action="store", dest="startpos")
        parser.add_option("--endpos", action="store", dest="endpos")
        parser.add_option("--audioid", action="store", dest="audioid")
+       parser.add_option("--codec", action="store", dest="codec", default=codec)
        parser.add_option("--dump", action="store_true", dest="dump")
        try:
                opts, (input, output) = parser.parse_args(sys.argv[1:])
@@ -27,12 +46,7 @@ def parseArgs():
                parser.print_usage()
                sys.exit(1)
        
-       return opts, input, output
-
-def insertOpt(opt, var):
-       if var:
-               cmd.insert(1, var)
-               cmd.insert(1, opt)
+       return opts, codec, input, output
 
 def run(args, dump):
        if dump:
@@ -41,8 +55,18 @@ def run(args, dump):
                subprocess.Popen(args).wait()
 
 def main():
-       opts, input, output = parseArgs()
+       opts, codec, input, output = parseArgs()
+       try:
+               cmd = codecs[codec]
+       except:
+               print >>sys.stderr, "Codec '%s' not found!" % codec
+               sys.exit(1)
+
 
+       def insertOpt(opt, var):
+               if var:
+                       cmd.insert(1, var)
+                       cmd.insert(1, opt)
        insertOpt("-ss", opts.startpos)
        insertOpt("-endpos", opts.endpos)
        insertOpt("-dvd-device", opts.dvd)