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