Я написал небольшую оболочку GUI, которая будет выполнять openRTSP с использованием класса Process. Проблема, с которой я сталкиваюсь, перенаправляет вывод в файл видео mpeg4. Я проверил параметры, которые я передаю, правильно, запустив openRTSP в командной строке.C# Переадресация процесса класса в видеофайл
openRTSP.exe -Некоторого -дль вИдео-параметры -4 RTSP: //video.from.server> video.mp4
"> video.mp4" является то, что у меня возникает проблемы воспроизведения.
Я рассмотрел другие примеры использования класса Process, но они, похоже, работают только с текстом ASCII.
Редактировать --- Вот еще некоторые детали
this.outputStream = new StreamWriter(fileNameToUse, false, Encoding.Default);
try
{
byte[] buffer;
// Start the process with the info we specified.
// Call WaitForExit and then the using statement will close.
using (Process exeProcess = new Process())
{
// Assign start info to the process
exeProcess.StartInfo = startInfo;
// Set up the event handler to call back with each line of output
exeProcess.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived);
// Start the Process
exeProcess.Start();
exeProcess.BeginOutputReadLine();
exeProcess.WaitForExit();
}
}
catch (Exception ex) { PrintException(ex); }
finally
{
this.outputStream.Flush();
this.outputStream.Close();
}
// Called asynchronously with a line of data
private void OnDataReceived(object Sender, DataReceivedEventArgs e)
{
lock (this)
{
if (!string.IsNullOrEmpty(e.Data) && (this.outputStream != null))
this.outputStream.WriteLine(e.Data);
}
}
При использовании WriteLine для записи данных, полученных, когда мое приложение завершает работу размер файла такой же, как при запуске openRTSP из командной строки, которая производит «правильный» вывод, а именно видео mpeg4, которое воспроизводится. При запуске из командной строки openRTSP выводит файл mpeg4, который я перенаправляю на mpeg4.
Я попытался добавить «> fileNameToUse» в конец строки, назначенной startInfo.Arguments, но это немедленно сработало openRTSP.
Спасибо, Matt
Возможно, вам понравилась библиотека [MedallionShell] (https://github.com/madelson/MedallionShell). Это делает перенаправление технологических потоков очень простыми для работы. – ChaseMedallion