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):
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)
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)
72 os.kill(p0.pid,signal.SIGKILL)
74 ts2single_mp3_ffmpeg(pts)
75 if not os.path.exists(pts.replace(".ts",".mp3")):
76 ts2single_fp_BonTsDemux(pts)
77 def ts2singlewav(pts):
78 bontsdemux = configreader.getpath('bontsdemux')
79 bonpin = "Z:\\" + pts[1:]
80 outf = os.path.splitext(pts)[0]
81 bonpout = "Z:\\" + outf[1:]
82 xvfb = configreader.getpath('xvfb-run')
83 exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit"
84 #recdblist.printutf8(exe)
85 exe = xvfb + ' -a ' + exe
86 recdblist.printutf8(exe)
87 p=subprocess.Popen(exe.encode('utf-8'),shell=True)
89 logt=unicode(p.communicate()[0], "UTF-8")
90 recdblist.addCommandLog(ots, u"BonTsDemux 音声取り出し", exe, logt)
91 def ts2single_mp3_ffmpeg(pts):
92 pmp3=pts.replace(".ts",".mp3")
93 ffmpeg=configreader.getpath("ffmpeg")
94 e0=ffmpeg+" -i \""+pts+"\" -y -vn -ab 128 \""+pmp3+"\""
95 p0=subprocess.Popen(e0,shell=True)
98 logt=unicode(p0.communicate()[0], "UTF-8")
99 recdblist.addlog(pts,e0, "FFmpeg_mp3音声取り出しログ-コマンド")
100 recdblist.addlog(pts,logt, "FFmpeg_mp3音声取り出しログ-詳細")
103 def ts2single_fp_BonTsDemux(pts):
106 if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
111 ts2single_aac_BonTsDemux_Nero(pts)
113 ts2single_mp3_BonTsDemux(pts)
114 def ts2single_aac_BonTsDemux_Nero(pts):
116 aout=pts.replace(".ts",".aac")
117 ain=pts.replace(".ts",".wav")
118 tv2audio.wav2aac_nero(ain,aout)
119 def ts2single_mp3_BonTsDemux(pts):
121 aout=pts.replace(".ts",".mp3")
122 ain=pts.replace(".ts",".wav")
123 tv2audio.wav2mp3_lame(ain,aout)