3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2010 Yukikaze
19 def wav2aac_nero(pin,pout):
20 os.environ['LANG']="ja_JP.UTF-8"
21 neroaac=configreader.getpath('NeroAAC')
22 exe=neroaac+" -br 128000 -2pass -if \""+pin+"\" -of \""+pout+"\""
24 txt=commands.getoutput(exe.encode('utf-8'))
25 recdblist.addlog(pin, exe, u"Wav2aac_Neroログ-コマンド")
26 recdblist.addlog(pin, txt, u"Wav2aac_Neroログ-詳細")
28 if not os.path.exists(pout):
30 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
31 txt=commands.getoutput(exe.encode('utf-8'))
32 recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
33 recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
34 def wav2mp3_lame(pin,pout):
35 os.environ['LANG']="ja_JP.UTF-8"
37 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
39 txt=commands.getoutput(exe.encode('utf-8'))
42 recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
43 recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
44 def ts2single_audio(pts,opts):
45 paac=pts.replace(".ts",".aac")
46 ffmpeg=configreader.getpath("ffmpeg")
47 e0=ffmpeg+" -i \""+pts+"\" -y -vn -f aac -acodec copy \""+paac+"\""
48 p0=subprocess.Popen(e0,shell=True)
51 if os.path.exists(paac):
52 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
54 logt=unicode(p0.communicate()[0], "UTF-8")
55 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
56 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
59 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
60 os.kill(p0.pid,signal.SIGKILL)
62 ts2single_mp3_ffmpeg(pts)
63 if not os.path.exists(pts.replace(".ts",".mp3")):
64 ts2single_fp_BonTsDemux(pts,opts)
66 logt=unicode(p0.communicate()[0], "UTF-8")
67 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
68 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
71 logt=unicode(p0.communicate()[0], "UTF-8")
72 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
73 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
76 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
78 os.kill(p0.pid,signal.SIGKILL)
81 ts2single_mp3_ffmpeg(pts)
82 if not os.path.exists(pts.replace(".ts",".mp3")):
83 ts2single_fp_BonTsDemux(pts,opts)
85 if os.path.exists(paac):
86 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
88 logt=unicode(p0.communicate()[0], "UTF-8")
89 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
90 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
93 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
95 ts2single_mp3_ffmpeg(pts)
96 if not os.path.exists(pts.replace(".ts",".mp3")):
97 ts2single_fp_BonTsDemux(pts,opts)
100 logt=unicode(p0.communicate()[0], "UTF-8")
101 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
102 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
107 logt=unicode(p0.communicate()[0], "UTF-8")
108 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
109 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
112 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
113 ts2single_mp3_ffmpeg(pts)
114 if not os.path.exists(pts.replace(".ts",".mp3")):
115 ts2single_fp_BonTsDemux(pts,opts)
116 def ts2singlewav(pts,opts):
117 bontsdemux = configreader.getpath('bontsdemux')
118 bonpin = "Z:\\" + pts[1:]
119 outf = os.path.splitext(pts)[0]
120 bonpout = "Z:\\" + outf[1:]
121 xvfb = configreader.getpath('xvfb-run')
124 if re.search(",",opts):
126 if re.search(".",opts):
128 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" "+delayt+" -nd "+vf+"-sound 0 -o \"" + bonpout + "\" -start -quit"
129 #recdblist.printutf8(exe)
130 exe = xvfb + ' -a ' + exe
131 recdblist.printutf8(exe)
132 p=subprocess.Popen(exe.encode('utf-8'),shell=True)
134 logt=unicode(p.communicate()[0], "UTF-8")
135 recdblist.addCommandLog(ots, u"BonTsDemux 音声取り出し", exe, logt)
136 def ts2single_mp3_ffmpeg(pts):
137 pmp3=pts.replace(".ts",".mp3")
138 ffmpeg=configreader.getpath("ffmpeg")
139 e0=ffmpeg+" -i \""+pts+"\" -y -vn -ab 128k \""+pmp3+"\""
140 p0=subprocess.Popen(e0,shell=True)
141 os.waitpid(p0.pid, 0)
143 logt=unicode(p0.communicate()[0], "UTF-8")
144 recdblist.addlog(pts,e0, "FFmpeg_mp3音声取り出しログ-コマンド")
145 recdblist.addlog(pts,logt, "FFmpeg_mp3音声取り出しログ-詳細")
148 def ts2single_fp_BonTsDemux(pts,opts):
151 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
156 ts2single_aac_BonTsDemux_Nero(pts,opts)
158 ts2single_mp3_BonTsDemux(pts,opts)
159 def ts2single_aac_BonTsDemux_Nero(pts,opts):
160 ts2singlewav(pts,opts)
161 aout=pts.replace(".ts",".aac")
162 ain=pts.replace(".ts",".wav")
163 wav2aac_nero(ain,aout)
164 def ts2single_mp3_BonTsDemux(pts,opts):
165 ts2singlewav(pts,opts)
166 aout=pts.replace(".ts",".mp3")
167 ain=pts.replace(".ts",".wav")
168 wav2mp3_lame(ain,aout)
169 def dualaudio2sep(pin, delay,opts):
173 xvfb = configreader.getpath('xvfb-run')
174 bontsdemux = configreader.getpath('bontsdemux')
175 wine = configreader.getpath('wine')
176 bonpin = "Z:\\" + pin[1:]
177 outf = os.path.splitext(pin)[0]
178 bonpout = "Z:\\" + outf[1:]
179 if re.search(",",opts):
181 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd "+vf+"-sound 1 -o \"" + bonpout + "\" -start -quit"
182 recdblist.printutf8(exe)
183 exe = xvfb + ' -a ' + exe
184 txt=commands.getoutput(exe.encode('utf-8'))
186 recdblist.addCommandLog(pin, u"BonTsDemux 第一音声取り出し", exe, txt)
189 ffpin = pin.replace(".ts", "")
190 ffpin1 = pin.replace("ts", "wav")
191 ffpin2 = pin.replace("ts", "m2v")
192 ffpout1 = ffpin + "_1.wav"
193 ffpout2 = ffpin + "_2.wav"
194 ffpout3 = ffpin + ".m2v"
195 shutil.move(ffpin1, ffpout1)
196 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd "+vf+"-sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit"
197 recdblist.printutf8(exe)
198 exe = xvfb + ' -a ' + exe
199 txt=commands.getoutput(exe.encode('utf-8'))
201 recdblist.addCommandLog(pin, u"BonTsDemux 第二音声取り出し", exe, txt)
205 shutil.move(ffpin1, ffpout2)
206 shutil.move(ffpin2, ffpout3)
207 ffpout21=ffpout1.replace(".wav",".mp3")
208 ffpout22=ffpout2.replace(".wav",".mp3")
211 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
216 ffpout21=ffpout1.replace(".wav",".aac")
217 ffpout22=ffpout2.replace(".wav",".aac")
218 wav2aac_nero(ffpout1, ffpout21)
219 wav2aac_nero(ffpout2, ffpout22)
221 wav2mp3_lame(ffpout1, ffpout21)
222 wav2mp3_lame(ffpout2, ffpout22)
226 def pentaaudio2sep(pin):
227 bontsdemux = configreader.getpath('bontsdemux')
228 wine = configreader.getpath('wine')
229 xvfb = configreader.getpath('xvfb-run')
230 bonpin = "Z:\\" + pin[1:]
231 outf = os.path.splitext(pin)[0]
232 bonpout = "Z:\\" + outf[1:]
233 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 3 -o \"" + bonpout + "\" -start -quit"
234 exe = xvfb + ' -a ' + exe
235 recdblist.printutf8(exe)
236 txt=commands.getoutput(exe.encode('utf-8'))
238 recdblist.addCommandLog(pin, u"BonTsDemux5.1ch 第一音声取り出し", exe, txt)
241 ffpin = pin.replace(".ts", "")
242 ffpin1 = pin.replace("ts", "wav")
243 ffpin2 = pin.replace("ts", "m2v")
244 ffpout1 = ffpin + "_1.wav"
245 ffpout2 = ffpin + "_2.aac"
246 shutil.move(ffpin1, ffpout1)
247 exe = "ffmpeg -i '"+pin+"' -vn -f aac -acodec copy '"+ffpout2+"'"
248 recdblist.printutf8(exe)
249 txt=commands.getoutput(exe.encode('utf-8'))
251 recdblist.addCommandLog(pin, u"FFmpeg 5.1ch 第二音声(raw AAC)取り出し", exe, txt)
254 ffpout21=ffpout1.replace(".wav",".mp3")
257 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
262 ffpout21=ffpout1.replace(".wav",".aac")
263 wav2aac_nero(ffpout1, ffpout21)
265 wav2mp3_lame(ffpout1, ffpout21)
266 if not os.path.exists(ffpout21):
267 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit"
268 exe = xvfb + ' -a ' + exe
269 recdblist.printutf8(exe)
270 txt=commands.getoutput(exe.encode('utf-8'))
272 recdblist.addCommandLog(pin, u"BonTsDemux 修正版第二音声(2chDownmix)取り出し", exe, txt)
275 shutil.move(ffpin1, ffpout1)
277 ffpout21=ffpout1.replace(".wav",".aac")
278 wav2aac_nero(ffpout1, ffpout21)
280 wav2mp3_lame(ffpout1, ffpout21)
282 ffpout21=ffpout1.replace(".wav",".aac")
283 if os.path.exists(ffpout21):
284 if os.path.getsize(ffpout21)>10*1000*1000: