]> code.delx.au - transcoding/blob - toxvid.py
6ed34d3033dde3bc4643b03feb15780eb42f9dfd
[transcoding] / toxvid.py
1 #!/usr/bin/env python
2
3 import optparse, subprocess, sys
4
5 cmd = [
6 "mencoder", "%(input)s", "-o", "%(output)s",
7 "-ffourcc", "DX50",
8 "-vf", "%(filters)s",
9 "-ovc", "xvid", "-xvidencopts", "pass=%(pass)d:bitrate=%(vbitrate)d:vhq=4",
10 "-oac", "mp3lame", "-lameopts", "abr:br=%(abitrate)d",
11 ]
12
13
14 def parseArgs():
15 parser = optparse.OptionParser(usage="%prog [options] input output")
16 parser.add_option("--dvd", action="store", dest="dvd")
17 parser.add_option("--filters", action="store", dest="filters", default="denoise3d")
18 parser.add_option("--vbitrate", action="store", dest="vbitrate", type="int", default=600)
19 parser.add_option("--abitrate", action="store", dest="abitrate", type="int", default=192)
20 parser.add_option("--chapter", action="store", dest="chapter")
21 parser.add_option("--startpos", action="store", dest="startpos")
22 parser.add_option("--endpos", action="store", dest="endpos")
23 parser.add_option("--audioid", action="store", dest="audioid")
24 parser.add_option("--dump", action="store_true", dest="dump")
25 try:
26 opts, (input, output) = parser.parse_args(sys.argv[1:])
27 except:
28 parser.print_usage()
29 sys.exit(1)
30
31 return opts, input, output
32
33 def insertOpt(opt, var):
34 if var:
35 cmd.insert(1, var)
36 cmd.insert(1, opt)
37
38 def run(args, dump):
39 if dump:
40 print " ".join(args)
41 else:
42 subprocess.Popen(args).wait()
43
44 def main():
45 opts, input, output = parseArgs()
46
47 insertOpt("-ss", opts.startpos)
48 insertOpt("-endpos", opts.endpos)
49 insertOpt("-dvd-device", opts.dvd)
50 insertOpt("-chapter", opts.chapter)
51 insertOpt("-aid", opts.audioid)
52
53 subst = {
54 "vbitrate": opts.vbitrate,
55 "abitrate": opts.abitrate,
56 "filters": opts.filters,
57 "input": input,
58 }
59
60 # Pass 1
61 subst["pass"] = 1
62 subst["output"] = "/dev/null"
63 run([x % subst for x in cmd], opts.dump)
64
65 # Pass 2
66 subst["pass"] = 2
67 subst["output"] = output
68 run([x % subst for x in cmd], opts.dump)
69
70 if __name__ == "__main__":
71 main()
72