如何在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);
}
如果您最初创建了进程,则可以保留其stdin的句柄并向其发送"q"(之后可能还需要向其发送"'n")。
如果你没有,然后你可以一些第三方。exe(或内部等效)发送一个ctrl+c/ctrl+break到它的进程ID。
FFmpeg没有窗口句柄,因为它是一个控制台应用程序,所以你不能通过PostMessage等发送击键,只能通过控制台信号(即ctrl+c/break)