3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2010 Yukikaze
15 def wav2aac_nero(pin,pout):
16 os.environ['LANG']="ja_JP.UTF-8"
17 neroaac=configreader.getpath('NeroAAC')
18 exe=neroaac+" -br 128000 -2pass -if \""+pin+"\" -of \""+pout+"\""
20 txt=commands.getoutput(exe.encode('utf-8'))
21 recdblist.addlog(pin, exe, u"Wav2aac_Neroログ-コマンド")
22 recdblist.addlog(pin, txt, u"Wav2aac_Neroログ-詳細")
24 if not os.path.exists(pout):
26 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
27 txt=commands.getoutput(exe.encode('utf-8'))
28 recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
29 recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
30 def wav2mp3_lame(pin,pout):
31 os.environ['LANG']="ja_JP.UTF-8"
33 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
35 txt=commands.getoutput(exe.encode('utf-8'))
38 recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
39 recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
40 def ts2single_audio(pts,opts):
41 paac=pts.replace(".ts",".aac")
42 ffmpeg=configreader.getpath("ffmpeg")
43 e0=ffmpeg+" -i \""+pts+"\" -y -vn -f aac -acodec copy \""+paac+"\""
44 p0=subprocess.Popen(e0,shell=True)
47 if os.path.exists(paac):
48 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
50 logt=unicode(p0.communicate()[0], "UTF-8")
51 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
52 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
55 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
56 os.kill(p0.pid,signal.SIGKILL)
58 ts2single_mp3_ffmpeg(pts)
59 if not os.path.exists(pts.replace(".ts",".mp3")):
60 ts2single_fp_BonTsDemux(pts,opts)
62 logt=unicode(p0.communicate()[0], "UTF-8")
63 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
64 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
67 logt=unicode(p0.communicate()[0], "UTF-8")
68 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
69 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
72 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
74 os.kill(p0.pid,signal.SIGKILL)
77 ts2single_mp3_ffmpeg(pts)
78 if not os.path.exists(pts.replace(".ts",".mp3")):
79 ts2single_fp_BonTsDemux(pts,opts)
81 if os.path.exists(paac):
82 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
84 logt=unicode(p0.communicate()[0], "UTF-8")
85 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
86 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
89 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
91 ts2single_mp3_ffmpeg(pts)
92 if not os.path.exists(pts.replace(".ts",".mp3")):
93 ts2single_fp_BonTsDemux(pts,opts)
96 logt=unicode(p0.communicate()[0], "UTF-8")
97 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
98 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
103 logt=unicode(p0.communicate()[0], "UTF-8")
104 recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
105 recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
108 recdblist.Commonlogex("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
109 ts2single_mp3_ffmpeg(pts)
110 if not os.path.exists(pts.replace(".ts",".mp3")):
111 ts2single_fp_BonTsDemux(pts,opts)
112 def ts2singlewav(pts,opts):
113 bontsdemux = configreader.getpath('bontsdemux')
114 bonpin = "Z:\\" + pts[1:]
115 outf = os.path.splitext(pts)[0]
116 bonpout = "Z:\\" + outf[1:]
117 xvfb = configreader.getpath('xvfb-run')
120 if re.search(",",opts):
122 if re.search(".",opts):
124 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" "+delayt+" -nd "+vf+"-sound 0 -o \"" + bonpout + "\" -start -quit"
125 #recdblist.printutf8(exe)
126 exe = xvfb + ' -a ' + exe
127 recdblist.printutf8(exe)
128 p=subprocess.Popen(exe.encode('utf-8'),shell=True)
130 logt=unicode(p.communicate()[0], "UTF-8")
131 recdblist.addCommandLog(ots, u"BonTsDemux 音声取り出し", exe, logt)
132 def ts2single_mp3_ffmpeg(pts):
133 pmp3=pts.replace(".ts",".mp3")
134 ffmpeg=configreader.getpath("ffmpeg")
135 e0=ffmpeg+" -i \""+pts+"\" -y -vn -ab 128k \""+pmp3+"\""
136 p0=subprocess.Popen(e0,shell=True)
137 os.waitpid(p0.pid, 0)
139 logt=unicode(p0.communicate()[0], "UTF-8")
140 recdblist.addlog(pts,e0, "FFmpeg_mp3音声取り出しログ-コマンド")
141 recdblist.addlog(pts,logt, "FFmpeg_mp3音声取り出しログ-詳細")
144 def ts2single_fp_BonTsDemux(pts,opts):
147 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
152 ts2single_aac_BonTsDemux_Nero(pts,opts)
154 ts2single_mp3_BonTsDemux(pts,opts)
155 def ts2single_aac_BonTsDemux_Nero(pts,opts):
156 ts2singlewav(pts,opts)
157 aout=pts.replace(".ts",".aac")
158 ain=pts.replace(".ts",".wav")
159 tv2audio.wav2aac_nero(ain,aout)
160 def ts2single_mp3_BonTsDemux(pts,opts):
161 ts2singlewav(pts,opts)
162 aout=pts.replace(".ts",".mp3")
163 ain=pts.replace(".ts",".wav")
164 tv2audio.wav2mp3_lame(ain,aout)
165 def dualaudio2sep(pin, delay,opts):
169 xvfb = configreader.getpath('xvfb-run')
170 bontsdemux = configreader.getpath('bontsdemux')
171 wine = configreader.getpath('wine')
172 bonpin = "Z:\\" + pin[1:]
173 outf = os.path.splitext(pin)[0]
174 bonpout = "Z:\\" + outf[1:]
175 if re.search(",",opts):
177 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd "+vf+"-sound 1 -o \"" + bonpout + "\" -start -quit"
178 recdblist.printutf8(exe)
179 exe = xvfb + ' -a ' + exe
180 txt=commands.getoutput(exe.encode('utf-8'))
182 recdblist.addCommandLog(pin, u"BonTsDemux 第一音声取り出し", exe, txt)
185 ffpin = pin.replace(".ts", "")
186 ffpin1 = pin.replace("ts", "wav")
187 ffpin2 = pin.replace("ts", "m2v")
188 ffpout1 = ffpin + "_1.wav"
189 ffpout2 = ffpin + "_2.wav"
190 ffpout3 = ffpin + ".m2v"
191 shutil.move(ffpin1, ffpout1)
192 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd "+vf+"-sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit"
193 recdblist.printutf8(exe)
194 exe = xvfb + ' -a ' + exe
195 txt=commands.getoutput(exe.encode('utf-8'))
197 recdblist.addCommandLog(pin, u"BonTsDemux 第二音声取り出し", exe, txt)
201 shutil.move(ffpin1, ffpout2)
202 shutil.move(ffpin2, ffpout3)
203 ffpout21=ffpout1.replace(".wav",".mp3")
204 ffpout22=ffpout2.replace(".wav",".mp3")
207 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
212 ffpout21=ffpout1.replace(".wav",".aac")
213 ffpout22=ffpout2.replace(".wav",".aac")
214 tv2audio.wav2aac_nero(ffpout1, ffpout21)
215 tv2audio.wav2aac_nero(ffpout2, ffpout22)
217 tv2audio.wav2mp3_lame(ffpout1, ffpout21)
218 tv2audio.wav2mp3_lame(ffpout2, ffpout22)
222 def pentaaudio2sep(pin):
223 bontsdemux = configreader.getpath('bontsdemux')
224 wine = configreader.getpath('wine')
225 xvfb = configreader.getpath('xvfb-run')
226 bonpin = "Z:\\" + pin[1:]
227 outf = os.path.splitext(pin)[0]
228 bonpout = "Z:\\" + outf[1:]
229 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 3 -o \"" + bonpout + "\" -start -quit"
230 exe = xvfb + ' -a ' + exe
231 recdblist.printutf8(exe)
232 txt=commands.getoutput(exe.encode('utf-8'))
234 recdblist.addCommandLog(pin, u"BonTsDemux5.1ch 第一音声取り出し", exe, txt)
237 ffpin = pin.replace(".ts", "")
238 ffpin1 = pin.replace("ts", "wav")
239 ffpin2 = pin.replace("ts", "m2v")
240 ffpout1 = ffpin + "_1.wav"
241 ffpout2 = ffpin + "_2.aac"
242 shutil.move(ffpin1, ffpout1)
243 exe = "ffmpeg -i '"+pin+"' -vn -f aac -acodec copy '"+ffpout2+"'"
244 recdblist.printutf8(exe)
245 txt=commands.getoutput(exe.encode('utf-8'))
247 recdblist.addCommandLog(pin, u"FFmpeg 5.1ch 第二音声(raw AAC)取り出し", exe, txt)
250 ffpout21=ffpout1.replace(".wav",".mp3")
253 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
258 ffpout21=ffpout1.replace(".wav",".aac")
259 tv2audio.wav2aac_nero(ffpout1, ffpout21)
261 tv2audio.wav2mp3_lame(ffpout1, ffpout21)
262 if not os.path.exists(ffpout21):
263 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit"
264 exe = xvfb + ' -a ' + exe
265 recdblist.printutf8(exe)
266 txt=commands.getoutput(exe.encode('utf-8'))
268 recdblist.addCommandLog(pin, u"BonTsDemux 修正版第二音声(2chDownmix)取り出し", exe, txt)
271 shutil.move(ffpin1, ffpout1)
273 ffpout21=ffpout1.replace(".wav",".aac")
274 tv2audio.wav2aac_nero(ffpout1, ffpout21)
276 tv2audio.wav2mp3_lame(ffpout1, ffpout21)
278 ffpout21=ffpout1.replace(".wav",".aac")
279 if os.path.exists(ffpout21):
280 if os.path.getsize(ffpout21)>10*1000*1000: