Вывод процесса трубопровода в новый процесс

У меня возникают проблемы с передачей выходных данных процесса rtmpdump в ffmpeg, и я считаю, что проблема заключается в том, что мой процесс крадет выходные данные rtmpdump.

В моем исследовании я слышал о попытке использовать процесс cmd.exe и запустить rtmpdump.exe в качестве команды / C, но эта проблема заключается в том, что я теряю ссылку на процесс rtmpdump.exe, который возникает из-за этого, и мне нужно чтобы иметь возможность управлять несколькими процессами rtmpdump в моей программе и выборочно убивать определенные из них время от времени.

Я первоначально попробовал что-то простое, как это:

var p = new Process();
p.StartInfo.FileName = "rtmpdump.exe";
p.StartInfo.Arguments = "-v -r rtmp://somehost.com/app-name -o - | ffmpeg.exe -loglevel quiet -i - -c:v copy -c:a libvo_aacenc -b:a 128k \"test.mp4\"";

Это не работает вообще.

с "cmd.exe" в качестве начального процесса:

var p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C rtmpdump.exe -v -r rtmp://somehost.com/app-name -o - | ffmpeg.exe -loglevel quiet -i - -c:v copy -c:a libvo_aacenc -b:a 128k \"test.mp4\"";

Это приближает меня к тому, что мне нужно, запускает процесс rtmpdump и перенаправляет на ffmpeg, но теперь «p» будет ссылаться на несуществующий процесс «cmd.exe», который запустил команду для запуска rtmpdump, после чего «cmd.exe» завершится.

Единственное, что меня беспокоит, это возможность хранить ссылки на созданные процессы rtmpdump.exe. ffmpeg автоматически завершит работу после закрытия rtmpdump, его процесс можно игнорировать.

Изменить: Если вопрос не был ясен. Я пытаюсь передать вывод rtmpdump в ffmpeg. Обычный способ сделать это как часть аргумента команды не работает с использованием оператора перенаправления |. и использование процесса «cmd.exe» не работает должным образом.

Ответы на вопрос(2)

Ваш ответ на вопрос