如题,在asp.net(C#)中。。怎么知道一个视频已经转换完成了呢,我的代码大致如下:
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(pathexe);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.Arguments = " -i " + uplj + name + " -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 " + mvlj + name + ".flv";
            System.Diagnostics.Process.Start(startInfo);
是不是在转换的时候有什么返回值啊??
各位大虾帮帮忙了!!!

解决方案 »

  1.   

    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo = startInfo;
    p.Start();int e = p.WaitForExit("最大转换时间");
    e为进程的退出代码.通过判断e的值是否为0和非0 可以判断ffmpeg是否截图成功. 楼主在做视频网站吧. 呵呵
      

  2.   

    谢谢Samen168
    试试。。看,
    呵。没办法啊。。老大要弄。。以前也没学过这个
      

  3.   

    做视频转换的话推荐用mencoder.exe 几乎所有格式通吃了.  ffmpeg的话不支持wmv/rm. 还要借助mencoder来转到avi 然后用ffmpeg转为flv  实际上更费服务器端资源.  我自己就是利用mencoer一次性完成的 :0 截图用ffmpeg  最后记得用flvmid 修复. 不然转换的视频无法拖动进度条。
      

  4.   

    ffmpeg可以转wmv吧。现在我的就可以转。只是rm的不行。。问一下int e = p.WaitForExit("最大转换时间");里边的参数怎么写单位是什么。。
    还有就是e不能声名。。这样会有不同含义
      

  5.   

    不好意思  刚的代码有点问题 查了下msdnp.WaitForExit(这里的单位是毫秒);然后线程会阻塞直到ffmpeg完成转换.然后用
    int pCode = p.ExitCode;
    即可了转换rm的话   你用mencoder 可以直接转flv ffmpeg支持的他都支持 对wmv/rm也支持
      

  6.   

    无法将类型“bool”隐式转换为“int”??
    这是什么原因!
    我是这样写的不知道对不对。麻烦flaigd了
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(pathexe);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.Arguments = " -i " + uplj +"qq.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 " + mvlj+"qq.flv 2>&1";
            System.Diagnostics.Process.Start(startInfo);
            //Response.Write(outputArr);
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo = startInfo;
            p.Start();
            int pCode = p.WaitForExit(500000);
            int pCode = p.ExitCode;
            if (pCode == 0)
            {
                Response.Write("up_index.htm");
            }
      

  7.   

    int pCode = (int)p.ExitCode; 或 bool pState = p.ExitCode;
      

  8.   

    成功了!!停下来了
    呵呵。谢谢flaigd
    可惜的是没法弄出时间来不能不说是一个遗憾不知道哪位大虾有这方面的资料。
    忘了说了。。(int)这个用不了。
    我把他写成这样就可以了
    int pCode = Convert.ToInt32(p.WaitForExit(99999999));再次谢谢flaigd