Я пытаюсь запустить ffmpeg
как процесс в .NET (C #), но в некоторых случаях, в зависимости от аргументов (в частности, если я опускаю аргументы видео для создания аудиофайла), это останавливает,Он запускает, выводит некоторые строки, но затем просто останавливается (используя 0% CPU).Когда родительский процесс .NET уничтожен, он продолжается, и если я позволю ему продолжаться, ffmpeg
правильно создает файл.Я подумал, что это может быть связано с использованием Peek()
для просмотра потока, поэтому я просто упростил его до следующего, который ведет себя так же:
_process = new Process
{
StartInfo =
{
UseShellExecute = false,
RedirectStandardOutput = false,
RedirectStandardError = true,
FileName = "c:\\ffmpeg.exe",
Arguments = string.Format(
"-i {0} {1} {2} {3} -y {4}", inputPath, videoArgs, audioArgs, options, outputPath)
}
};
_process.Start();
_process.WaitForExit();
ffmpeg
добирается до точки, где он выводитинформация о входных видео / аудио потоках перед остановкой.Выполнение команды через командную строку работает должным образом.
Кто-нибудь знает, в чем может быть проблема?
Редактировать:
Просто добавить, я пытался UseShellExecute = true
(и RedirectStandardError = false
)и это работает.Однако мне все еще нужно прочитать вывод, так что это мне не очень помогает.