Я написал небольшую оболочку GUI, которая будет выполнять openRTSP с использованием класса Process. У меня возникла проблема с перенаправлением вывода в видеофайл mpeg4. Я проверил правильность параметров, которые я передаю, запустив openRTSP в командной строке.
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