猿问

为什么进程输出读取器返回空数据?当其他进程中的相同代码正常工作时

我尝试从 ffmpeg 进程获取输出,但无法获取输出。在另一个进程和命令中,它工作正常,但输出在启动时立即返回!


        using (var process = new Process())

        {

            process.StartInfo = new ProcessStartInfo()

            {

                FileName = LinkHelper.IPFS_PATH,

                Arguments = cmd,

                UseShellExecute = false,

                CreateNoWindow = true,

                RedirectStandardOutput = true

            };


            process.ErrorDataReceived += FfmpegErrorRecieved;

            process.Start();


            using (StreamReader reader = process.StandardOutput)

            {

                string output = await reader.ReadToEndAsync();

                Console.WriteLine(output);

            }               

            process.WaitForExit();

        }

输出句柄之前!


喵喔喔
浏览 85回答 2
2回答

慕姐4208626

ffmpeg将其输出写入stderrand not stdout。因此,您必须从标准错误而不是标准输出中读取。因此,请改用以下几行:using (StreamReader reader = process.StandardError) {     string output = await reader.ReadToEndAsync();     Console.WriteLine(output); }

茅侃侃

后process.Start();添加process.BeginOutputReadLine();
随时随地看视频慕课网APP
我要回答