我可以通过ffmpeg运行参数就好了,但我需要能够读取它的输出LIVE,因为它流(你可能知道,ffmpeg可能需要一段时间,它会更新它的stderr与当前帧每秒两次,等等)。阅读ffmpeg输出并将它发送到一个表格
我有一个名为prog
的表单,用ProgressForm prog = new ProgressForm();
进行了全局声明。用户输入一个视频文件的文件夹,收集一些数据,然后按下按钮以使用ffmpeg开始编码过程。该button_click事件创建一个新的线程,像这样:
runFFMpeg = new Thread(run_ffmpeg);
runFFMpeg.start();
runFFMpeg与private Thread runFFMpeg;
全球更早初始化。
现在我有方法run_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 bitrate = 4415.2kbits/s dup = 46 drop = 0" 。我知道如何解析这个来获得我需要的东西,我只需要那一行!