作者:缘来是你明 | 来源:互联网 | 2023-08-16 18:59
做了一个视频转换成flv,是用按纽调用cmd命令输出实现的.想实现这样的功能:视频转换完后,系统自动上传到服务器.问题是我不知道什么时候cmd命令输出完毕(这样我才可以调用上传函数
做了一个视频转换成flv,是用按纽调用cmd命令输出实现的.
想实现这样的功能:视频转换完后,系统自动上传到服务器.
问题是我不知道什么时候cmd命令输出完毕(这样我才可以调用上传函数).
请教,谢谢
10 个解决方案
http://topic.csdn.net/t/20050520/20/4023641.html
这是我的调用cmd命令的代码
#region 停止录象-压缩成flv
private void Stop_Click(object sender, EventArgs e)
{
this.ChangeView();
Close();
}
///
/// 压缩成flv
///
private void ChangeView()
{
stnameflv = stname + ".flv";
string str = @""+fileName+" "+stnameflv+"";
//string str = @"f:\test.avi f:\test_allen.flv";
RunFFMpeg(str);
}
//运行FFMpeg的视频解码,
public void RunFFMpeg(string strCmd)
{
//创建并启动一个新进程
Process p = new Process();
//设置进程启动信息属性StartInfo,这是ProcessStartInfo类,包括了一些属性和方法:
p.StartInfo.FileName = @"F:\ffmpeg.exe"; //程序名
p.StartInfo.Arguments = " -i " + strCmd; //执行参数
p.Start();
}
//运行Cmd.exe执行Dos 命令,并返回执行结果
public string RunCmd(string command)
{
//创建并启动一个对进程
Process p = new Process();
//Process类有一个StartInfo属性,这是ProcessStartInfo类,包括了一些属性和方法,例如:
p.StartInfo.FileName = "cmd.exe"; //程序名
p.StartInfo.Arguments = " /c " + command; //执行参数
p.StartInfo.UseShellExecute = false; //关闭Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向标准输入
p.StartInfo.RedirectStandardOutput = true; //重定向标准输出
p.StartInfo.RedirectStandardError = true; //重定向错误输出
p.StartInfo.CreateNoWindow = true; //设置不显示窗口
p.Start();
//p.StandardInput.WriteLine(command); //也可以用这种方式输入要执行的命令
//p.StandardInput.WriteLine("exit"); //不过要记得加上Exit要不然下一行程式执行的时候会当机
//必须创建可以自动转换完成以后,结束进程的代码
return p.StandardOutput.ReadToEnd(); //从输出流取得命令执行结果
}
我的cmd命令窗体在继续转换,我必须判断它何时转换完成,然后才能自动触发上传函数
如果你要等到结束去干别的事,就用
System.Diagnostics.Process.WaitForExit();
这句话执行了就表示你的cmd干完了。