6

我想为 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 速率为 130(CPU:100%),但使用批处理运行时,它有 400 fps(CPU 75%)。

在这两种方式中,RAM 的使用和#Handels 和#Threads 都是相同的。将进程优先级设置为高/实时不会解决此问题,也不会在单独的线程中运行进程。

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

4

1 回答 1

4

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

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

性能可能会有 1% 或 2% 的变化,但这主要是由于 CPU、进程亲和性以及与硬件相关的因素。

于 2013-05-16T12:39:14.820 回答