如何在asp.net代码中捕获命令提示符错误?

时间:2010-09-06 09:48:52

标签: asp.net command-line

我从命令提示符运行 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();

有人请帮我解决这个问题吗?

2 个答案:

答案 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();
}

这可能会为您提供一种更好的方法来处理错误 - 如果存在异常,代码的方式则会导致进程无法关闭。