外部プログラムを使用してC#で実行するこの圧縮ビデオタスクがあります。この圧縮が完了してファイルが書き出されるまでには、しばらく時間がかかります。外部操作が終了するまで、次のコードを実行したくありません。
単純な Thread.sleep(推測); を実行したいですか? そして次のコード行を実行しますか、それとももっと良い方法がありますか?
これは私がビデオの圧縮を行っている方法です:
try
{
String finalCommand = "";
String thePath = System.IO.Path.GetDirectoryName(fileName);
finalCommand ="-i " + fileName + " -s 320x240 -b 300k -r 30 -f avi " + thePath + "\\C" + System.IO.Path.GetFileName(fileName);
System.Diagnostics.ProcessStartInfo ffmpegcmd = new System.Diagnostics.ProcessStartInfo(Application.StartupPath + "\\ffmpeg.exe",
"-i \"" + fileName + "\" -s 320x240 -b 300k -r 30 -f avi \"" + thePath + "\\C" + System.IO.Path.GetFileName(fileName) + "\"");
ffmpegcmd.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(ffmpegcmd);
LogUtil.writeLog("About to wait for FFMPEGCMD process");
p.WaitForExit();
success = true;
LogUtil.writeLog("FFMPEGCMD process exited perfectly!");
}
catch (Exception ex)
{
LogUtil.writeLog("ERROR compressing and using FFMPEG");
success = false;
}
これがプロセス/スレッドを独自に実行しているかどうかはわかりませんが、うーん。