X-Git-Url: https://code.delx.au/transcoding/blobdiff_plain/719c760f51372b99982e824fd1e4a670eb950861..2353339b5b909c9c273e470b0f860f242168b6c4:/encode.py diff --git a/encode.py b/encode.py index a6f0cd8..31b765f 100755 --- a/encode.py +++ b/encode.py @@ -1,24 +1,29 @@ #!/usr/bin/env python -import commands import optparse -import shlex +import re import subprocess import sys import os -import tempfile import shutil +import tempfile class FatalException(Exception): pass def mkarg(arg): - quoted_arg = commands.mkarg(arg) - arg = quoted_arg[2:-1] - if len(shlex.split(arg)) == 1: + if re.match("^[a-zA-Z0-9\-\\.,/@_:=]*$", arg): return arg - else: - return quoted_arg[1:] + + if "'" not in arg: + return "'%s'" % arg + out = "\"" + for c in arg: + if c in "\\$\"`": + out += "\\" + out += c + out += "\"" + return out class Command(object): def __init__(self, profile, opts): @@ -104,6 +109,11 @@ class Mencoder(Command): cmd.append(var) if self.opts.deinterlace: cmd += ["-vf-add", "pp=lb"] + if self.opts.detelecine: + self.opts.ofps = "24000/1001" + cmd += ["-vf-add", "pullup,softskip"] + try_opt("-fps", self.opts.ifps) + try_opt("-ofps", self.opts.ofps) try_opt("-ss", self.opts.startpos) try_opt("-endpos", self.opts.endpos) try_opt("-dvd-device", self.opts.dvd) @@ -188,7 +198,7 @@ profiles = { Profile( commands=[Mencoder, MKVMerge], vcodec="x264", - vopts="pass=%(vpass)d:bitrate=%(vbitrate)d:subq=6:frameref=6:me=umh:partitions=all:bframes=4:b_adapt:qcomp=0.7:keyint=250:threads=2", + vopts="pass=%(vpass)d:bitrate=%(vbitrate)d:subq=6:frameref=6:me=umh:partitions=all:bframes=4:b_adapt:qcomp=0.7:keyint=250", acodec="mp3lame", aopts="abr:br=%(abitrate)d", ), @@ -280,11 +290,14 @@ def parse_args(): parser = optparse.OptionParser(usage="%prog [options] input [output]") parser.add_option("--dvd", action="store", dest="dvd") parser.add_option("--deinterlace", action="store_true", dest="deinterlace") + parser.add_option("--detelecine", action="store_true", dest="detelecine") parser.add_option("--vfilters", action="store", dest="vfilters") parser.add_option("--afilters", action="store", dest="afilters") parser.add_option("--vbitrate", action="store", dest="vbitrate", type="int") parser.add_option("--abitrate", action="store", dest="abitrate", type="int") parser.add_option("--chapter", action="store", dest="chapter") + parser.add_option("--ifps", action="store", dest="ifps") + parser.add_option("--ofps", action="store", dest="ofps") parser.add_option("--startpos", action="store", dest="startpos") parser.add_option("--endpos", action="store", dest="endpos") parser.add_option("--audioid", action="store", dest="audioid") @@ -346,7 +359,7 @@ def main(): command.run() except FatalException, e: - print >>sys.stderr, "Error:", e.message + print >>sys.stderr, "Error:", str(e) sys.exit(1) finally: