]> code.delx.au - transcoding/commitdiff
Consolidated encoders
authorJames Bunton <jamesbunton@fastmail.fm>
Mon, 17 Mar 2008 06:33:01 +0000 (17:33 +1100)
committerJames Bunton <jamesbunton@fastmail.fm>
Mon, 17 Mar 2008 06:33:01 +0000 (17:33 +1100)
encode.py [moved from toh264.py with 72% similarity]
encx264.py [new symlink]
encxvid.py [new symlink]
toxvid.py [deleted file]

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)
diff --git a/encx264.py b/encx264.py
new file mode 120000 (symlink)
index 0000000..482c483
--- /dev/null
@@ -0,0 +1 @@
+encode.py
\ No newline at end of file
diff --git a/encxvid.py b/encxvid.py
new file mode 120000 (symlink)
index 0000000..482c483
--- /dev/null
@@ -0,0 +1 @@
+encode.py
\ No newline at end of file
diff --git a/toxvid.py b/toxvid.py
deleted file mode 100755 (executable)
index 6ed34d3..0000000
--- a/toxvid.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/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",
-]
-
-
-def parseArgs():
-       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("--chapter", action="store", dest="chapter")
-       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("--dump", action="store_true", dest="dump")
-       try:
-               opts, (input, output) = parser.parse_args(sys.argv[1:])
-       except:
-               parser.print_usage()
-               sys.exit(1)
-       
-       return opts, input, output
-
-def insertOpt(opt, var):
-       if var:
-               cmd.insert(1, var)
-               cmd.insert(1, opt)
-
-def run(args, dump):
-       if dump:
-               print " ".join(args)
-       else:
-               subprocess.Popen(args).wait()
-
-def main():
-       opts, input, output = parseArgs()
-
-       insertOpt("-ss", opts.startpos)
-       insertOpt("-endpos", opts.endpos)
-       insertOpt("-dvd-device", opts.dvd)
-       insertOpt("-chapter", opts.chapter)
-       insertOpt("-aid", opts.audioid)
-
-       subst = {
-               "vbitrate": opts.vbitrate,
-               "abitrate": opts.abitrate,
-               "filters": opts.filters,
-               "input": input,
-       }
-
-       # Pass 1
-       subst["pass"] = 1
-       subst["output"] = "/dev/null"
-       run([x % subst for x in cmd], opts.dump)
-
-       # Pass 2
-       subst["pass"] = 2
-       subst["output"] = output
-       run([x % subst for x in cmd], opts.dump)
-
-if __name__ == "__main__":
-       main()
-