3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2010 Yukikaze
14 def wav2aac_nero(pin,pout):
15 os.environ['LANG']="ja_JP.UTF-8"
16 neroaac=configreader.getpath('NeroAAC')
17 exe=neroaac+" -br 128000 -2pass -if \""+pin+"\" -of \""+pout+"\""
19 txt=commands.getoutput(exe.encode('utf-8'))
20 recdblist.addlog(pin, exe, u"Wav2aac_Neroログ-コマンド")
21 recdblist.addlog(pin, txt, u"Wav2aac_Neroログ-詳細")
23 if not os.path.exists(pout):
25 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
26 txt=commands.getoutput(exe.encode('utf-8'))
27 recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
28 recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
29 def wav2mp3_lame(pin,pout):
30 os.environ['LANG']="ja_JP.UTF-8"
32 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
34 txt=commands.getoutput(exe.encode('utf-8'))
37 recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
38 recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
39 def ts2single_audio(pts,opts):
40 paac=pts.replace(".ts",".aac")
41 ffmpeg=configreader.getpath("ffmpeg")
42 e0=ffmpeg+" -i \""+pts+"\" -y -vn -f aac -acodec copy \""+paac+"\""
43 p0=subprocess.Popen(e0,shell=True)
46 if os.path.exists(paac):
47 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
49 logt=unicode(p0.communicate()[0], "UTF-8")
50 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
51 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
54 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
55 os.kill(p0.pid,signal.SIGKILL)
57 ts2single_mp3_ffmpeg(pts)
58 if not os.path.exists(pts.replace(".ts",".mp3")):
59 ts2single_fp_BonTsDemux(pts,opts)
61 logt=unicode(p0.communicate()[0], "UTF-8")
62 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
63 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
66 logt=unicode(p0.communicate()[0], "UTF-8")
67 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
68 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
71 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
73 os.kill(p0.pid,signal.SIGKILL)
76 ts2single_mp3_ffmpeg(pts)
77 if not os.path.exists(pts.replace(".ts",".mp3")):
78 ts2single_fp_BonTsDemux(pts,opts)
80 if os.path.exists(paac):
81 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
83 logt=unicode(p0.communicate()[0], "UTF-8")
84 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
85 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
88 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
90 ts2single_mp3_ffmpeg(pts)
91 if not os.path.exists(pts.replace(".ts",".mp3")):
92 ts2single_fp_BonTsDemux(pts,opts)
95 logt=unicode(p0.communicate()[0], "UTF-8")
96 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
97 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
102 logt=unicode(p0.communicate()[0], "UTF-8")
103 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
104 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
107 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
108 ts2single_mp3_ffmpeg(pts)
109 if not os.path.exists(pts.replace(".ts",".mp3")):
110 ts2single_fp_BonTsDemux(pts,opts)
111 def ts2singlewav(pts,opts):
112 bontsdemux = configreader.getpath('bontsdemux')
113 bonpin = "Z:\\" + pts[1:]
114 outf = os.path.splitext(pts)[0]
115 bonpout = "Z:\\" + outf[1:]
116 xvfb = configreader.getpath('xvfb-run')
119 if re.search(",",opts):
121 if re.search(".",opts):
123 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" "+delayt+" -nd "+vf+"-sound 0 -o \"" + bonpout + "\" -start -quit"
124 #recdblist.printutf8(exe)
125 exe = xvfb + ' -a ' + exe
126 recdblist.printutf8(exe)
127 p=subprocess.Popen(exe.encode('utf-8'),shell=True)
129 logt=unicode(p.communicate()[0], "UTF-8")
130 recdblist.addCommandLog(ots, u"BonTsDemux 音声取り出し", exe, logt)
131 def ts2single_mp3_ffmpeg(pts):
132 pmp3=pts.replace(".ts",".mp3")
133 ffmpeg=configreader.getpath("ffmpeg")
134 e0=ffmpeg+" -i \""+pts+"\" -y -vn -ab 128k \""+pmp3+"\""
135 p0=subprocess.Popen(e0,shell=True)
136 os.waitpid(p0.pid, 0)
138 logt=unicode(p0.communicate()[0], "UTF-8")
139 recdblist.addlog(pts,e0, "FFmpeg_mp3音声取り出しログ-コマンド")
140 recdblist.addlog(pts,logt, "FFmpeg_mp3音声取り出しログ-詳細")
143 def ts2single_fp_BonTsDemux(pts,opts):
146 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
151 ts2single_aac_BonTsDemux_Nero(pts,opts)
153 ts2single_mp3_BonTsDemux(pts,opts)
154 def ts2single_aac_BonTsDemux_Nero(pts,opts):
155 ts2singlewav(pts,opts)
156 aout=pts.replace(".ts",".aac")
157 ain=pts.replace(".ts",".wav")
158 tv2audio.wav2aac_nero(ain,aout)
159 def ts2single_mp3_BonTsDemux(pts,opts):
160 ts2singlewav(pts,opts)
161 aout=pts.replace(".ts",".mp3")
162 ain=pts.replace(".ts",".wav")
163 tv2audio.wav2mp3_lame(ain,aout)
164 def dualaudio2sep(pin, delay,opts):
168 xvfb = configreader.getpath('xvfb-run')
169 bontsdemux = configreader.getpath('bontsdemux')
170 wine = configreader.getpath('wine')
171 bonpin = "Z:\\" + pin[1:]
172 outf = os.path.splitext(pin)[0]
173 bonpout = "Z:\\" + outf[1:]
174 if re.search(",",opts):
176 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd "+vf+"-sound 1 -o \"" + bonpout + "\" -start -quit"
177 recdblist.printutf8(exe)
178 exe = xvfb + ' -a ' + exe
179 txt=commands.getoutput(exe.encode('utf-8'))
181 recdblist.addCommandLog(pin, u"BonTsDemux 第一音声取り出し", exe, txt)
184 ffpin = pin.replace(".ts", "")
185 ffpin1 = pin.replace("ts", "wav")
186 ffpin2 = pin.replace("ts", "m2v")
187 ffpout1 = ffpin + "_1.wav"
188 ffpout2 = ffpin + "_2.wav"
189 ffpout3 = ffpin + ".m2v"
190 shutil.move(ffpin1, ffpout1)
191 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd "+vf+"-sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit"
192 recdblist.printutf8(exe)
193 exe = xvfb + ' -a ' + exe
194 txt=commands.getoutput(exe.encode('utf-8'))
196 recdblist.addCommandLog(pin, u"BonTsDemux 第二音声取り出し", exe, txt)
200 shutil.move(ffpin1, ffpout2)
201 shutil.move(ffpin2, ffpout3)
202 ffpout21=ffpout1.replace(".wav",".mp3")
203 ffpout22=ffpout2.replace(".wav",".mp3")
206 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
211 ffpout21=ffpout1.replace(".wav",".aac")
212 ffpout22=ffpout2.replace(".wav",".aac")
213 tv2audio.wav2aac_nero(ffpout1, ffpout21)
214 tv2audio.wav2aac_nero(ffpout2, ffpout22)
216 tv2audio.wav2mp3_lame(ffpout1, ffpout21)
217 tv2audio.wav2mp3_lame(ffpout2, ffpout22)
221 def pentaaudio2sep(pin):
222 bontsdemux = configreader.getpath('bontsdemux')
223 wine = configreader.getpath('wine')
224 xvfb = configreader.getpath('xvfb-run')
225 bonpin = "Z:\\" + pin[1:]
226 outf = os.path.splitext(pin)[0]
227 bonpout = "Z:\\" + outf[1:]
228 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 3 -o \"" + bonpout + "\" -start -quit"
229 exe = xvfb + ' -a ' + exe
230 recdblist.printutf8(exe)
231 txt=commands.getoutput(exe.encode('utf-8'))
233 recdblist.addCommandLog(pin, u"BonTsDemux5.1ch 第一音声取り出し", exe, txt)
236 ffpin = pin.replace(".ts", "")
237 ffpin1 = pin.replace("ts", "wav")
238 ffpin2 = pin.replace("ts", "m2v")
239 ffpout1 = ffpin + "_1.wav"
240 ffpout2 = ffpin + "_2.aac"
241 shutil.move(ffpin1, ffpout1)
242 exe = "ffmpeg -i '"+pin+"' -vn -f aac -acodec copy '"+ffpout2+"'"
243 recdblist.printutf8(exe)
244 txt=commands.getoutput(exe.encode('utf-8'))
246 recdblist.addCommandLog(pin, u"FFmpeg 5.1ch 第二音声(raw AAC)取り出し", exe, txt)
249 ffpout21=ffpout1.replace(".wav",".mp3")
252 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
257 ffpout21=ffpout1.replace(".wav",".aac")
258 tv2audio.wav2aac_nero(ffpout1, ffpout21)
260 tv2audio.wav2mp3_lame(ffpout1, ffpout21)
261 if not os.path.exists(ffpout21):
262 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit"
263 exe = xvfb + ' -a ' + exe
264 recdblist.printutf8(exe)
265 txt=commands.getoutput(exe.encode('utf-8'))
267 recdblist.addCommandLog(pin, u"BonTsDemux 修正版第二音声(2chDownmix)取り出し", exe, txt)
270 shutil.move(ffpin1, ffpout1)
272 ffpout21=ffpout1.replace(".wav",".aac")
273 tv2audio.wav2aac_nero(ffpout1, ffpout21)
275 tv2audio.wav2mp3_lame(ffpout1, ffpout21)
277 ffpout21=ffpout1.replace(".wav",".aac")
278 if os.path.exists(ffpout21):
279 if os.path.getsize(ffpout21)>10*1000*1000: