-#!/usr/bin/python
-# coding: UTF-8
-# Rec10 TS Recording Tools
-# Copyright (C) 2009-2010 Yukikaze
-import os
-import configreader
-import recdblist
-import commands
-import os.path
-import tv2audio
-import subprocess
-import signal
-import time
-def wav2aac_nero(pin,pout):
- os.environ['LANG']="ja_JP.UTF-8"
- neroaac=configreader.getpath('NeroAAC')
- exe=neroaac+" -br 128000 -2pass -if \""+pin+"\" -of \""+pout+"\""
- try:
- txt=commands.getoutput(exe.encode('utf-8'))
- recdblist.addlog(pin, exe, u"Wav2aac_Neroログ-コマンド")
- recdblist.addlog(pin, txt, u"Wav2aac_Neroログ-詳細")
- except:
- if not os.path.exists(pout):
- lame="lame"
- exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
- txt=commands.getoutput(exe.encode('utf-8'))
- recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
- recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
-def wav2mp3_lame(pin,pout):
- os.environ['LANG']="ja_JP.UTF-8"
- lame="lame"
- exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""
- try:
- txt=commands.getoutput(exe.encode('utf-8'))
- except:
- ""
- recdblist.addlog(pin, exe, u"Wav2aac_Lameログ-コマンド")
- recdblist.addlog(pin, txt, u"Wav2aac_Lameログ-詳細")
-def ts2single_audio(pts):
- paac=pts.replace(".ts",".aac")
- ffmpeg=configreader.getpath("ffmpeg")
- e0=ffmpeg+" -i \""+pts+"\" -y -vn -f aac -acodec copy \""+paac+"\""
- p0=subprocess.Popen(e0,shell=True)
- os.waitpid(p0.pid, 0)
- if p0.poll==None:#実行中
- if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
- os.kill(p0.pid,signal.SIGKILL)
- os.remove(paac)
- ts2singlewav(pts)
- useNero=0
- try:
- if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
- useNero=1
- except:
- useNero=0
- if useNero==1:
- aout=pts.replace(".ts",".aac")
- ain=pts.replace(".ts",".wav")
- tv2audio.wav2aac_nero(ain,aout)
- else:
- aout=pts.replace(".ts",".mp3")
- ain=pts.replace(".ts",".wav")
- tv2audio.wav2mp3_lame(ain,aout)
- else:
- logt=unicode(p0.communicate()[0], "UTF-8")
- recdblist.addlog(pts,e0, "FFmpeg音声取り出しログ-コマンド")
- recdblist.addlog(pts,logt, "FFmpeg音声取り出しログ-詳細")
- if os.path.exists(pts.replace(".ts",".mp3")) and os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了
- ts2singlewav(pts)
- useNero=0
- try:
- if configreader.getpath("useNeroAAC")=="1" and os.path.exists(configreader.getpath("NeroAAC")):
- useNero=1
- except:
- useNero=0
- if useNero==1:
- aout=pts.replace(".ts",".aac")
- ain=pts.replace(".ts",".wav")
- tv2audio.wav2aac_nero(ain,aout)
- else:
- aout=pts.replace(".ts",".mp3")
- ain=pts.replace(".ts",".wav")
- tv2audio.wav2mp3_lame(ain,aout)
-def ts2singlewav(pts):
- bontsdemux = configreader.getpath('bontsdemux')
- bonpin = "Z:\\" + pts[1:]
- outf = os.path.splitext(pts)[0]
- bonpout = "Z:\\" + outf[1:]
- xvfb = configreader.getpath('xvfb-run')
- exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit"
- #recdblist.printutf8(exe)
- exe = xvfb + ' -a ' + exe
- recdblist.printutf8(exe)
- p=subprocess.Popen(exe.encode('utf-8'),shell=True)
- os.waitpid(p.pid, 0)
- logt=unicode(p.communicate()[0], "UTF-8")
- recdblist.addCommandLog(ots, u"BonTsDemux 音声取り出し", exe, logt)
+#!/usr/bin/python\r
+# coding: UTF-8\r
+# Rec10 TS Recording Tools\r
+# Copyright (C) 2009-2011 Yukikaze\r
+\r
+import commands\r
+import os\r
+import re\r
+import shutil\r
+import time\r
+import os.path\r
+import subprocess\r
+import signal\r
+\r
+import configreader\r
+import recdblist\r
+\r
+def wav2aac_nero(pin,pout):\r
+ os.environ['LANG']="ja_JP.UTF-8"\r
+ neroaac=configreader.getConfPath('NeroAAC')\r
+ exe=neroaac+" -br 128000 -2pass -if \""+pin+"\" -of \""+pout+"\""\r
+ try:\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ recdblist.addLog(pin, exe, u"Wav2aac_Neroログ-コマンド")\r
+ recdblist.addLog(pin, txt, u"Wav2aac_Neroログ-詳細")\r
+ except:\r
+ if not os.path.exists(pout):\r
+ lame="lame"\r
+ exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ recdblist.addLog(pin, exe, u"Wav2aac_Lameログ-コマンド")\r
+ recdblist.addLog(pin, txt, u"Wav2aac_Lameログ-詳細")\r
+def wav2mp3_lame(pin,pout):\r
+ os.environ['LANG']="ja_JP.UTF-8"\r
+ lame=configreader.getConfPath('lame')\r
+ exe=lame+" -b 128 \""+pin+"\" \""+pout+"\""\r
+ try:\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ except:\r
+ ""\r
+ recdblist.addLog(pin, exe, u"Wav2aac_Lameログ-コマンド")\r
+ recdblist.addLog(pin, txt, u"Wav2aac_Lameログ-詳細")\r
+def ts2single_audio(pts,opts):\r
+ paac=pts.replace(".ts",".aac")\r
+ ffmpeg=configreader.getConfPath("ffmpeg")\r
+ e0=ffmpeg+" -i \""+pts+"\" -y -vn -acodec copy \""+paac+"\""\r
+ p0=subprocess.Popen(e0,shell=True)\r
+ os.waitpid(p0.pid, 0)\r
+ if p0.poll==None:#実行中\r
+ if os.path.exists(paac):\r
+ if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+ recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)\r
+ os.kill(p0.pid,signal.SIGKILL)\r
+ os.remove(paac)\r
+ ts2single_mp3_ffmpeg(pts)\r
+ if not os.path.exists(pts.replace(".ts",".mp3")):\r
+ ts2single_fp_BonTsDemux(pts,opts)\r
+ else:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")\r
+ else:\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+ recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)\r
+ try:\r
+ os.kill(p0.pid,signal.SIGKILL)\r
+ except:\r
+ ""\r
+ ts2single_mp3_ffmpeg(pts)\r
+ if not os.path.exists(pts.replace(".ts",".mp3")):\r
+ ts2single_fp_BonTsDemux(pts,opts)\r
+ else:\r
+ if os.path.exists(paac):\r
+ if os.path.getsize(paac)<1000:#1mで1kb以下の場合自動で終了\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+ recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)\r
+ os.remove(paac)\r
+ ts2single_mp3_ffmpeg(pts)\r
+ if not os.path.exists(pts.replace(".ts",".mp3")):\r
+ ts2single_fp_BonTsDemux(pts,opts)\r
+ else:\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+ else:\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+ recdblist.addCommonlogEX("[Error]", "ffmpeg aac getting. (ts2single_audio@tv2audio.py)", u"AAC demux error(ffmpeg)", "", verbose_level=200, log_level=200)\r
+ ts2single_mp3_ffmpeg(pts)\r
+ if not os.path.exists(pts.replace(".ts",".mp3")):\r
+ ts2single_fp_BonTsDemux(pts,opts)\r
+def ts2singlewav(pts,opts):\r
+ bontsdemux = configreader.getConfPath('bontsdemux')\r
+ bonpin = "Z:\\" + pts[1:]\r
+ outf = os.path.splitext(pts)[0]\r
+ bonpout = "Z:\\" + outf[1:]\r
+ delayt=""\r
+ exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" "+delayt+" -nd -sound 0 -o \"" + bonpout + "\""\r
+ #recdblist.printutf8(exe)\r
+ recdblist.printutf8(exe)\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ recdblist.addCommandLog(pts, u"BonTsDemux 音声取り出し", exe, txt)\r
+def ts2single_mp3_ffmpeg(pts):\r
+ pmp3=pts.replace(".ts",".mp3")\r
+ ffmpeg=configreader.getConfPath("ffmpeg")\r
+ e0=ffmpeg+" -i \""+pts+"\" -y -vn -ab 128k \""+pmp3+"\""\r
+ p0=subprocess.Popen(e0,shell=True)\r
+ os.waitpid(p0.pid, 0)\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg_mp3音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg_mp3音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+def ts2single_aac_ffmpeg(pts):\r
+ ts2singlewav(pts,opts)\r
+ aout=pts.replace(".ts",".aac")\r
+ ain=pts.replace(".ts",".wav")\r
+ wav2aac_ffmpeg(ain,aout)\r
+def wav2aac_ffmpeg(pin,pout):\r
+ paac=pts.replace(".ts",".aac")\r
+ ffmpeg=configreader.getConfPath("ffmpeg")\r
+ e0=ffmpeg+" -i \""+pin+"\" -y \""+pout+"\""\r
+ p0=subprocess.Popen(e0,shell=True)\r
+ os.waitpid(p0.pid, 0)\r
+ try:\r
+ logt=unicode(p0.communicate()[0], "UTF-8")\r
+ recdblist.addLog(pts,e0, "FFmpeg_wav2aac音声取り出しログ-コマンド")\r
+ recdblist.addLog(pts,logt, "FFmpeg_wav2aac音声取り出しログ-詳細")\r
+ except:\r
+ ""\r
+def ts2single_fp_BonTsDemux(pts,opts):\r
+ useNero=0\r
+ try:\r
+ if configreader.getConfPath("useNeroAAC")=="1" and os.path.exists(configreader.getConfPath("NeroAAC")):\r
+ useNero=1\r
+ except:\r
+ useNero=0\r
+ if useNero==1:\r
+ ts2single_aac_BonTsDemux_Nero(pts,opts)\r
+ else:\r
+ ts2single_aac_ffmpeg(pts)\r
+ if not os.path.exists(pts.replace(".ts",".aac")):\r
+ ts2single_mp3_BonTsDemux(pts,opts)\r
+def ts2single_aac_BonTsDemux_Nero(pts,opts):\r
+ ts2singlewav(pts,opts)\r
+ aout=pts.replace(".ts",".aac")\r
+ ain=pts.replace(".ts",".wav")\r
+ wav2aac_nero(ain,aout)\r
+def ts2single_mp3_BonTsDemux(pts,opts):\r
+ ts2singlewav(pts,opts)\r
+ aout=pts.replace(".ts",".mp3")\r
+ ain=pts.replace(".ts",".wav")\r
+ wav2mp3_lame(ain,aout)\r
+def ts2dualaudio_BonTsDemux(pin, delay,opts):\r
+ """\r
+ delay is string\r
+ """\r
+ bontsdemux = configreader.getConfPath('bontsdemux')\r
+ wine = configreader.getConfPath('wine')\r
+ bonpin = "Z:\\" + pin[1:]\r
+ outf = os.path.splitext(pin)[0]\r
+ bonpout = "Z:\\" + outf[1:]\r
+ exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 1 -o \"" + bonpout + "\""\r
+ recdblist.printutf8(exe)\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ try:\r
+ recdblist.addCommandLog(pin, u"BonTsDemux 第一音声取り出し", exe, txt)\r
+ except:\r
+ ""\r
+ ffpin = pin.replace(".ts", "")\r
+ ffpin1 = pin.replace("ts", "wav")\r
+ ffpin2 = pin.replace("ts", "m2v")\r
+ ffpout1 = ffpin + "_1.wav"\r
+ ffpout2 = ffpin + "_2.wav"\r
+ ffpout3 = ffpin + ".m2v"\r
+ shutil.move(ffpin1, ffpout1)\r
+ exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\""\r
+ recdblist.printutf8(exe)\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ try:\r
+ recdblist.addCommandLog(pin, u"BonTsDemux 第二音声取り出し", exe, txt)\r
+ except:\r
+ ""\r
+ #os.system(exe)\r
+ shutil.move(ffpin1, ffpout2)\r
+ shutil.move(ffpin2, ffpout3)\r
+ ffpout21=ffpout1.replace(".wav",".mp3")\r
+ ffpout22=ffpout2.replace(".wav",".mp3")\r
+ useNero=0\r
+ try:\r
+ if os.path.exists(configreader.getConfPath("NeroAAC")):\r
+ useNero=1\r
+ except:\r
+ useNero=0\r
+ if useNero==1:\r
+ ffpout21=ffpout1.replace(".wav",".aac")\r
+ ffpout22=ffpout2.replace(".wav",".aac")\r
+ wav2aac_nero(ffpout1, ffpout21)\r
+ wav2aac_nero(ffpout2, ffpout22)\r
+ else:\r
+ wav2mp3_lame(ffpout1, ffpout21)\r
+ wav2mp3_lame(ffpout2, ffpout22)\r
+ time.sleep(3)\r
+ os.remove(ffpout1)\r
+ os.remove(ffpout2)\r
+def ts2pentaaudio_BonTsDemux(pin, delay,opts):\r
+ bontsdemux = configreader.getConfPath('bontsdemux')\r
+ wine = configreader.getConfPath('wine')\r
+ bonpin = "Z:\\" + pin[1:]\r
+ outf = os.path.splitext(pin)[0]\r
+ bonpout = "Z:\\" + outf[1:]\r
+ exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 3 -o \"" + bonpout + "\""\r
+ recdblist.printutf8(exe)\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ try:\r
+ recdblist.addCommandLog(pin, u"BonTsDemux5.1ch 第一音声取り出し", exe, txt)\r
+ except:\r
+ ""\r
+ ffpin = pin.replace(".ts", "")\r
+ ffpin1 = pin.replace("ts", "wav")\r
+ ffpin2 = pin.replace("ts", "m2v")\r
+ ffpout1 = ffpin + "_1.wav"\r
+ ffpout2 = ffpin + "_2.aac"\r
+ shutil.move(ffpin1, ffpout1)\r
+ exe = "ffmpeg -i '"+pin+"' -vn -f aac -acodec copy '"+ffpout2+"'"\r
+ recdblist.printutf8(exe)\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ try:\r
+ recdblist.addCommandLog(pin, u"FFmpeg 5.1ch 第二音声(raw AAC)取り出し", exe, txt)\r
+ except:\r
+ ""\r
+ ffpout21=ffpout1.replace(".wav",".mp3")\r
+ useNero=0\r
+ try:\r
+ if os.path.exists(configreader.getConfPath("NeroAAC")):\r
+ useNero=1\r
+ except:\r
+ useNero=0\r
+ if useNero==1:\r
+ ffpout21=ffpout1.replace(".wav",".aac")\r
+ wav2aac_nero(ffpout1, ffpout21)\r
+ else:\r
+ wav2mp3_lame(ffpout1, ffpout21)\r
+ if not os.path.exists(ffpout21):\r
+ exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 0 -o \"" + bonpout + "\""\r
+ recdblist.printutf8(exe)\r
+ txt=commands.getoutput(exe.encode('utf-8'))\r
+ try:\r
+ recdblist.addCommandLog(pin, u"BonTsDemux 修正版第二音声(2chDownmix)取り出し", exe, txt)\r
+ except:\r
+ ""\r
+ shutil.move(ffpin1, ffpout1)\r
+ if useNero==1:\r
+ ffpout21=ffpout1.replace(".wav",".aac")\r
+ wav2aac_nero(ffpout1, ffpout21)\r
+ else:\r
+ wav2mp3_lame(ffpout1, ffpout21)\r
+ time.sleep(3)\r
+ ffpout21=ffpout1.replace(".wav",".aac")\r
+ if os.path.exists(ffpout21):\r
+ if os.path.getsize(ffpout21)>10*1000*1000:\r
+ os.remove(ffpout1)\r