From: James Bunton Date: Mon, 17 Mar 2008 06:33:01 +0000 (+1100) Subject: Consolidated encoders X-Git-Url: https://code.delx.au/transcoding/commitdiff_plain/dff2843c4cb5e8d36e8e7f0970b155ee0761b781 Consolidated encoders --- diff --git a/toh264.py b/encode.py similarity index 72% rename from toh264.py rename to encode.py index afa83c3..c376cb6 100755 --- 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 index 0000000..482c483 --- /dev/null +++ b/encx264.py @@ -0,0 +1 @@ +encode.py \ No newline at end of file diff --git a/encxvid.py b/encxvid.py new file mode 120000 index 0000000..482c483 --- /dev/null +++ b/encxvid.py @@ -0,0 +1 @@ +encode.py \ No newline at end of file diff --git a/toxvid.py b/toxvid.py deleted file mode 100755 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() -