ffmpeg.exeを使用して、ビデオファイルをflv形式に変換しています。その目的のために、私はWindowsサービスを使用して、変換プロセスをバックグラウンドで実行します。 大きなファイルを(私はそれがファイルサイズが14MBを超えると経験しました)Windowsサービスを介して変換しようとしている間に、プロセス(すなわち、process.start();
)を開始する行にこだわってしまいます。大きなファイルを処理している間にwindowsサービス経由でffmpeg.exeを実行できない
しかし、私はコマンドプロンプトから直接ffmpeg.exeを実行しようとしたときに問題なく動作しました。私はこのような状況を取り除くことができますどのように
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();
}
を:は次のように
マイコードでWindowsサービスです。
なぜビデオ変換タスクをWindowsサービスとして実行しますか? –