Процесс останавливается при запуске в .NET (ffmpeg)

Я пытаюсь запустить 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 ), и это работает. Однако мне все еще нужно прочитать вывод, так что это мне не особо помогает.

6
задан Alex Jolig 3 January 2016 в 07:04
поделиться