]> code.delx.au - transcoding/blob - toh264.py
3d902310061e5193b44eead1642f03793af5ec87
[transcoding] / toh264.py
1 #!/usr/bin/env python
2
3 import optparse, subprocess, sys
4
5 cmd = [
6 "mencoder", "%(input)s", "-o", "%(output)s",
7 "-vf", "%(filters)s",
8 "-ovc", "x264", "-x264encopts", "pass=%(pass)d:turbo:bitrate=%(vbitrate)d:me=umh:partitions=all:trellis=1",
9 "-oac", "faac", "-faacopts", "br=%(abitrate)d:mpeg=4:object=2", "-channels", "2", "-srate", "48000",
10 ]
11
12 parser = optparse.OptionParser(usage="%prog [options] input output")
13 parser.add_option("--dvd", action="store", dest="dvd")
14 parser.add_option("--filters", action="store", dest="filters", default="denoise3d")
15 parser.add_option("--vbitrate", action="store", dest="vbitrate", type="int", default=600)
16 parser.add_option("--abitrate", action="store", dest="abitrate", type="int", default=192)
17 parser.add_option("--dump", action="store_true", dest="dump")
18 try:
19 opts, (input, output) = parser.parse_args(sys.argv[1:])
20 except:
21 parser.print_usage()
22 sys.exit(1)
23
24 # Start/stop time?
25 # Custom dvd device?
26 if opts.dvd:
27 cmd.insert(1, opts.dvd)
28 cmd.insert(1, "-dvd-device")
29
30 # Default options
31 subst = {
32 "vbitrate": opts.vbitrate,
33 "abitrate": opts.abitrate,
34 "filters": opts.filters,
35 "input": input,
36 }
37
38 def run(args):
39 if opts.dump:
40 print " ".join(args)
41 else:
42 subprocess.Popen(args).wait()
43
44 # Pass 1
45 subst["pass"] = 1
46 subst["output"] = "/dev/null"
47 run([x % subst for x in cmd])
48
49 # Pass 2
50 subst["pass"] = 2
51 subst["output"] = output
52 run([x % subst for x in cmd])
53