如何在c#中停止ffmpegvideo录制?

我在应用程序中使用FFmpeg并且它完美地启动和录制video但是当我想要停止它请求按“q”时,我收到了System.EntryPointNotFoundException错误消息。

如何从应用程序向处于运行状态的进程发送消息“q”

int key_q = 81; [DllImport("user32.dll", EntryPoint = "postmessage")] private static extern bool postmessage(IntPtr hwnd, uint msg, int wparam, int lparam); private void button_stop_Click(object sender, EventArgs e) { string process = "ffmpeg"; Process[] pro = Process.GetProcessesByName("ffmpeg"); pro[0].Refresh(); IntPtr h = pro[0].MainWindowHandle; postmessage(h, 0x100, key_q, 0); } 

如果您最初创建了该进程,则可以保留其stdin的句柄并将其发送为“q”(可能还需要在之后发送“\ n”)。

如果你没有,那么你可以使用一些第三方.exe(或内部等价物)向它的进程ID发送一个ctrl + c / ctrl + break。

FFmpeg没有窗口句柄,因为它是一个控制台应用程序,所以你不能用PostMessage等发送它的击键。 只能通过控制台信号(即ctrl + c / break)