看见网上提问的人比较多,希望这个方法对大家有帮助吧。

使用ffmpeg命令行录制桌面,正常结束是在cmd窗口中输入“q”,或者直接ctrl+c

但是在程序中通过process调用的ffmpeg.exe会出现以下问题:

1.在第一次录制中可以使用模拟ctrl+c正常结束,第二次就不能结束了。

2.如果使用kill强制结束那录制的视频就不能播放了,原因可能是视频没有写入文件尾。

  既然模拟ctrl+c行不通了,那就只能试试把“q”写进标准输入

        //此方法可以正常停止ffmpeg
        public void StopProcess()
        {
            if(proc != null)
            {
                proc.StandardInput.WriteLine("q");
                proc.StandardInput.AutoFlush = true;
            }
        }

那开启也是比较简单的

        public void RunProcess(string Parameters)
        {
            //创建一个ProcessStartInfo对象 并设置相关属性
            var oInfo = new ProcessStartInfo(FFmpegPath, Parameters);
            oInfo.UseShellExecute = false;
            oInfo.CreateNoWindow = true;
            oInfo.RedirectStandardOutput = true;
            oInfo.RedirectStandardError = true;
            oInfo.RedirectStandardInput = true;
            
            { 
                proc = Process.Start(oInfo);
                pid = proc.Id;
                proc.EnableRaisingEvents = true;
                proc.BeginErrorReadLine();
                proc.WaitForExit();
                proc.Close();
                proc.Dispose();
            }
        }

 

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐