小编Igo*_*lik的帖子

从 Windows 服务执行的子进程中使用 DirectX

我需要从 Windows 服务执行 ffmpeg 进程并捕获它的标准输出。它工作正常,直到我使用硬件加速。由于windows服务访问DirectX受到限制,子进程也无法访问。

当我从控制台应用程序执行相同的代码时,一切正常,但从 Windows 服务执行的相同代码无法使用硬件加速。

        string ffmpegArgs = /*-hwaccel dxva2 */"-threads 0 -probesize 100512 -i c:/Temp/test.mp4 -vf yadif -vcodec libx264 -preset ultrafast -tune zerolatency -profile baseline -x264-params keyint=20:min-keyint=20:scenecut=-1 -acodec aac -b:a 48k -flags +cgop -f mp4 -movflags empty_moov+default_base_moof+frag_keyframe c:/temp/output.avi";

        var psi = new ProcessStartInfo
        {
            FileName = "c:/Temp/ffmpeg4/ffmpeg.exe",
            Arguments = ffmpegArgs,
            WorkingDirectory = "c:/Temp/ffmpeg4",
            CreateNoWindow = false,
            WindowStyle = ProcessWindowStyle.Hidden,
            RedirectStandardInput = false,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false
        };

        var processVideo = new …
Run Code Online (Sandbox Code Playgroud)

c# directx winapi windows-services ffmpeg

5
推荐指数
1
解决办法
309
查看次数

标签 统计

c# ×1

directx ×1

ffmpeg ×1

winapi ×1

windows-services ×1