OSDN Git Service

Import Rec10 0.3.1
[rec10/rec10-git.git] / rec10 / trunk / src / ts2x264.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
5 import os
6 import time
7 import re
8
9 def ts2x264(pin,pout,opts):#sizeは"HD"か"SD"
10     pout = pout.encode('utf-8')
11     pin = pin.encode('utf-8')
12     """
13     pinで指定されたファイルをpoutにx264でエンコードして書き出す
14     """
15     isAnime=0
16     size="SD"
17
18     makemini=0
19     if re.search("a",opts):
20         isAnime=1
21         #print "isAnime"
22     dualpass=0
23     if re.search("2",opts):
24         dualpass=1
25     if re.search("Q",opts):
26         size="WQVGA"
27     if re.search("F",opts):
28         size="FHD"
29     if re.search("H",opts):
30         size="HD"
31     if re.search("S",opts):
32         size="SD"
33     if re.search("t",opts):
34         makemini=1
35     if isAnime==1:
36         encvf="-vf pullup,softskip,pp=l5,"
37     else:
38         encvf="-vf pp=l5,"
39     if size=="SD":
40         encvf=encvf+"scale=720:480,harddup"
41         bitrate="bitrate=1250"
42     elif size=="HD":
43         encvf=encvf+"scale=1280:720,harddup"
44         bitrate="bitrate=2000"
45     elif size=="FHD":
46         encvf=encvf+"scale=1920:1080,harddup"
47         bitrate="bitrate=2500"
48     elif size=="WQVGA":
49         encvf=encvf+"scale=400:240,harddup"
50         bitrate="bitrate=200"
51     else:
52         encvf=encvf+"scale=1280:720,harddup"
53         bitrate="bitrate=2000"
54
55     if dualpass==1:
56         pas1exe="mencoder \'"+pin+"\' -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto:pass=1:turbo=2 -passlogfile "+pin+".log "+"-oac mp3lame -lameopts cbr:br=128 -o /dev/null"
57         pas2exe="mencoder \'"+pin+"\' -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto:pass=2 -passlogfile "+pin+".log "+"-oac mp3lame -lameopts cbr:br=128 -o \'"+pout+"\'"
58         pas1exe="/usr/bin/nice -n 19 "+pas1exe
59         pas2exe="/usr/bin/nice -n 19 "+pas2exe
60         #exe="mencoder \'"+pin+"\' -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto -oac mp3lame -lameopts cbr:br=128 -o \'"+pout+"\'"
61         #exe="/usr/bin/nice -n 19 "+exe
62         #print "Now. encoding..."+exe
63         print pas2exe
64         os.system(pas1exe)
65         print "1pass終了"
66         time.sleep(5)
67         os.system(pas2exe)
68     else:
69         pas1exe="mencoder \'"+pin+"\' -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto -oac mp3lame -lameopts cbr:br=128  -o \'"+pout+"\'"
70         os.system(pas1exe)
71     if makemini==1:
72         extt = os.path.splitext(pout)
73         minipout=extt[0]+"mini"+".flv"
74         ts2minix264(pin,minipout)
75         #miniexe="mencoder 咲-Saki- 第6話「開幕」[S].ts -ovc x264 -vf pullup,softskip,pp=l5,scale=1280:720,harddup -x264encopts bitrate=2000:crf=20:threads=auto -oac mp3lame -lameopts cbr:br=128 -o
76
77
78 def ts2minix264(pin,pout):
79     miniexe="mencoder \'"+pin+"\' -ovc x264 -vf pullup,softskip,pp=l5,scale=512:384,harddup "
80     miniexe=miniexe+"-x264encopts bitrate=300:threads=auto -oac mp3lame -lameopts cbr:br=64 -o \'"+pout+"\'"
81     os.system(miniexe)
82
83 def ts2minix264(pin):
84     extt = os.path.splitext(pin)
85     pout=extt[0]+"mini"+".flv"
86     miniexe="mencoder \'"+pin+"\' -ovc x264 -vf pullup,softskip,pp=l5,scale=512:384,harddup "
87     miniexe=miniexe+"-x264encopts bitrate=300:threads=auto -oac mp3lame -lameopts cbr:br=64 -o \'"+pout+"\'"
88     os.system(miniexe)
89 """     
90 anime=0
91 pin=""
92 pout=""
93 size=""
94 for opt, args in optlist:
95         if opt in ("-i", "--input"):
96                 pin=args
97         if opt in ("-o", "--output"):
98                 pout=args
99         if opt in ("-s", "--size"):
100                 size=args
101         if opt in ("-a", "--anime"):
102                 anime=1
103
104 #ts2x264(pin,pout,size,anime)
105 """