Я использую ffmpeg.exe для преобразования видеофайлов в формат flv . Для этой цели я использую службу windows, чтобы запустить процесс преобразования в фоновом режиме . При попытке преобразовать большие файлы (я испытал это при размере файла> 14 МБ) через службу Windows, он застревает в строке, которая запускает процесс (то есть process.start();
) .
Но когда я попытался запустить ffmpeg.exe напрямую из командной строки, это сработало без проблем.
Мой код в Служба Windows как следует:
private Thread WorkerThread;
protected override void OnStart(string[] args)
{
WorkerThread = new Thread(new ThreadStart(StartHandlingVideo));
WorkerThread.Start();
}
protected override void OnStop()
{
WorkerThread.Abort();
}
private void StartHandlingVideo()
{
FilArgs = string.Format("-i {0} -ar 22050 -qscale 1 {1}", InputFile, OutputFile);
Process proc;
proc = new Process();
try
{
proc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
proc.StartInfo.Arguments = FilArgs;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
eventLog1.WriteEntry("Going to start process of convertion");
proc.Start();
string StdOutVideo = proc.StandardOutput.ReadToEnd();
string StdErrVideo = proc.StandardError.ReadToEnd();
eventLog1.WriteEntry("Convertion Successful");
eventLog1.WriteEntry(StdErrVideo);
}
catch (Exception ex)
{
eventLog1.WriteEntry("Convertion Failed");
eventLog1.WriteEntry(ex.ToString());
}
finally
{
proc.WaitForExit();
proc.Close();
}
Как мне избавиться от этой ситуации.