OSDN Git Service

implement not using-pipe ffmpeg encode function.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Mon, 14 Jun 2010 04:59:12 +0000 (04:59 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Mon, 14 Jun 2010 04:59:12 +0000 (04:59 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@618 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/ts2x264.py

index 18e59f3..f47d0b7 100644 (file)
@@ -242,4 +242,87 @@ def encode_ffmpeg(pin,pout,size,is24fps,quality,crf):
     except:
         ""
     recdblist.addCommandLog(pin, u"FFmpeg動画エンコード", exe, txt)
-    
\ No newline at end of file
+
+def encode_ffmpeg_y4m(pin,pout,size,is24fps,quality,crf):
+    """
+
+    """
+    ffmpeg=configreader.getpath("ffmpeg")
+    x264=configreader.getpath("x264")
+    fps=u"-r 29.970030 "
+    x264fps="--fps 30000/1001"
+    x264streamsize=""
+    x264preset=""
+    x264tune=""
+    x264_bitrate="2500"
+    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 size == "HD":
+        s = "-s 1280x720 "
+        #x264streamsize=u"1280x720"
+        x264_bitrate="2500"
+    elif size == "WVGA":
+        s = "-s 854x480 "
+        #x264streamsize=u"854x480"
+        x264_bitrate="1500"
+    elif size == "FullHD":
+        s = "-s 1920x1080 "
+        #x264streamsize=u"1920x1080"
+        x264_bitrate="5000"
+    elif size == "SD":
+        s = "-s 720x480 "
+        #x264streamsize=u"720x480"
+        x264_bitrate="1250"
+    elif size == "QVGA_BASE":
+        s = "-s 320x240 "
+        #x264streamsize=u"320x240"
+        x264_bitrate="300"
+    elif size == "WVGA_BASE":
+        s = "-s 854x480 "
+        #x264streamsize=u"854x480"
+        x264_bitrate="1500"
+    else:
+        s = "-s 1280x720 "
+        #x264streamsize=u"1280x720"
+        x264_bitrate="2500"
+    if quality==1:
+        x264preset=u"--preset ultrafast"
+    elif quality==2:
+        x264preset=u"--preset veryfast"
+    elif quality==3:
+        x264preset=u"--preset fast"
+    elif quality==4:
+        x264preset=u"--preset medium"
+    elif quality==5:
+        x264preset=u"--preset slow"
+    elif quality==6:
+        x264preset=u"--preset slower"
+    if size == "WVGA_BASE" or size == "QVGA_BASE":
+        x264profile=" --level 32 --profile baseline "
+    else:
+        x264profile=" --level 41 --profile high "
+    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 - |"
+    random.seed(pin)
+    random.jumpahead(10)
+    streampath=os.path.join(os.path.dirname(pin),str(random.randint(10000, 999999))+".y4m")
+    os.system(u"mkfifo "+streampath)
+    exe=ffmpeg+u" -y -i \""+pin+"\" -vsync 400 -vcodec rawvideo -f yuv4mpeg "+s+fps+"-deinterlace -an -f rawvideo - |"
+    exe=exe+u" nice -n 19 "+x264+" "+x264crf+u" "+x264_addline+u" --threads "+x264_thread+" "+x264profile+x264preset+" "+x264tune+" "+x264fps+" -o \""+pout+"\" \""+streampath+"\" "+x264streamsize
+    exe = "nice -n 19 " + exe
+    txt=""
+    recdblist.printutf8(exe)
+    try:
+        txt=unicode(commands.getoutput(exe.encode('utf-8')),'utf-8')
+    except:
+        ""
+    recdblist.addCommandLog(pin, u"FFmpeg動画エンコード", exe, txt)