Я пытаюсь автоматизировать HandbrakeCLI с помощью C# через класс System.Diagnostics.Process. Однако, пока моя программа пытается запустить процесс, кажется, что этот процесс никогда не продвигается.HandbrakeCLI не автоматизирует процесс C#
Вот мои настройки процесса:
Process process = new System.Diagnostics.Process();
ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.FileName = parameters.HandbrakeLocation;
startInfo.Arguments = arguments;
process.StartInfo = startInfo;
process.Start();
string output = string.Empty;
while ((output = process.StandardOutput.ReadLine()) != null)
{
Debug.WriteLine(output);
}
process.WaitForExit();
HandbrakeCLI.exe появляется в моем списке процессов. Debug.WriteLine (выход); line постоянно выводит «Кодирование: задача 1 из 1, 0.00%», и процесс никогда не завершается. Если я убью свое приложение C#, то HandbrakeCLI мгновенно начнет снимать с 7 000 КБ в памяти до 145 000 тыс., А затем сделает кодировку, которую я хочу сделать. Его, как мое приложение C#, удерживает его.
Я попытался использовать Read() вместо ReadLine(), и я попытался выполнить промывку потока StandardOutput до и после чтения без каких-либо успехов. У меня есть подозрение, что, поскольку HandbrakeCLI перезаписывает stdout при записи прогресса кодирования, он не будет действовать как обычный процесс при автоматическом использовании через C#.