OSDN Git Service

fix bug.
[rec10/rec10-git.git] / rec10 / trunk / src / tv2avi.py
index 56f6af2..6ca0afb 100644 (file)
@@ -2,23 +2,85 @@
 # coding: UTF-8
 # Rec10 TS Recording Tools
 # Copyright (C) 2009 Yukikaze
-import time
-import chdb
-import configreader
+import commands
 import datetime
 import os
 import re
+import shutil
+import time
+
+import chdb
+import configreader
+import status
 import ts2x264
-import ts2xvid
 import tv2ts
-import recdb
-def timetv2avi(pout, chtxt, btime, etime,opt):
+import recdblist
+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(u"\[二\]", pout):
+            dualaudio = 1
+        elif re.search(u'(二)', pout):
+            dualaudio = 1
+        elif re.search(u'\(二\)', pout):
+            dualaudio = 1
+        if dualaudio == 1:
+            dualaudiots2avi(aviin, tsout + ".sa.avi")
+        if pentaaudio == 1:
+            dualaudiots2avi(aviin, tsout + ".sa.avi")
+    except Exception, inst:
+        print "Error happend in b252ts in tv2avi"
+        print type(inst)
+        print inst
+    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]
-    #tsout=pout####
-    #print "4"+tsout
     tnow = datetime.datetime.now()
     wt = bt-tnow
     waitt = wt.seconds-5
@@ -27,62 +89,53 @@ def timetv2avi(pout, chtxt, btime, etime,opt):
     dt = et-tnow
     rectime = dt.seconds-10
     rectime = str(rectime)
-    #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+rectime
+    #recdblist.printutf8(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):
+    if re.search("5", opt):
         pentaaudio = 1
-    if re.search("d",opt):
+    if re.search("d", opt):
         dualaudio = 1
-    if re.search("\[二\]", pout):
+    if re.search(u"\[二\]", pout):
         dualaudio = 1
-    elif re.search('(二)', pout):
+    elif re.search(u'(二)', pout):
         dualaudio = 1
-    elif re.search('\(二\)', pout):
+    elif re.search(u'\(二\)', pout):
         dualaudio = 1
-    if opt=="":
-        opts=""
+    if opt == "":
+        opts = ""
         if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
-            opts=opts+"S2"
+            opts = opts + "S2"
             if chtxt == "disch":
                 ""
             elif chtxt == "hisch":
                 ""
             else:
-                opts=opts+"a"
+                opts = opts + "a"
         else:
-            opts=opts+"Ha2"
-    else:
-        opts=opt
-    if re.search("x",opt):
-        makexvid = 0
+            opts = opts + "Ha2"
     else:
-        makexvid = 1
+        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"
-    """
-    if makexvid==1:
-        ts2xvid.ts2xvid(aviin, pout,opts)
-    else:
-        ts2x264.ts2x264(aviin, pout,opts)
-        """
-    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]
-    recdb.rec_reckey("ts2avi",title,chtxt,btime,etime,opt)
-    #try:
-    #    os.remove(aviin)
-    #except:
-    #    ""
-def tv2avi(pout, chtxt, btime, etime,opt):
+        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)
+    try:
+        ts2x264.ts2x264(pin, pout, opt)
+    except Exception, inst:
+        print "error occures in tv2avi.py tv2avi"
+        print type(inst)
+        print inst
+    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
@@ -90,179 +143,161 @@ def tv2avi(pout, chtxt, btime, etime,opt):
     time = str(time)
     extt = os.path.splitext(pout)
     tsout = extt[0]
-    #tsout=pout####
-    #print "4"+tsout
-    #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+time
     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):
+    if re.search("5", opt):
         pentaaudio = 1
-    if re.search("d",opt):
+    if re.search("d", opt):
         dualaudio = 1
-    if re.search('\[二\]', pout):
+    if re.search(u'\[二\]', pout):
         dualaudio = 1
-    elif re.search('(二)', pout):
+    elif re.search(u'(二)', pout):
         dualaudio = 1
-    elif re.search('\(二\)', pout):
+    elif re.search(u'\(二\)', pout):
         dualaudio = 1
-    opts=""
+    opts = ""
     if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
-        opts=opts+"S2"
+        opts = opts + "S2"
         if chtxt == "disch":
             ""
         elif chtxt == "hisch":
             ""
         else:
-            opts=opts+"a"
+            opts = opts + "a"
     else:
-        opts=opts+"Ha2"
+        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)
+        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):
-    #bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
-    #et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
+def b252avi(pout, chtxt, opt):
     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)
     tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
-    #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):
+    if re.search("5", opt):
         pentaaudio = 1
-    if re.search("d",opt):
+    if re.search("d", opt):
         dualaudio = 1
-    if re.search('\[二\]', pout):
+    if re.search(u'\[二\]', pout):
         dualaudio = 1
-    elif re.search('(二)', pout):
+    elif re.search(u'(二)', pout):
         dualaudio = 1
-    elif re.search('\(二\)', pout):
+    elif re.search(u'\(二\)', pout):
         dualaudio = 1
-    if opt=="":
-        opts=""
+    if opt == "":
+        opts = ""
         if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
-            opts=opts+"S2"
+            opts = opts + "S2"
             if chtxt == "disch":
                 ""
             elif chtxt == "hisch":
                 ""
             else:
-                opts=opts+"a"
+                opts = opts + "a"
         else:
-            opts=opts+"Ha2"
+            opts = opts + "Ha2"
     else:
-        opts=opt
-    if re.search("x",opt):
-        makexvid = 0
-    else:
-        makexvid = 1
+        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"
-    if makexvid==1:
-        ts2xvid.ts2xvid(aviin, pout,opts)
-    else:
-        ts2x264.ts2x264(aviin, pout,opts)
-    #try:
-    #    os.remove(aviin)
-    #except:
-    #    ""
-
-    """
-    pout = pout.encode('utf-8')
-    extt = os.path.splitext(pout)
-    tsout = extt[0]
-    #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+time
-    tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
-    aviin = tsout + ".ts"
-    dualaudio = 0
-    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"
-    ts2x264.ts2x264(aviin, pout,opts)
-    #os.remove(aviin)
-
-    """
-
+        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)
 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:]
+    xvfb = configreader.getpath('xvfb-run')
+    logpath=pin.replace("ts","log")
     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)
+    #recdblist.printutf8(exe)
+    exe = xvfb + ' -a ' + exe
+    recdblist.printutf8(exe)
+    os.system(exe.encode('utf-8'))
     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)
+    recdblist.printutf8(exe)
+    #commands.getoutput(exe)
+    os.system(exe.encode('utf-8'))
     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"
+    #recdblist.printutf8(exe)
+    exe = xvfb + ' -a ' + exe
+    recdblist.printutf8(exe)
+    commands.getoutput(exe.encode('utf-8'))
+    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
+    recdblist.printutf8(exe)
+    commands.getoutput(exe.encode('utf-8'))
+    #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"
+    recdblist.printutf8(aexe)
+    #os.system(aexe1)
+    #os.system(aexe2)
+    commands.getoutput(aexe.encode('utf-8'))
+    #exe = "ffmpeg -y  -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi  \'" + pout + "\'"
+    #recdblist.printutf8(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:]
+    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-run -a ' + exe
+    #recdblist.printutf8(exe)
+    exe = xvfb + ' -a ' + exe
+    #exe = 'xvfb-run -a ' + exe
     #exe='export Display=:2&&'+exe
-    print exe
-    os.system(exe)
+    recdblist.printutf8(exe)
+    commands.getoutput(exe.encode('utf-8'))
+    #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)
+    recdblist.printutf8(exe)
+    commands.getoutput(exe.encode('utf-8'))
+    #os.system(exe)
     os.remove(ffpin1)
     os.remove(ffpin2)