OSDN Git Service

implement new x264 version encode.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 3 Aug 2010 02:02:33 +0000 (02:02 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 3 Aug 2010 02:02:33 +0000 (02:02 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@657 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/ts2x264.py

index 6ba5cb8..0003dfe 100644 (file)
@@ -78,34 +78,24 @@ def ts2x264(pin, pout, opts):#sizeは"HD"か"SD"
             recdblist.Commonlogex("Error", "ts2x264(ts2x264.py)", str(type(inst)), str(inst))
 def encode_sar(pin,pout,size,is24fps,quality,crf,deinterlace=1):
     mencoder=configreader.getpath("mencoder")
-    x264=configreader.getpath("x264")
     encvf=""
     txt=""
     encvf="-sws 9 -vf yadif=0,pp=l5"
     harddup=",hqdn3d=2:1:2,unsharp=l3x3:0.75:c3x3:0.75,harddup"
     ofps="-ofps 30000/1001"
     fps="-fps 30000/1001"
-    x264fps="--fps 30000/1001"
+    x264fps="30000/1001"
     x264streamsize=""
     x264preset=""
     x264tune=""
     x264_bitrate="5000"
-    x264_thread="auto"
     tsar=getMoviePAR(pin)
-    x264_sar="--sar "+str(tsar[0])+":"+str(tsar[1])
-    try:
-        xtt=configreader.getenv("x264_thread")
-        xtt=int(xtt)
-        if xtt>0:
-            x264_thread=str(xtt)
-    except:
-        x264_thread="auto"
-    x264_addline=configreader.getenv("x264_addline")
+    x264_sar=str(tsar[0])+":"+str(tsar[1])
     if is24fps==1:
         ofps="-ofps 24000/1001"
         fps="-fps 30000/1001"
-        x264fps="--fps 24000/1001"
-        x264tune="--tune animation"
+        x264fps="24000/1001"
+        x264tune="animation"
         encvf="-sws 9 -vf pullup,softskip"
         harddup=",pp=l5,unsharp=l3x3:0.75:c3x3:0.75,hqdn3d=2:1:2,harddup"
     if size == "HD":
@@ -143,29 +133,29 @@ def encode_sar(pin,pout,size,is24fps,quality,crf,deinterlace=1):
         ofps="-ofps 30000/1001"
         #fps="-fps 30000/1001"
         fps=""
-        x264fps="--fps 30000/1001"
+        x264fps="30000/1001"
         x264tune=x264tune+" --tff --nal-hrd vbr"
         encvf="-vf hqdn3d=2:1:2"
         harddup=",harddup"
         encvf=encvf+harddup
         x264streamsize=str(tsize[0])+u"x"+str(tsize[1])
     if quality==1:
-        x264preset=u"--preset ultrafast"
+        x264preset=u"ultrafast"
     elif quality==2:
-        x264preset=u"--preset veryfast"
+        x264preset=u"veryfast"
     elif quality==3:
-        x264preset=u"--preset fast"
+        x264preset=u"fast"
     elif quality==4:
-        x264preset=u"--preset medium"
+        x264preset=u"medium"
     elif quality==5:
-        x264preset=u"--preset slow"
+        x264preset=u"slow"
     elif quality==6:
-        x264preset=u"--preset slower"
+        x264preset=u"slower"
     if size == "WVGA_BASE" or size == "QVGA_BASE":
         x264profile=" --level 32 --profile baseline "
     else:
         x264profile=" --level 42 --profile high "
-    x264crf=u"--crf "+str(crf)
+    x264crf=str(crf)
     os.environ['LANG']="ja_JP.UTF-8"
     random.seed(pin)
     random.jumpahead(10)
@@ -174,8 +164,9 @@ def encode_sar(pin,pout,size,is24fps,quality,crf,deinterlace=1):
     random.jumpahead(temptime)
     streampath=os.path.join(os.path.dirname(pin),str(random.randint(10000, 99999999)))
     os.system(u"mkfifo "+streampath)
-    encexe=mencoder+u" \""+pin+u"\" -vfm ffmpeg -quiet "+encvf+u",format=i420 "+fps+" "+ofps+" -oac mp3lame -ovc raw -of rawvideo -o \""+streampath+"\" &"
-    encexe=encexe+u" nice -n 19 "+x264+" "+x264_sar+" "+x264crf+u" "+x264_addline+u"  --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" -o \""+pout+"\" "+streampath+" "+x264streamsize
+    encexe=mencoder+u" \""+pin+u"\" -vfm ffmpeg -quiet "+encvf+u",format=i420 "+fps+" "+ofps+" -oac mp3lame -ovc raw -of rawvideo -o \""+streampath+"\" & "
+    encexe=encexe+get_x264_commandline(x264preset, x264sar, x264fps, x264profile, x264tune, pout, streampath, x264streamsize, crf=x264crf)
+    #encexe=encexe+u" nice -n 19 "+x264+" "+x264_sar+" "+x264crf+u" "+x264_addline+u"  --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" -o \""+pout+"\" "+streampath+" "+x264streamsize
     encexe=u"nice -n 19 " +encexe
     recdblist.printutf8(encexe)
     txt=""
@@ -194,22 +185,14 @@ def encode_ffmpeg_sar(pin,pout,size,is24fps,quality,crf,deinterlace=1):
     ffmpeg=configreader.getpath("ffmpeg")
     x264=configreader.getpath("x264")
     fps=u"-r 29.970030 "
-    x264fps="--fps 30000/1001"
+    x264fps="30000/1001"
     x264streamsize=""
     x264preset=""
     x264tune=""
     x264_bitrate="2500"
     x264_thread="auto"
     tsar=getMoviePAR(pin)
-    x264_sar="--sar "+str(tsar[0])+":"+str(tsar[1])
-    try:
-        xtt=configreader.getenv("x264_thread")
-        xtt=int(xtt)
-        if xtt>0:
-            x264_thread=str(xtt)
-    except:
-        x264_thread="auto"
-    x264_addline=configreader.getenv("x264_addline")
+    x264_sar=str(tsar[0])+":"+str(tsar[1])
     if size == "HD":
         tsize=get_par_size(pin,720)
         s = "-s "+str(tsize[0])+"x720 "
@@ -246,17 +229,17 @@ def encode_ffmpeg_sar(pin,pout,size,is24fps,quality,crf,deinterlace=1):
         x264streamsize=str(tsize[0])+u"x720"
         x264_bitrate="2500"
     if quality==1:
-        x264preset=u"--preset ultrafast"
+        x264preset=u"ultrafast"
     elif quality==2:
-        x264preset=u"--preset veryfast"
+        x264preset=u"veryfast"
     elif quality==3:
-        x264preset=u"--preset fast"
+        x264preset=u"fast"
     elif quality==4:
-        x264preset=u"--preset medium"
+        x264preset=u"medium"
     elif quality==5:
-        x264preset=u"--preset slow"
+        x264preset=u"slow"
     elif quality==6:
-        x264preset=u"--preset slower"
+        x264preset=u"slower"
     if size == "WVGA_BASE" or size == "QVGA_BASE":
         x264profile=" --level 32 --profile baseline "
     else:
@@ -264,8 +247,9 @@ def encode_ffmpeg_sar(pin,pout,size,is24fps,quality,crf,deinterlace=1):
     x264crf=u"--crf "+str(crf)
     txt=""
     os.environ['LANG']="ja_JP.UTF-8"
-    exe=ffmpeg+u" -y -i \""+pin+"\" -vsync 400 -vcodec rawvideo -pix_fmt yuv420p "+s+fps+"-deinterlace -an -f rawvideo - |"
-    exe=exe+u" nice -n 19 "+x264+" "+x264_sar+" "+x264crf+u" "+x264_addline+u" --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" -o \""+pout+"\" - "+x264streamsize
+    exe=ffmpeg+u" -y -i \""+pin+"\" -vsync 400 -vcodec rawvideo -pix_fmt yuv420p "+s+fps+"-deinterlace -an -f rawvideo - | "
+    exe=exe+get_x264_commandline(x264preset, x264sar, x264fps, x264profile, x264tune, pout,"-", x264streamsize, crf=x264crf)
+    #exe=exe+u" nice -n 19 "+x264+" "+x264_sar+" "+x264crf+u" "+x264_addline+u" --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" -o \""+pout+"\" - "+x264streamsize
     exe = "nice -n 19 " + exe
     txt=""
     recdblist.printutf8(exe)
@@ -372,4 +356,29 @@ def get_x264core_version():
     v=-1
     if rM:
         v=int(rM.group(1))
-    return v
\ No newline at end of file
+    return v
+def get_x264_commandline(preset,sar,fps,x264profile,x264tune,pout,pin,x264streamsize,crf=0,bitrate=0):
+    os.environ['LANG']="ja_JP.UTF-8"
+    x264_sar="--sar "+sar
+    x264preset=u"--preset "+preset
+    x264fps="--fps "+fps
+    if crf==0:
+        x264bitrate=u"--bitrate "+str(bitrate)
+    else:
+        x264crf=u"--crf "+str(crf)
+    x264_addline=configreader.getenv("x264_addline")
+    x264_thread="auto"
+    try:
+        xtt=configreader.getenv("x264_thread")
+        xtt=int(xtt)
+        if xtt>0:
+            x264_thread=str(xtt)
+    except:
+        x264_thread="auto"
+    x264_addline=configreader.getenv("x264_addline")
+    if get_x264core_version()>103:
+        x264res=u"--input-res "+x264streamsize
+        exe=u"nice -n 19 "+x264+" "+x264_sar+" "+x264crf+u" "+x264_addline+u" --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" "+x264res+" -o \""+pout+"\" "+pin
+    else:
+        exe=u"nice -n 19 "+x264+" "+x264_sar+" "+x264crf+u" "+x264_addline+u" --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" -o \""+pout+"\" "+pin+" "+x264streamsize
+    return exe
\ No newline at end of file