怎么获取ProcessStartInfo启动进程执行已执行完毕
如何获取ProcessStartInfo启动进程执行已执行完毕?
用ffmpeg实现视频格式的自动转化,功能已经实现了,代码网上也很多。但有一个潜在问题就是,启动ffmpeg.exe的进程是后台运行的,程序本身执行完毕后(应该是调用完毕),ffmpeg.exe还在运行,然后根据视频文件的大小逐步进行文件转换。这个转换过程完全是自动的,我怎样知道ffmpeg什么时候转换完了某个文件呢?
------解决思路----------------------
WaitForExit 方法。
https://msdn.microsoft.com/zh-cn/library/fb4aw7b8(v=vs.80).aspx
------解决思路----------------------
var process = Process.Start(...);
process.WaitForExit();
参考msdn:
https://msdn.microsoft.com/en-us/library/ty0d8k56.aspx
用ffmpeg实现视频格式的自动转化,功能已经实现了,代码网上也很多。但有一个潜在问题就是,启动ffmpeg.exe的进程是后台运行的,程序本身执行完毕后(应该是调用完毕),ffmpeg.exe还在运行,然后根据视频文件的大小逐步进行文件转换。这个转换过程完全是自动的,我怎样知道ffmpeg什么时候转换完了某个文件呢?
string flv_file = Server.MapPath(Guid.NewGuid().ToString().Replace("-", "") + ".flv");
//建立ffmpeg进程
System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
//设置后台运行,不显示窗口
FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//运行参数,此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9以上调试通过
//ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv -ab 56 -ar 44100 -b 200 -r 15 -s
FilestartInfo.Arguments = " -i " + fileName + " -ab 128 -ar 22050 -b 500 -r 15 -qscale 6 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
try
{
//开始转换
System.Diagnostics.Process.Start(FilestartInfo);
//这里调用开始转换,怎样知道转换完了呢?
}
catch
{
return 0;
}
------解决思路----------------------
WaitForExit 方法。
https://msdn.microsoft.com/zh-cn/library/fb4aw7b8(v=vs.80).aspx
------解决思路----------------------
var process = Process.Start(...);
process.WaitForExit();
参考msdn:
https://msdn.microsoft.com/en-us/library/ty0d8k56.aspx