views:

27

answers:

2

I am running ffmpeg.exe from command prompt through asp.net code.

Is there any method to know success and errors of the ffmpeg.exe execution in asp.net code ?

My code is as follows:

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

Any one please help me to sort this out?

A: 

personally i'd rewrite the code similar to as follows:

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

and that may give you a better way to deal with errors - the way your code was if there was an exception then the process would not close.

PaulStack
Thanks for your suggestion..
Harun
+2  A: 
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.Start();
            stdout = p.StandardOutput.ReadToEnd();
            stderr = p.StandardError.ReadToEnd();

Those statements generates outputs that you needed.

chrizyuen