为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
喵喔喔 2023-09-16 15:53:15
我尝试从 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();        }输出句柄之前!
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

ffmpeg将其输出写入stderrand not stdout。因此,您必须从标准错误而不是标准输出中
读取。

因此,请改用以下几行:

using (StreamReader reader = process.StandardError)
{
    string output = await reader.ReadToEndAsync();
    Console.WriteLine(output);
}


查看完整回答
反对 回复 2023-09-16
?
茅侃侃

TA贡献1842条经验 获得超21个赞

process.Start();

添加

process.BeginOutputReadLine();


查看完整回答
反对 回复 2023-09-16
  • 2 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信