From 63fa40041d126ad2efd280ad16ac28d8788a1011 Mon Sep 17 00:00:00 2001 From: gn64_jp Date: Tue, 22 Dec 2009 14:56:31 +0000 Subject: [PATCH] add caption. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@344 4e526526-5e11-4fc0-8910-f8fd03428081 --- rec10/trunk/src/rec10.conf | 9 ++--- rec10/trunk/src/tv2mkv.py | 84 ++++++++++++++++++++++++++-------------------- rec10/trunk/src/tv2mp4.py | 33 +++++++++--------- 3 files changed, 69 insertions(+), 57 deletions(-) diff --git a/rec10/trunk/src/rec10.conf b/rec10/trunk/src/rec10.conf index 71c5f9d..3b5f28b 100644 --- a/rec10/trunk/src/rec10.conf +++ b/rec10/trunk/src/rec10.conf @@ -17,10 +17,11 @@ move_destpath = #一時キャッシュに使用するフォルダです。 指定しない場合rec10本体と同じフォルダが使われます。 tmp = epgdump = /usr/local/bin/epgdump -tssplitter = /usr/bin/java -jar /etc/rec10/tstools/jTsSplitter/jTsSplitter.jar -bontsdemux = /usr/local/share/rec10/tstools/BonTsDemux/BonTsDemux.exe -cfr2tc = /usr/local/share/tstools/cfr2tc.exe -DtsEdit = /usr/local/share/tstools/DtsEdit.exe +tssplitter = /usr/bin/java -jar /etc/rec10/tstools/jTsSplitter.jar +bontsdemux = /usr/local/share/rec10/tstools/BonTsDemux.exe +Caption2Ass = /usr/local/share/rec10/tstools/Caption2Ass.exe +cfr2tc = /usr/local/share/rec10/tstools/cfr2tc.exe +DtsEdit = /usr/local/share/rec10/tstools/DtsEdit.exe MP4Box = /usr/bin/MP4Box mkvmerge = /usr/bin/mkvmerge mkvextract = /usr/bin/mkvextract diff --git a/rec10/trunk/src/tv2mkv.py b/rec10/trunk/src/tv2mkv.py index b3cb80a..a9aaa04 100644 --- a/rec10/trunk/src/tv2mkv.py +++ b/rec10/trunk/src/tv2mkv.py @@ -30,55 +30,57 @@ def avi2mkv(pin,pout,opt): if isvfr==1: wineexe=configreader.getpath("wine") cfr2tc=configreader.getpath("cfr2tc") + cap2ass=configreader.getpath("Caption2Ass") pin120=pin.replace(".avi",".120.avi") pints=pin.replace(".avi",".ts") pintimecode=pin.replace(".avi",".timecode.txt") + pincap=pin.replace(".avi",".srt") pinaac=pin.replace(".avi",".aac") - exes.append("ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'") - exes.append(wineexe+u" "+cfr2tc+u" '"+"Z:\\"+pin+"' '"+"Z:\\"+pin120+u"' '"+"Z:\\"+pintimecode+u"' 2") - exes.append(exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:-225 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0") + e0="ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'" + e1=wineexe+u" "+cfr2tc+u" '"+"Z:\\"+pin+"' '"+"Z:\\"+pin120+u"' '"+"Z:\\"+pintimecode+u"' 2" + e2=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" Z:\\"+pincap+"\"" + e3=exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:-225 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0" + e3s=exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:-225 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --forced-track 0:no -s 0 -D -A '"+pincap+"' --track-order 0:0,1:0,2:0" #exes.append(exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:0 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0") #exes.append(doexe = exe + u" -o '" + pout + u"' --cues 0:all --forced-track 0:no --default-duration 0:120000/1001fps -d 0 -A -S '" + pin + u"' --sync 0:0 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0") - for e in exes: - ex= "nice -n 17 "+e - recdblist.printutf8(e) - txt=txt+e+"\n" - cmdt="" - try: - cmdt=unicode(commands.getoutput(ex.encode('utf-8')),'utf-8') - except: - "" - txt=txt+cmdt+"\n" + execcomd(e0) + execcomd(e1) + execcomd(e2) + if os.path.exists(pincap): + execcomd(e3s) + else: + execcomd(e3) if (not os.path.exists(pin.replace(".avi",".120.avi"))and (not os.path.exists(pout))): txt=txt+"CFR2TC error. maybe avi file is over 1GB.(ODML error would have happend.)" ptmp=pin.replace(".avi",".noodml.avi") - e="mencoder -noodml -forceidx -oac copy -ovc copy -o \'"+ptmp+"\'"+" \'"+pin+"\'" - ex="nice -n 17 "+e + e1="mencoder -noodml -forceidx -oac copy -ovc copy -o \'"+ptmp+"\'"+" \'"+pin+"\'" e2=wineexe+u" "+cfr2tc+u" '"+"Z:\\"+ptmp+"' '"+"Z:\\"+pin120+u"' '"+"Z:\\"+pintimecode+u"' 2" - ex2="nice -n 17 "+e2 - e3=exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:-225 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0" + e3=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" Z:\\"+pincap+"\"" + e4=exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:-225 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0" + e4s=exe +" -o '"+pout+u"' --forced-track 0:no --timecodes '0:"+pintimecode+"' -d 0 -A -S '"+pin120+"' --sync 0:-225 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --forced-track 0:no -s 0 -D -A '"+pincap+"' --track-order 0:0,1:0,2:0" recdblist.printutf8(e) txt=txt+e+"\n" - try: - cmdt=unicode(commands.getoutput(ex.encode('utf-8')),'utf-8') - cmdt=cmdt+unicode(commands.getoutput(ex2.encode('utf-8')),'utf-8') - cmdt=cmdt+unicode(commands.getoutput(e3.encode('utf-8')),'utf-8') - os.remove(ptmp) - except: - "" + cmdt=execcomd(e1) + cmdt=cmdt+execcomd(e2) + cmdt=cmdt+execcomd(e3) + if os.path.exists(pincap): + execcomd(e4s) + else: + execcomd(e4) + os.remove(ptmp) txt=txt+cmdt+"\n" else: - exes.append(exe + u" -o '" + pout + u"' --forced-track 0:no --forced-track 1:no -a 1 -d 0 -S '" + pin + u"' --track-order 0:0,0:1") - for e in exes: - ex= "nice -n 17 "+e - recdblist.printutf8(e) - txt=txt+e+"\n" - cmdt="" - try: - cmdt=unicode(commands.getoutput(ex.encode('utf-8')),'utf-8') - except: - "" - txt=txt+cmdt+"\n" + pincap=pin.replace(".avi",".srt") + cap2ass=configreader.getpath("Caption2Ass") + pints=pin.replace(".avi",".ts") + e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" Z:\\"+pincap+"\"" + e1=exe + u" -o '" + pout + u"' --forced-track 0:no --forced-track 1:no -a 1 -d 0 -S '" + pin + u"' --track-order 0:0,0:1" + e1s=exe + u" -o '" + pout + u"' --forced-track 0:no --forced-track 1:no -a 1 -d 0 -S '" + pin + u"' --forced-track 0:no -s 0 -A -D '"+pincap+"' --track-order 0:0,0:1,1:0" + txt=txt+execcomd(e0) + if os.path.exists(pincap): + txt=txt+execcomd(e1s) + else: + txt=txt+execcomd(e1) logo=pout.replace(".mkv",".log") """if (isvfr==1 and (not os.path.exists(pin.replace(".avi",".120.avi"))) and (not os.path.exists(pout))): exes=[] @@ -94,4 +96,14 @@ def avi2mkv(pin,pout,opt): txt = "\n####mkvmerge-log####\n"+txt f=open(logo,'a') f.write(txt.encode('utf-8')) - f.close() \ No newline at end of file + f.close() +def execcomd(cmd): + txt="" + cmdt=u"nice -n 17 "+cmd + try: + txt=u"Cmd : "+cmd+"\n" + txt2=commands.getoutput(cmdt.encode('utf-8')) + txt=txt+unicode(txt2,"utf-8")+"\n" + except: + "" + return txt \ No newline at end of file diff --git a/rec10/trunk/src/tv2mp4.py b/rec10/trunk/src/tv2mp4.py index 502786c..f7c3413 100644 --- a/rec10/trunk/src/tv2mp4.py +++ b/rec10/trunk/src/tv2mp4.py @@ -42,11 +42,13 @@ def avi2mp4(pin,pout,opt): wineexe=configreader.getpath("wine") cfr2tc=configreader.getpath("cfr2tc") dtsedit=configreader.getpath("DtsEdit") + caption2ass=configreader.getpath("Caption2Ass") pin120=os.path.join(dir,etitle+u".120.avi") pints=os.path.join(dir,title+u".ts") pmp4=os.path.join(dir,etitle+u".tmp.mp4") pintimecode=os.path.join(dir,etitle+u".timecode.txt") pinaac=os.path.join(dir,etitle+u".aac") + pincat=os.path.join(dir,etitle+u".srt") evfr0="ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'" evfr1=wineexe+u" "+cfr2tc+u" '"+"Z:\\"+pin+"' '"+"Z:\\"+pin120+u"' 'Z:\\"+pintimecode+u"' 2" evfr2=exe+u" -aviraw video \'"+pin120+u"\'" @@ -195,23 +197,11 @@ def mkv2mp4(pin,pout): exe3=wineexe+u" "+dtsedit+u" -tc \'Z:\\"+timecodepath+u"\' \'Z:\\"+tmpmp4+u"\' -o \'Z:\\"+pout+u"\'" logo=pin.replace(".avi",".log") os.environ['LANG']="ja_JP.UTF-8" - txt= exe0+"\n"+exe1+"\n"+exe2+"\n"+exe3+"\n" - try: - txt = txt+unicode(commands.getoutput(exe0.encode('utf-8')),'utf-8') - except: - "" - try: - txt = txt+unicode(commands.getoutput(exe1.encode('utf-8')),'utf-8') - except: - "" - try: - txt = txt+unicode(commands.getoutput(exe2.encode('utf-8')),'utf-8') - except: - "" - try: - os.system(exe3.encode('utf-8')) - except: - "" + txt="" + execcomd(exe0) + execcomd(exe1) + execcomd(exe2) + execcomd(exe3) txt = "\n####MKV2MP4-log####\n"+txt f=open(logo,'a') f.write(txt.encode('utf-8')) @@ -226,3 +216,12 @@ def mkv2mp4(pin,pout): os.remove(timecodepath) if os.path.exists(tmpmp4): os.remove(tmpmp4) +def execcomd(cmd): + txt="" + try: + txt=u"Cmd : "+cmd+"\n" + txt2=commands.getoutput(cmd.encode('utf-8')) + txt=txt+unicode(txt2,"utf-8")+"\n" + except: + "" + return txt -- 2.11.0