Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过网站运行ffmpeg_C#_Asp.net_Ffmpeg - Fatal编程技术网

C# 通过网站运行ffmpeg

C# 通过网站运行ffmpeg,c#,asp.net,ffmpeg,C#,Asp.net,Ffmpeg,我有一个网站,它允许用户下载图像作为视频剪辑 他们可以从mp4、avi、ogg等中进行选择 我通过C#/Asp.net 4.0中的Process类使用ffmpeg来执行转换工具 我在测试中注意到,如果我强制中止此转换(如停止IIS,在task manager中结束wp3进程),那么在执行此操作一段时间后,如果我查看Web服务器上的task manager,则有许多FFMPEG实例未正确关闭 理想情况下,我想做的是杀死可能会对该特定用户(而不是任何其他用户/会话)造成延迟的任何进程,然后启动转换工

我有一个网站,它允许用户下载图像作为视频剪辑

他们可以从mp4、avi、ogg等中进行选择

我通过C#/Asp.net 4.0中的Process类使用ffmpeg来执行转换工具

我在测试中注意到,如果我强制中止此转换(如停止IIS,在task manager中结束wp3进程),那么在执行此操作一段时间后,如果我查看Web服务器上的task manager,则有许多FFMPEG实例未正确关闭

理想情况下,我想做的是杀死可能会对该特定用户(而不是任何其他用户/会话)造成延迟的任何进程,然后启动转换工具

是否可以管理/控制该用户/会话的FFMPEG过程,或者我是否应该查看一个队列系统,该系统一次只允许一个用户使用该转换工具

我希望我说得很清楚

我可以发布代码来说明进程/ffmpeg是如何在C#中启动的,但我看不出这对这个问题有什么帮助

谢谢

希望这有帮助:

private void killProcess(String processName, String processOwner)
    {
    foreach (var process in Process.GetProcessesByName(processName))
    {
    if(GetProcessOwner(processName).equals(processOwner))
    {
        process.Kill();
    }
    }
    }
    public string GetProcessOwner(string processName)
    {
        string query = "Select * from Win32_Process Where Name = \"" + processName + "\"";
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
        ManagementObjectCollection processList = searcher.Get();

        foreach (ManagementObject obj in processList)
        {
            string[] argList = new string[] { string.Empty, string.Empty };
            int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
            if (returnVal == 0)
            {
                // return DOMAIN\user
                string owner = argList[1] + "\\" + argList[0];
                return owner;       
            }
        }

        return "NO OWNER";
    }

您好,很遗憾,processOwner是只读的,并且没有设置为会话ID级别。谢谢你的时间。我做了一点调查:只有当你以管理员的身份运行代码时,它才有效。仅为确保答案完整性:右键单击调试文件夹中的appName.exe并以管理员身份运行。我相信你知道这一点。所有打包软件(如高级安装程序)都可以选择始终以管理员身份运行。