我想为ffmpeg输出创建一个解析器。但是只在通过
运行ffmpeg时strCmdText = "-y -i \"" + path + "\"";
strCmdText += " -async 1 -vf yadif -c:v libx264 -b:v 1024k -r 30 -bf 1 -an nul.avi";
Process.Start(new ProcessStartInfo("lib\\ffmpeg.exe", strCmdText));
比批量启动慢2/3:
set FFMPEG="ffmpeg\ffmpeg.exe"
%FFMPEG% -y -i %1 -async 1 -vf yadif -c:v libx264 -b:v 1024k -r 30 -bf 1 -an -pass 1 nul.avi
在C#中运行它的fps-rate为130(CPU:100%),但是使用批处理运行它有400 fps(CPU 75%)。
在两种方式中RAM都使用,#Handels和#Threads也是如此。 将进程优先级设置为High / Live不会解决此问题,也不会在单独的线程中运行该进程。
这是正常的,还是可以修复?
答案 0 :(得分:4)
当您使用Process.Start
启动应用程序时,您在命令提示符中缺少-pass 1
开关,可能会影响输出。
AFAIK,速度&通过Process.Start
启动的应用程序的输出与在正常情况下启动的相同。
性能可能会有1%或2%的变化,但这主要是由于cpu,流程亲和力以及与硬件相关的事情。