OSDN Git Service

fix ffmpeg option.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 31 Jan 2012 13:55:52 +0000 (13:55 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 31 Jan 2012 13:55:52 +0000 (13:55 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@909 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/ts2x264.py

index 63ef8ff..8f77cc9 100644 (file)
@@ -360,28 +360,6 @@ def encodeFfmpegSar(pin,pout,size,is24fps,quality,crf,deinterlace=1,usebluray=0,
     zip.addFile2FileZip(log_x264, recdblist.getLogTitle(pin+".log.zip"))\r
     os.remove(log_ffmpeg)\r
     os.remove(log_x264)\r
-def getMovieBaseSize(pin):\r
-    ffmpeg=configreader.getConfPath("ffmpeg")\r
-    os.environ['LANG']="ja_JP.UTF-8"\r
-    exe=ffmpeg+u" -i \""+pin+"\" 2>&1"\r
-    txts=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8','ignore')\r
-    rT=re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+PAR\D+(\d+:\d+)\D+.*\Z")\r
-    sizeMaxX=0\r
-    sizeMaxY=0\r
-    txtls=txts.split("\n")\r
-    for t in txtls:\r
-        rM=rT.match(t)\r
-        if rM:\r
-            sizetxt=rM.group(1)\r
-            partxt=rM.group(2)\r
-            tX=int(sizetxt.split("x")[0])\r
-            tY=int(sizetxt.split("x")[1])\r
-            tEX=int(partxt.split(":")[0])\r
-            tEY=int(partxt.split(":")[1])\r
-            if sizeMaxX<tX:\r
-                sizeMaxX=tX\r
-                sizeMaxY=tY\r
-    return [sizeMaxX,sizeMaxY]\r
 def getMovieBaseSize2(pin):##動画開始後すぐに解像度が変更されたときに対処\r
     ffmpeg=configreader.getConfPath("ffmpeg")\r
     os.environ['LANG']="ja_JP.UTF-8"\r
@@ -394,11 +372,13 @@ def getMovieBaseSize2(pin):##動画開始後すぐに解像度が変更された
         print traceback.print_exc(file=sys.stdout)\r
     txts=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8','ignore')\r
     rT=re.compile(u"Stream.*#.*:.*\D+([\d]+x[\d]+)\D+PAR\D+(\d+:\d+)\D+.*\Z")\r
+    rT2=re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+SAR\D+(\d+:\d+)\D+.*DAR\D+(\d+:\d+)\D+.*\Z")\r
     sizeMaxX=0\r
     sizeMaxY=0\r
     txtls=txts.split("\n")\r
     for t in txtls:\r
         rM=rT.search(t)\r
+        rM2=rT2.search(t)\r
         if rM:\r
             sizetxt=rM.group(1)\r
             partxt=rM.group(2)\r
@@ -409,36 +389,15 @@ def getMovieBaseSize2(pin):##動画開始後すぐに解像度が変更された
             if sizeMaxX<tX:\r
                 sizeMaxX=tX\r
                 sizeMaxY=tY\r
-    os.remove(pin+".size.ts")\r
-    return [sizeMaxX,sizeMaxY]\r
-def getMoviePAR(pin):\r
-    ffmpeg=configreader.getConfPath("ffmpeg")\r
-    os.environ['LANG']="ja_JP.UTF-8"\r
-    exe=ffmpeg+u" -i \""+pin+"\" 2>&1"\r
-    txts=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8','ignore')\r
-    rT=re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+PAR\D+(\d+:\d+)\D+.*\Z")\r
-    sizeMaxX=0\r
-    parx=0\r
-    pary=0\r
-    txtls=txts.split("\n")\r
-    for t in txtls:\r
-        rM=rT.match(t)\r
-        if rM:\r
-            sizetxt=rM.group(1)\r
-            dartxt=rM.group(2)\r
+        if rM2:\r
+            sizetxt=rM2.group(1)\r
             tX=int(sizetxt.split("x")[0])\r
             tY=int(sizetxt.split("x")[1])\r
-            tEX=int(dartxt.split(":")[0])\r
-            tEY=int(dartxt.split(":")[1])\r
             if sizeMaxX<tX:\r
                 sizeMaxX=tX\r
-                if tX==1920 and tY==1080:\r
-                    parx=1\r
-                    pary=1\r
-                else:\r
-                    parx=tEX\r
-                    pary=tEY\r
-    return [parx,pary]\r
+                sizeMaxY=tY\r
+    os.remove(pin+".size.ts")\r
+    return [sizeMaxX,sizeMaxY]\r
 def getMoviePAR2(pin):\r
     ffmpeg=configreader.getConfPath("ffmpeg")\r
     os.environ['LANG']="ja_JP.UTF-8"\r
@@ -449,88 +408,65 @@ def getMoviePAR2(pin):
         print type(inst)\r
         print str(inst)\r
         print traceback.print_exc(file=sys.stdout)\r
-    txts=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8','ignore')\r
-    rT=re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+PAR\D+(\d+:\d+)\D+.*\Z")\r
-    sizeMaxX=0\r
-    parx=0\r
-    pary=0\r
-    txtls=txts.split("\n")\r
+    txts = unicode(commands.getoutput(exe.encode('utf-8')), 'utf-8', 'ignore')\r
+    rT = re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+PAR\D+(\d+:\d+)\D+.*\Z")\r
+    rT2 = re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+SAR\D+(\d+:\d+)\D+.*DAR\D+(\d+:\d+)\D+.*\Z")\r
+    sizeMaxX = 0\r
+    parx = 0\r
+    pary = 0\r
+    txtls = txts.split("\n")\r
     for t in txtls:\r
-        rM=rT.match(t)\r
+        rM = rT.match(t)\r
+        rM2 = rT2.match(t)\r
         if rM:\r
-            sizetxt=rM.group(1)\r
-            dartxt=rM.group(2)\r
-            tX=int(sizetxt.split("x")[0])\r
-            tY=int(sizetxt.split("x")[1])\r
-            tEX=int(dartxt.split(":")[0])\r
-            tEY=int(dartxt.split(":")[1])\r
-            if sizeMaxX<tX:\r
-                sizeMaxX=tX\r
-                if tX==1920 and tY==1080:\r
-                    parx=1\r
-                    pary=1\r
+            sizetxt = rM.group(1)\r
+            dartxt = rM.group(2)\r
+            tX = int(sizetxt.split("x")[0])\r
+            tY = int(sizetxt.split("x")[1])\r
+            tEX = int(dartxt.split(":")[0])\r
+            tEY = int(dartxt.split(":")[1])\r
+            if sizeMaxX < tX:\r
+                sizeMaxX = tX\r
+                if tX == 1920 and tY == 1080:\r
+                    parx = 1\r
+                    pary = 1\r
                 else:\r
-                    parx=tEX\r
-                    pary=tEY\r
-    os.remove(pin+".size.ts")\r
-    return [parx,pary]\r
-def getMovieDAR(pin):\r
-    ffmpeg=configreader.getConfPath("ffmpeg")\r
-    os.environ['LANG']="ja_JP.UTF-8"\r
-    exe=ffmpeg+u" -i \""+pin+"\" 2>&1"\r
-    txts=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8','ignore')\r
-    rT=re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+.*DAR\D+(\d+:\d+)\D+.*\Z")\r
-    sizeMaxX=0\r
-    darx=0\r
-    dary=0\r
-    txtls=txts.split("\n")\r
-    for t in txtls:\r
-        rM=rT.match(t)\r
-        if rM:\r
-            sizetxt=rM.group(1)\r
-            dartxt=rM.group(2)\r
-            tX=int(sizetxt.split("x")[0])\r
-            tY=int(sizetxt.split("x")[1])\r
-            tEX=int(dartxt.split(":")[0])\r
-            tEY=int(dartxt.split(":")[1])\r
-            if sizeMaxX<tX:\r
-                sizeMaxX=tX\r
-                if tX==1920 and tY==1080:\r
-                    darx=16\r
-                    dary=9\r
+                    parx = tEX\r
+                    pary = tEY\r
+        rM = rT.match(t)\r
+        if rM2:\r
+            sizetxt = rM2.group(1)\r
+            sartxt = rM2.group(2)\r
+            dartxt = rM2.group(3)\r
+            tX = int(sizetxt.split("x")[0])\r
+            tY = int(sizetxt.split("x")[1])\r
+            tEX = int(dartxt.split(":")[0])\r
+            tEY = int(dartxt.split(":")[1])##dar=sarxpar\r
+            tSX = int(sartxt.split(":")[0])\r
+            tSY = int(sartxt.split(":")[1])##par=dar/sar= darx*pary*sary=dary*parx*sarx\r
+            if sizeMaxX < tX:\r
+                sizeMaxX = tX\r
+                if tX == 1920 and tY == 1080:\r
+                    parx = 1\r
+                    pary = 1\r
                 else:\r
-                    darx=tEX\r
-                    dary=tEY\r
-    return [darx,dary]\r
-def getMovieDAR2(pin):\r
-    ffmpeg=configreader.getConfPath("ffmpeg")\r
-    os.environ['LANG']="ja_JP.UTF-8"\r
-    exe=ffmpeg+u" -ss 5 -fs 1 -t 10 -i \""+pin+"\" \""+pin+".size.ts\" 2>&1"\r
-    txts=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8','ignore')\r
-    rT=re.compile(u".*Stream.*#.*:.*\D+([\d]+x[\d]+)\D+.*DAR\D+(\d+:\d+)\D+.*\Z")\r
-    sizeMaxX=0\r
-    darx=0\r
-    dary=0\r
-    txtls=txts.split("\n")\r
-    for t in txtls:\r
-        rM=rT.match(t)\r
-        if rM:\r
-            sizetxt=rM.group(1)\r
-            dartxt=rM.group(2)\r
-            tX=int(sizetxt.split("x")[0])\r
-            tY=int(sizetxt.split("x")[1])\r
-            tEX=int(dartxt.split(":")[0])\r
-            tEY=int(dartxt.split(":")[1])\r
-            if sizeMaxX<tX:\r
-                sizeMaxX=tX\r
-                if tX==1920 and tY==1080:\r
-                    darx=16\r
-                    dary=9\r
-                else:\r
-                    darx=tEX\r
-                    dary=tEY\r
+                    if tEX * tSY == tEY * tSX:\r
+                        parx = 1\r
+                        pary = 1\r
+                    elif tEX * tSY * 3 == tEY * tSX * 4:\r
+                        parx = 4\r
+                        pary = 3\r
+                    elif tEX * tSY * 4 == tEY * tSX * 3:\r
+                        parx = 3\r
+                        pary = 4\r
+                    elif tEX * tSY * 9 == tEY * tSX * 16:\r
+                        parx = 16\r
+                        pary = 9\r
+                    elif tEX * tSY * 16 == tEY * tSX * 9:\r
+                        parx = 9\r
+                        pary = 16\r
     os.remove(pin+".size.ts")\r
-    return [darx,dary]\r
+    return [parx,pary]\r
 def getParSize(pin,y):\r
     tSize=getMovieBaseSize2(pin)\r
     if tSize[1] != 0 :\r