C#Process.Start()比控制台慢

时间:2013-05-16 12:33:46

标签: c# process console

我想为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不会解决此问题,也不会在单独的线程中运行该进程。

这是正常的,还是可以修复?

1 个答案:

答案 0 :(得分:4)

当您使用Process.Start启动应用程序时,您在命令提示符中缺少-pass 1开关,可能会影响输出。

AFAIK,速度&通过Process.Start启动的应用程序的输出与在正常情况下启动的相同。

性能可能会有1%或2%的变化,但这主要是由于cpu,流程亲和力以及与硬件相关的事情。