3 # Rec10 TS Recording Tools
\r
4 # Copyright (C) 2009-2011 Yukikaze
\r
18 def wav2aac_nero(pin,pout):
\r
19 os.environ['LANG']="ja_JP.UTF-8"
\r
20 neroaac=configreader.getConfPath('NeroAAC')
\r
21 exe=neroaac+" -br 128000 -2pass -if \""+pin+"\" -of \""+pout+"\""
\r
23 txt=commands.getoutput(exe.encode('utf-8'))
\r
24 recdblist.addLog(pin, exe, u"Wav2aac_Neroログ-コマンド")
\r
25 recdblist.addLog(pin, txt, u"Wav2aac_Neroログ-詳細")
\r
27 if not os.path.exists(pout):
\r
29 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
\r
30 txt=commands.getoutput(exe.encode('utf-8'))
\r
31 recdblist.addLog(pin, exe, u"Wav2aac_Lameログ-コマンド")
\r
32 recdblist.addLog(pin, txt, u"Wav2aac_Lameログ-詳細")
\r
33 def wav2mp3_lame(pin,pout):
\r
34 os.environ['LANG']="ja_JP.UTF-8"
\r
35 lame=configreader.getConfPath('lame')
\r
36 exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
\r
38 txt=commands.getoutput(exe.encode('utf-8'))
\r
41 recdblist.addLog(pin, exe, u"Wav2aac_Lameログ-コマンド")
\r
42 recdblist.addLog(pin, txt, u"Wav2aac_Lameログ-詳細")
\r
43 def ts2single_audio(pts,opts):
\r
44 paac=pts.replace(".ts",".aac")
\r
45 ffmpeg=configreader.getConfPath("ffmpeg")
\r
46 e0=ffmpeg+" -i \""+pts+"\" -y -vn -acodec copy \""+paac+"\""
\r
47 p0=subprocess.Popen(e0,shell=True)
\r
48 os.waitpid(p0.pid, 0)
\r
49 if p0.poll==None:#実行中
\r
50 if os.path.exists(paac):
\r
51 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
\r
53 logt=unicode(p0.communicate()[0], "UTF-8")
\r
54 recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
\r
55 recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")
\r
58 recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
\r
59 os.kill(p0.pid,signal.SIGKILL)
\r
61 ts2single_mp3_ffmpeg(pts)
\r
62 if not os.path.exists(pts.replace(".ts",".mp3")):
\r
63 ts2single_fp_BonTsDemux(pts,opts)
\r
65 logt=unicode(p0.communicate()[0], "UTF-8")
\r
66 recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
\r
67 recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")
\r
70 logt=unicode(p0.communicate()[0], "UTF-8")
\r
71 recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
\r
72 recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")
\r
75 recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
\r
77 os.kill(p0.pid,signal.SIGKILL)
\r
80 ts2single_mp3_ffmpeg(pts)
\r
81 if not os.path.exists(pts.replace(".ts",".mp3")):
\r
82 ts2single_fp_BonTsDemux(pts,opts)
\r
84 if os.path.exists(paac):
\r
85 if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
\r
87 logt=unicode(p0.communicate()[0], "UTF-8")
\r
88 recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
\r
89 recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")
\r
92 recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
\r
94 ts2single_mp3_ffmpeg(pts)
\r
95 if not os.path.exists(pts.replace(".ts",".mp3")):
\r
96 ts2single_fp_BonTsDemux(pts,opts)
\r
99 logt=unicode(p0.communicate()[0], "UTF-8")
\r
100 recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
\r
101 recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")
\r
106 logt=unicode(p0.communicate()[0], "UTF-8")
\r
107 recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
\r
108 recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")
\r
111 recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)
\r
112 ts2single_mp3_ffmpeg(pts)
\r
113 if not os.path.exists(pts.replace(".ts",".mp3")):
\r
114 ts2single_fp_BonTsDemux(pts,opts)
\r
115 def ts2singlewav(pts,opts):
\r
116 bontsdemux = configreader.getConfPath('bontsdemux')
\r
117 bonpin = "Z:\\" + pts[1:]
\r
118 outf = os.path.splitext(pts)[0]
\r
119 bonpout = "Z:\\" + outf[1:]
\r
121 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" "+delayt+" -nd -sound 0 -o \"" + bonpout + "\""
\r
122 #recdblist.printutf8(exe)
\r
123 recdblist.printutf8(exe)
\r
124 p=subprocess.Popen(exe.encode('utf-8'),shell=True)
\r
125 os.waitpid(p.pid, 0)
\r
126 logt=unicode(p.communicate()[0], "UTF-8")
\r
127 recdblist.addCommandLog(ots, u"BonTsDemux 音声取り出し", exe, logt)
\r
128 def ts2single_mp3_ffmpeg(pts):
\r
129 pmp3=pts.replace(".ts",".mp3")
\r
130 ffmpeg=configreader.getConfPath("ffmpeg")
\r
131 e0=ffmpeg+" -i \""+pts+"\" -y -vn -ab 128k \""+pmp3+"\""
\r
132 p0=subprocess.Popen(e0,shell=True)
\r
133 os.waitpid(p0.pid, 0)
\r
135 logt=unicode(p0.communicate()[0], "UTF-8")
\r
136 recdblist.addLog(pts,e0, "FFmpeg_mp3音声取り出しログ-コマンド")
\r
137 recdblist.addLog(pts,logt, "FFmpeg_mp3音声取り出しログ-詳細")
\r
140 def ts2single_fp_BonTsDemux(pts,opts):
\r
143 if configreader.getConfPath("useNeroAAC")=="1" and os.path.exists(configreader.getConfPath("NeroAAC")):
\r
148 ts2single_aac_BonTsDemux_Nero(pts,opts)
\r
150 ts2single_mp3_BonTsDemux(pts,opts)
\r
151 def ts2single_aac_BonTsDemux_Nero(pts,opts):
\r
152 ts2singlewav(pts,opts)
\r
153 aout=pts.replace(".ts",".aac")
\r
154 ain=pts.replace(".ts",".wav")
\r
155 wav2aac_nero(ain,aout)
\r
156 def ts2single_mp3_BonTsDemux(pts,opts):
\r
157 ts2singlewav(pts,opts)
\r
158 aout=pts.replace(".ts",".mp3")
\r
159 ain=pts.replace(".ts",".wav")
\r
160 wav2mp3_lame(ain,aout)
\r
161 def ts2dualaudio_BonTsDemux(pin, delay,opts):
\r
165 bontsdemux = configreader.getConfPath('bontsdemux')
\r
166 wine = configreader.getConfPath('wine')
\r
167 bonpin = "Z:\\" + pin[1:]
\r
168 outf = os.path.splitext(pin)[0]
\r
169 bonpout = "Z:\\" + outf[1:]
\r
170 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 1 -o \"" + bonpout + "\""
\r
171 recdblist.printutf8(exe)
\r
172 txt=commands.getoutput(exe.encode('utf-8'))
\r
174 recdblist.addCommandLog(pin, u"BonTsDemux 第一音声取り出し", exe, txt)
\r
177 ffpin = pin.replace(".ts", "")
\r
178 ffpin1 = pin.replace("ts", "wav")
\r
179 ffpin2 = pin.replace("ts", "m2v")
\r
180 ffpout1 = ffpin + "_1.wav"
\r
181 ffpout2 = ffpin + "_2.wav"
\r
182 ffpout3 = ffpin + ".m2v"
\r
183 shutil.move(ffpin1, ffpout1)
\r
184 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\""
\r
185 recdblist.printutf8(exe)
\r
186 txt=commands.getoutput(exe.encode('utf-8'))
\r
188 recdblist.addCommandLog(pin, u"BonTsDemux 第二音声取り出し", exe, txt)
\r
192 shutil.move(ffpin1, ffpout2)
\r
193 shutil.move(ffpin2, ffpout3)
\r
194 ffpout21=ffpout1.replace(".wav",".mp3")
\r
195 ffpout22=ffpout2.replace(".wav",".mp3")
\r
198 if os.path.exists(configreader.getConfPath("NeroAAC")):
\r
203 ffpout21=ffpout1.replace(".wav",".aac")
\r
204 ffpout22=ffpout2.replace(".wav",".aac")
\r
205 wav2aac_nero(ffpout1, ffpout21)
\r
206 wav2aac_nero(ffpout2, ffpout22)
\r
208 wav2mp3_lame(ffpout1, ffpout21)
\r
209 wav2mp3_lame(ffpout2, ffpout22)
\r
213 def ts2pentaaudio_BonTsDemux(pin, delay,opts):
\r
214 bontsdemux = configreader.getConfPath('bontsdemux')
\r
215 wine = configreader.getConfPath('wine')
\r
216 bonpin = "Z:\\" + pin[1:]
\r
217 outf = os.path.splitext(pin)[0]
\r
218 bonpout = "Z:\\" + outf[1:]
\r
219 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 3 -o \"" + bonpout + "\""
\r
220 recdblist.printutf8(exe)
\r
221 txt=commands.getoutput(exe.encode('utf-8'))
\r
223 recdblist.addCommandLog(pin, u"BonTsDemux5.1ch 第一音声取り出し", exe, txt)
\r
226 ffpin = pin.replace(".ts", "")
\r
227 ffpin1 = pin.replace("ts", "wav")
\r
228 ffpin2 = pin.replace("ts", "m2v")
\r
229 ffpout1 = ffpin + "_1.wav"
\r
230 ffpout2 = ffpin + "_2.aac"
\r
231 shutil.move(ffpin1, ffpout1)
\r
232 exe = "ffmpeg -i '"+pin+"' -vn -f aac -acodec copy '"+ffpout2+"'"
\r
233 recdblist.printutf8(exe)
\r
234 txt=commands.getoutput(exe.encode('utf-8'))
\r
236 recdblist.addCommandLog(pin, u"FFmpeg 5.1ch 第二音声(raw AAC)取り出し", exe, txt)
\r
239 ffpout21=ffpout1.replace(".wav",".mp3")
\r
242 if os.path.exists(configreader.getConfPath("NeroAAC")):
\r
247 ffpout21=ffpout1.replace(".wav",".aac")
\r
248 wav2aac_nero(ffpout1, ffpout21)
\r
250 wav2mp3_lame(ffpout1, ffpout21)
\r
251 if not os.path.exists(ffpout21):
\r
252 exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 0 -o \"" + bonpout + "\""
\r
253 recdblist.printutf8(exe)
\r
254 txt=commands.getoutput(exe.encode('utf-8'))
\r
256 recdblist.addCommandLog(pin, u"BonTsDemux 修正版第二音声(2chDownmix)取り出し", exe, txt)
\r
259 shutil.move(ffpin1, ffpout1)
\r
261 ffpout21=ffpout1.replace(".wav",".aac")
\r
262 wav2aac_nero(ffpout1, ffpout21)
\r
264 wav2mp3_lame(ffpout1, ffpout21)
\r
266 ffpout21=ffpout1.replace(".wav",".aac")
\r
267 if os.path.exists(ffpout21):
\r
268 if os.path.getsize(ffpout21)>10*1000*1000:
\r