X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Ftv2avi.py;h=82357b4d525fbe65eb6e80512beb111f83ed6000;hb=c363a10d99acf08f3a298919ffd20c5f4660b666;hp=f84e1a06f8985f7b45f6447a6ba5f5c36b80d44a;hpb=9129bb4b0208a78c82ee0ebfcea2789fa5b720cf;p=rec10%2Frec10-git.git diff --git a/rec10/trunk/src/tv2avi.py b/rec10/trunk/src/tv2avi.py index f84e1a0..82357b4 100644 --- a/rec10/trunk/src/tv2avi.py +++ b/rec10/trunk/src/tv2avi.py @@ -1,256 +1,105 @@ -#!/usr/bin/python -# coding: UTF-8 -# Rec10 TS Recording Tools -# Copyright (C) 2009 Yukikaze -import shutil -import time -import chdb -import configreader -import datetime -import os -import re -import ts2x264 -import ts2xvid -import tv2ts -import recdb - -global Bitrate_HD -global Bitrate_FHD -global Bitrate_SD -global Bitrate_WQVGA -Bitrate_HD="2000" -Bitrate_FHD="2500" -Bitrate_SD="1250" -Bitrate_WQVGA="200" - -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] - #tsout=pout#### - #print "4"+tsout - 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 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" - bt=datetime.datetime.now()+datetime.timedelta(seconds=600) - btime=bt.strftime("%Y-%m-%d %H:%M:%S") - et=datetime.datetime.now()+datetime.timedelta(seconds=600) - etime=et.strftime("%Y-%m-%d %H:%M:%S") - title=os.path.split(tsout)[1] - #try: - # os.remove(aviin) - #except: - # "" -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) - #try: - # os.remove(aviin) - #except: - # "" - -def dualaudiots2avi(pin, pout): - bontsdemux = configreader.getpath('bontsdemux') - wine = configreader.getpath('wine') - cmdwine = configreader.getpath('cmdwine') - bonpin = "Z:\\" + pin[1:] - outf = os.path.splitext(pin)[0] - bonpout = "Z:\\" + outf[1:] - exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit" - #print exe - exe = 'xvfb-run -a ' + exe - #exe='export Display=:2&&'+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 - os.system(exe) - os.remove(ffpin1) - os.remove(ffpin2) -def dualaudio2sep(pin,pout,delay): - bontsdemux = configreader.getpath('bontsdemux') - wine = configreader.getpath('wine') - cmdwine = configreader.getpath('cmdwine') - 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-run -a ' + exe - #exe='export Display=:2&&'+exe - print exe - os.system(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" - shutil.move(ffpin1, ffpout1) - exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit" - exe = 'xvfb-run -a ' + exe - os.system(exe) - shutil.move(ffpin1, ffpout2) - 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 - os.system(aexe1) - os.system(aexe2) - - #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') - wine = configreader.getpath('wine') - cmdwine = configreader.getpath('cmdwine') - bonpin = "Z:\\" + pin[1:] - 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-run -a ' + exe - #exe='export Display=:2&&'+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 - 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) +