Я хочу сделать парсер для вывода ffmpeg. Но когда работает FFmpeg только лишь с помощьюC# Process.Start() медленнее, чем консоль
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 кадров в секунду (процессор 75%).
В обоих случаях ОЗУ использует и те же, # Handels и #Threads тоже. Настройка приоритета процесса High/Live не будет устранять это и не запускать процесс в отдельном потоке.
Это нормально или может быть исправлено?
Вы (или кто-то еще) определили близость процессора к вашему стартовому процессу (или к каким-либо его родительским процессам)? Используйте Process Monitor, чтобы узнать, так ли это. Выполнение только на 75% может означать, что процесс использует только 3/4 доступных ядер. –
У вас, похоже, разные аргументы переданы исполняемому файлу, расположенному в разных местах. Можете ли вы дважды проверить, что аргументы совпадают, и вы используете точно такой же исполняемый файл? – oleksii