如何获取ProcessStartInfo启动进程执行已执行完毕?

lovebaby 2015-05-18 06:55:15
用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;
}
...全文
1084 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果ffmpeg转换完后自动退出,用LS上的方法才可行 这种东西,最好是那个程序有什么接口,比如导出函数,com==公开出来给你调用
宝_爸 2015-05-19
  • 打赏
  • 举报
回复
var process = Process.Start(...); process.WaitForExit(); 参考msdn: https://msdn.microsoft.com/en-us/library/ty0d8k56.aspx
SPFarmer 2015-05-19
  • 打赏
  • 举报
回复
WaitForExit 方法。 https://msdn.microsoft.com/zh-cn/library/fb4aw7b8(v=vs.80).aspx
lovebaby 2015-05-19
  • 打赏
  • 举报
回复
谢谢楼上几位。如果转换大文件的话,估计要等上很长时间。不用WaitForExit的话用户体验好象会好些,程序本身执行完了。后台慢慢转就行。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧