我从命令提示符运行 ffmpeg.exe到asp.net代码。
是否有任何方法可以在asp.net代码中了解 ffmpeg.exe执行的成功和错误?
我的代码如下:
string OutputFile, FilArgs;
//output file format in swf
//outputfile = SavePath + "SWF\\" + withoutext + ".swf";
OutputFile = SavePath + "SWF\\" + WithOutExt + ".flv";
//file orguments for FFMEPG
//filargs = "-i \"" + inputfile + "\" -ar 22050 \"" + outputfile;
FilArgs = "-i \"" + InputFile + "\" -ar 22050 \"" + OutputFile;
//string spath;
//spath = Server.MapPath(".");
Process proc;
proc = new Process();
proc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
proc.StartInfo.Arguments = FilArgs;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.RedirectStandardOutput = false;
try
{
proc.Start();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
proc.WaitForExit();
proc.Close();
有人请帮我解决这个问题吗?
答案 0 :(得分:2)
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
stdout = p.StandardOutput.ReadToEnd();
stderr = p.StandardError.ReadToEnd();
这些语句会生成您需要的输出。
答案 1 :(得分:0)
我个人会重写类似如下的代码:
Process 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 = false;
proc.Start();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
proc.WaitForExit();
proc.Close();
}
这可能会为您提供一种更好的方法来处理错误 - 如果存在异常,代码的方式则会导致进程无法关闭。