杀死所有反复打开的ffmpeg进程c#

时间:2018-01-20 21:14:28

标签: c# ffmpeg process

我是C#的新手,我正在尝试创建一个基于ffmpeg转换视频的工具。 作为标题,我做谷歌搜索并找出许多方法来杀死ffmpeg进程,但在我的情况下,例如我有10个视频,这意味着将逐个创建10个ffmpeg进程。如果我在第一个视频中关闭了表单,那么其他9个将在后台创建。

有没有有效的方法可以阻止ffmpeg创建进程?

2 个答案:

答案 0 :(得分:1)

我不太明白你的问题,但我希望这两种方法中的一种可能有所帮助。

方法1:

Here我找到了一个解决方案,如何停止本地计算机上的所有ffmpeg进程。

/// <summary>
/// Stops all ffmpeg processes on the local machine
/// </summary>
private void StopCapturing()
{
    Process process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "taskkill",
            Arguments = "/F /IM ffmpeg.exe",
            UseShellExecute = false,
            CreateNoWindow = true
        }
    };
    process.Start();
}

方法2:

对于您启动的每个ffmpeg.exe进程,您可以保存PID。使用PID,您可以杀死之前开始的每个ffmpeg.exe实例。

/// <summary>
/// Starts a new process on the local machine. Returns the PID of the started process
/// </summary>
/// <param name="processName"></param>
/// <param name="arguments"></param>
private int StartProcess(string processName, string arguments)
{
    // Initializes the process
    Process process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = processName,
            Arguments = arguments,
            UseShellExecute = false,
            CreateNoWindow = true
        }
    };

    // Starts the process
    process.Start();

    return process.Id;
}

/// <summary>
/// Kills the process that equals the passed PID
/// </summary>
/// <param name="pid"></param>
private void KillProcess(int pid)
{
    Process process = Process.GetProcessById(pid);
    process.Kill();
}

答案 1 :(得分:0)

我不确定我理解你想要完成什么,但这里是用于在C#中杀死进程的方法: https://msdn.microsoft.com/en-us/library/system.diagnostics.process.kill(v=vs.110).aspx