Я пытаюсь запустить ffmpeg
как процесс в .NET (C #), но в некоторых случаях, в зависимости от аргументов (в частности, если я опускаю аргументы видео, чтобы создать аудиофайл), он глохнет. Он запускается, выводит несколько строк, но затем просто останавливается (используя 0% ЦП). Когда родительский процесс .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
), и это работает. Однако мне все еще нужно прочитать вывод, так что это мне не особо помогает.