X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Ftv2avi.py;h=82357b4d525fbe65eb6e80512beb111f83ed6000;hb=c363a10d99acf08f3a298919ffd20c5f4660b666;hp=e882d800c08c5337fd807aced15676ab6873eaf6;hpb=7d91bcf3f7e89e9b5559a539da3c7fb65dfd73a3;p=rec10%2Frec10-git.git diff --git a/rec10/trunk/src/tv2avi.py b/rec10/trunk/src/tv2avi.py index e882d80..82357b4 100644 --- a/rec10/trunk/src/tv2avi.py +++ b/rec10/trunk/src/tv2avi.py @@ -1,328 +1,105 @@ -#!/usr/bin/python -# coding: UTF-8 -# Rec10 TS Recording Tools -# Copyright (C) 2009 Yukikaze -import commands -import datetime -import os -import re -import shutil -import time - -import chdb -import configreader -import status -import ts2x264 -import ts2xvid -import tv2ts -global Bitrate_SD -global Bitrate_HD -global Bitrate_FHD -global Bitrate_Short -global Bitrate_LowHD -Bitrate_SD = "1250" -Bitrate_HD = "3750" -Bitrate_LowHD = "2500" -Bitrate_FHD = "5000" -Bitrate_Short = "1250" -#Bitrate_Tall = "2500" -#Bitrate_Grande = "3750" -#Bitrate_Venti = "5000" -def timetv2b25(pout, chtxt, btime, etime, opt): - """ - poutはタイトル - """ - bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S") - et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S") - extt = os.path.splitext(pout) - tsout = extt[0] - tnow = datetime.datetime.now() - wt = bt-tnow - waitt = wt.seconds-5 - time.sleep(waitt) - tnow = datetime.datetime.now() - dt = et-tnow - rectime = dt.seconds-10 - rectime = str(rectime) - tv2ts.tv2b25ts(tsout + ".ts.b25", chdb.chtxtsearch(chtxt)['ch'], rectime) -def b252ts(pout, chtxt, btime, etime, opt): - """ - poutはタイトル(自動的にtitle.b25 title.tsと名前がつきます。) - """ - #status.setB25Decoding(status.getB25Decoding() + 1) - status.changeB25Decoding(1) - try: - tv2ts.b252ts(pout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch']) - tsout = pout - aviin = pout + ".ts" - dualaudio = 0 - pentaaudio = 0 - if re.search("5", opt): - pentaaudio = 1 - if re.search("d", opt): - dualaudio = 1 - if re.search("\[二\]", pout): - dualaudio = 1 - elif re.search('(二)', pout): - dualaudio = 1 - elif re.search('\(二\)', pout): - dualaudio = 1 - if opt == "": - opts = "" - if chdb.chtxtsearch(chtxt)['bctype'] == 'cs': - opts = opts + "S2" - if chtxt == "disch": - "" - elif chtxt == "hisch": - "" - else: - opts = opts + "a" - else: - opts = opts + "Ha2" - else: - opts = opt - if dualaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - if pentaaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - except: - "" - #status.setB25Decoding(status.getB25Decoding()-1) - status.changeB25Decoding(-1) -def timetv2avi(pout, chtxt, btime, etime, opt): - bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S") - et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S") - extt = os.path.splitext(pout) - tsout = extt[0] - tnow = datetime.datetime.now() - wt = bt-tnow - waitt = wt.seconds-5 - time.sleep(waitt) - tnow = datetime.datetime.now() - dt = et-tnow - rectime = dt.seconds-10 - rectime = str(rectime) - #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+rectime - tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], rectime) - aviin = tsout + ".ts" - dualaudio = 0 - pentaaudio = 0 - if re.search("5", opt): - pentaaudio = 1 - if re.search("d", opt): - dualaudio = 1 - if re.search("\[二\]", pout): - dualaudio = 1 - elif re.search('(二)', pout): - dualaudio = 1 - elif re.search('\(二\)', pout): - dualaudio = 1 - if opt == "": - opts = "" - if chdb.chtxtsearch(chtxt)['bctype'] == 'cs': - opts = opts + "S2" - if chtxt == "disch": - "" - elif chtxt == "hisch": - "" - else: - opts = opts + "a" - else: - opts = opts + "Ha2" - else: - opts = opt - if dualaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - if pentaaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" -def ts2avi(pin, pout, opt): - status.changeEncoding(1) - #status.setEncoding(status.getEncoding() + 1) - if re.search("x", opt): - try: - ts2xvid.ts2xvid(pin, pout, opt) - except: - "" - else: - try: - ts2x264.ts2x264(pin, pout, opt) - except: - "" - status.changeEncoding(-1) - #status.setEncoding(status.getEncoding()-1) -def tv2avi(pout, chtxt, btime, etime, opt): - bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S") - et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S") - dt = et-bt - time = dt.seconds-10 - time = str(time) - extt = os.path.splitext(pout) - tsout = extt[0] - tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], time) - aviin = tsout + ".ts" - dualaudio = 0 - pentaaudio = 0 - if re.search("5", opt): - pentaaudio = 1 - if re.search("d", opt): - dualaudio = 1 - if re.search('\[二\]', pout): - dualaudio = 1 - elif re.search('(二)', pout): - dualaudio = 1 - elif re.search('\(二\)', pout): - dualaudio = 1 - opts = "" - if chdb.chtxtsearch(chtxt)['bctype'] == 'cs': - opts = opts + "S2" - if chtxt == "disch": - "" - elif chtxt == "hisch": - "" - else: - opts = opts + "a" - else: - opts = opts + "Ha2" - if dualaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - if pentaaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - ts2x264.ts2x264(aviin, pout, opts) - #os.remove(aviin) -def b252avi(pout, chtxt, opt): - extt = os.path.splitext(pout) - tsout = extt[0] - tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch']) - aviin = tsout + ".ts" - dualaudio = 0 - pentaaudio = 0 - if re.search("5", opt): - pentaaudio = 1 - if re.search("d", opt): - dualaudio = 1 - if re.search('\[二\]', pout): - dualaudio = 1 - elif re.search('(二)', pout): - dualaudio = 1 - elif re.search('\(二\)', pout): - dualaudio = 1 - if opt == "": - opts = "" - if chdb.chtxtsearch(chtxt)['bctype'] == 'cs': - opts = opts + "S2" - if chtxt == "disch": - "" - elif chtxt == "hisch": - "" - else: - opts = opts + "a" - else: - opts = opts + "Ha2" - else: - opts = opt - if re.search("x", opt): - makexvid = 0 - else: - makexvid = 1 - if dualaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - if pentaaudio == 1: - dualaudiots2avi(aviin, tsout + ".sa.avi") - aviin = tsout + ".sa.avi" - if makexvid == 1: - ts2xvid.ts2xvid(aviin, pout, opts) - else: - ts2x264.ts2x264(aviin, pout, opts) -def dualaudiots2avi(pin, pout): - bontsdemux = configreader.getpath('bontsdemux') - bonpin = "Z:\\" + pin[1:] - outf = os.path.splitext(pin)[0] - bonpout = "Z:\\" + outf[1:] - xvfb = configreader.getpath('xvfb-run') - exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit" - #print exe - exe = xvfb + ' -a ' + exe - print exe - os.system(exe) - ffpin1 = pin.replace("ts", "wav") - ffpin2 = pin.replace("ts", "m2v") - exe = "ffmpeg -y -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi \'" + pout + "\'" - #print exe - #commands.getoutput(exe) - os.system(exe) - os.remove(ffpin1) - os.remove(ffpin2) -def dualaudio2sep(pin, pout, delay): - """ - delay is string - """ - bontsdemux = configreader.getpath('bontsdemux') - wine = configreader.getpath('wine') - xvfb = configreader.getpath('xvfb-run') - bonpin = "Z:\\" + pin[1:] - outf = os.path.splitext(pin)[0] - bonpout = "Z:\\" + outf[1:] - exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 1 -o \"" + bonpout + "\" -start -quit" - #print exe - exe = xvfb + ' -a ' + exe - print exe - commands.getoutput(exe) - ffpin = pin.replace(".ts", "") - ffpin1 = pin.replace("ts", "wav") - ffpin2 = pin.replace("ts", "m2v") - ffpout1 = ffpin + "1_delay" + delay + ".wav" - ffpout2 = ffpin + "2_delay" + delay + ".wav" - ffpout3 = ffpin + "_delay" + delay + ".m2v" - shutil.move(ffpin1, ffpout1) - exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit" - exe = xvfb + ' -a ' + exe - print exe - commands.getoutput(exe) - #os.system(exe) - shutil.move(ffpin1, ffpout2) - shutil.move(ffpin2, ffpout3) - #ffpout21=ffpout1.replace(".wav",".ogg") - #ffpout22=ffpout2.replace(".wav",".ogg") - #aexe1="ffmpeg -i "+ffpout1+" -vn -acodec vorbis -ar 48000 -ab 128k "+ffpout21 - #aexe2="ffmpeg -i "+ffpout2+" -vn -acodec vorbis -ar 48000 -ab 128k "+ffpout22 - aexe = "ffmpeg -i \"" + ffpout3 + "\" -i \"" + ffpout1 + "\" -i \"" + ffpout2 + "\" -r 29.97 -vsync 200 -vcodec copy -acodec copy -f avi " + pout + " -acodec copy -newaudio" - print aexe - #os.system(aexe1) - #os.system(aexe2) - commands.getoutput(aexe) - #exe = "ffmpeg -y -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi \'" + pout + "\'" - #print exe - - #os.remove(ffpin1) - #os.remove(ffpin2) - -def pentaaudiots2avi(pin, pout): - bontsdemux = configreader.getpath('bontsdemux') - bonpin = "Z:\\" + pin[1:] - xvfb = configreader.getpath('xvfb-run') - outf = os.path.splitext(pin)[0] - bonpout = "Z:\\" + outf[1:] - exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 3 -o \"" + bonpout + "\" -start -quit" - #print exe - exe = xvfb + ' -a ' + exe - #exe = 'xvfb-run -a ' + exe - #exe='export Display=:2&&'+exe - print exe - commands.getoutput(exe) - #os.system(exe) - ffpin1 = pin.replace("ts", "wav") - ffpin2 = pin.replace("ts", "m2v") - exe = "ffmpeg -y -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi \'" + pout + "\'" - print exe - commands.getoutput(exe) - #os.system(exe) - os.remove(ffpin1) - os.remove(ffpin2) - +#!/usr/bin/python +# coding: UTF-8 +# Rec10 TS Recording Tools +# Copyright (C) 2009-2010 Yukikaze +import commands +import datetime +import os +import re +import shutil +import time +import os.path +import traceback + +import chdb +import configreader +import status +import ts2x264 +import tv2ts +import recdblist +import tv2audio + + +global Bitrate_SD +global Bitrate_HD +global Bitrate_FHD +global Bitrate_Short +global Bitrate_LowHD +Bitrate_SD = 1250 +Bitrate_HD = 3750 +Bitrate_LowHD = 2500 +Bitrate_FHD = 5000 +Bitrate_Short = 1250 +def timetv2b25(pout, chtxt, btime, etime, opt): + """ + poutはタイトル + """ + bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S") + et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S") + extt = os.path.splitext(pout) + tsout = extt[0] + tnow = datetime.datetime.now() + wt = bt-tnow + waitt = wt.seconds + if waitt>0: + time.sleep(waitt) + tnow = datetime.datetime.now() + dt = et-tnow + rectime = dt.seconds-5 + rectime = str(rectime) + tv2ts.tv2b25ts(tsout + ".ts.b25", chdb.searchCHFromChtxt(chtxt)['ch'], rectime) +def b252ts(pout, chtxt, btime, etime, opt): + """ + poutはタイトル(自動的にtitle.b25 title.tsと名前がつきます。) + """ + #status.setB25Decoding(status.getB25Decoding() + 1) + status.changeB25Decoding(1) + try: + try: + ch=chtxt.split("_")[0] + csch=chtxt.split("_")[1] + except: + ch=0 + csch=0 + tv2ts.b252ts(pout + ".ts", ch, csch) + tsout = pout + aviin = pout + ".ts" + dualaudio = 0 + pentaaudio = 0 + singleaudiosplit = 0 + if re.search("5", opt): + pentaaudio = 1 + if re.search("d", opt): + dualaudio = 1 + if re.search(u"\[二\]", pout): + dualaudio = 1 + elif re.search(u'(二)', pout): + dualaudio = 1 + elif re.search(u'\(二\)', pout): + dualaudio = 1 + if dualaudio == 1: + tv2audio.ts2dualaudio_BonTsDemux(aviin, recdblist.BONTSDEMUX_DELAY, opt) + if pentaaudio == 1: + tv2audio.ts2pentaaudio_BonTsDemux(aviin, recdblist.BONTSDEMUX_DELAY, opt) + except Exception, inst: + recdblist.addCommonlogEX("Error", "b252ts(tv2avi.py)", str(type(inst))+traceback.format_exc(), str(inst)) + status.changeB25Decoding(-1) +def ts2avi(pin, pout, opt): + status.changeEncoding(1) + try: + ts2x264.ts2x264(pin, pout, opt) + except Exception, inst: + recdblist.printutf8("error occures in tv2avi.py ts2avi") + recdblist.printutf8(str(type(inst))) + recdblist.printutf8(str(inst)+traceback.format_exc()) + status.changeEncoding(-1) +def ts2raw(pin, pout, opt): + status.changeEncoding(1) + try: + ts2x264.ts2x264(pin, pout, opt) + except Exception, inst: + recdblist.printutf8("error occures in tv2avi.py ts2raw") + recdblist.printutf8(str(type(inst))) + recdblist.printutf8(str(inst)+traceback.format_exc()) + status.changeEncoding(-1) +