Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取ffmpeg输出并将其发送到表单_C#_Ffmpeg_Stderr - Fatal编程技术网

C# 读取ffmpeg输出并将其发送到表单

C# 读取ffmpeg输出并将其发送到表单,c#,ffmpeg,stderr,C#,Ffmpeg,Stderr,我可以很好地通过ffmpeg运行参数,但我需要能够在流式传输时实时读取其输出(如您所知,ffmpeg可能需要一段时间,并且它会用当前帧每秒更新两次stderr,等等) 我有一个名为prog的表单,它是用ProgressForm prog=new ProgressForm()全局声明的用户输入一个视频文件文件夹,收集一些数据,然后按下一个按钮以开始ffmpeg编码过程。按钮单击事件创建一个新线程,如下所示: runFFMpeg = new Thread(run_ffmpeg); runFFMp

我可以很好地通过ffmpeg运行参数,但我需要能够在流式传输时实时读取其输出(如您所知,ffmpeg可能需要一段时间,并且它会用当前帧每秒更新两次stderr,等等)

我有一个名为
prog
的表单,它是用
ProgressForm prog=new ProgressForm()全局声明的
用户输入一个视频文件文件夹,收集一些数据,然后按下一个按钮以开始ffmpeg编码过程。按钮单击事件创建一个新线程,如下所示:

 runFFMpeg = new Thread(run_ffmpeg);
 runFFMpeg.start();
runFFMpeg是先前使用
私有线程runFFMpeg全局初始化的

现在我运行了\u ffmpeg方法:

private void run_ffmpeg()
{
    string program = "C:\\ffmpeg64.exe";
    string args = //some arguments that I know work;

    ProcessStartInfo run = new ProcessStartInfo(program,args);
    run.UseShellExecute = false;
    run.CreateNoWindow = true;
    run.RedirectStandardOutput = true;
    run.RedirectStandardError = true;
    Process runP = new Process();
    runP = Process.Start(run);
    runP.WaitForExit();

    //NOW WHAT?

 }
我不知道现在该怎么做才能让数据生效,但如果可以的话,我会更新
prog
,它有许多控件,包括进度条等。典型的输出(我感兴趣的)看起来像“frame=240 fps=12.8 q=0.0 size=1273802kB time=00:00:08.008比特率=4415.2kbit/s dup=46 drop=0”。我知道如何解析它来得到我需要的,我只需要那一行

run.Start();
StreamReader sr=run.StandardError;
而(!sr.EndOfStream)
{
字符串输出=sr.ReadLine();
}
run.WaitForExit();
字符串输出将是您的行