如何在c#中停止ffmpeg视频录制

本文关键字:ffmpeg 视频 | 更新日期: 2023-09-27 18:11:52

我在应用程序中使用FFmpeg,它可以完美地启动和录制视频但当我想要停止它,并按下"q"键时,我得到了一个系统。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);

    }

如何在c#中停止ffmpeg视频录制

如果您最初创建了进程,则可以保留其stdin的句柄并向其发送"q"(之后可能还需要向其发送"'n")。

如果你没有,然后你可以一些第三方。exe(或内部等效)发送一个ctrl+c/ctrl+break到它的进程ID。

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