Как отловить ошибки командной строки в коде asp.net? - PullRequest
0 голосов
/ 06 сентября 2010

Я запускаю ffmpeg.exe из командной строки через код asp.net .

Есть ли способ узнать успех и ошибки выполнения ffmpeg.exe в коде asp.net?

Мой код выглядит следующим образом:

        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 ]

2 голосов
/ 06 сентября 2010
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.Start();
            stdout = p.StandardOutput.ReadToEnd();
            stderr = p.StandardError.ReadToEnd();

Эти операторы генерируют выходные данные, которые вам нужны.

0 голосов
/ 06 сентября 2010

лично я переписал бы код, подобный следующему:

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

и это может дать вам лучший способ справиться с ошибками - как ваш код, если есть исключение, тогда процесс не закроется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...