【问题标题】:How to stop ffmpeg video recording in c#?如何在 C# 中停止 ffmpeg 视频录制?
【发布时间】:2015-12-04 19:39:41
【问题描述】:

我在应用程序中使用 FFmpeg,它可以完美地启动和录制视频 但是当我想停止它要求按“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);


    }

【问题讨论】:

标签: c# process ffmpeg


【解决方案1】:

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

如果您不这样做,那么您可以使用第三方 .exe(或内部等效程序)向其进程 ID 发送 ctrl+c/ctrl+break。

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

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多