【问题标题】:How do I get the output from handbrakecli --scan?如何从 handbrakecli --scan 获取输出?
【发布时间】:2016-02-19 00:32:40
【问题描述】:

我正在开发一个 c# 程序来循环播放我的 Windows Media Center 录制的电视节目 (.wtv) 并使用 handbrake cli 转换它们。我现在一切正常,我还想利用 --scan 函数,以便我可以根据输入文件自定义音频和视频参数,而不是设置一个静态参数。

这是我目前的扫描结果,但我似乎无法找到打印到控制台窗口的数据。

var p = new Process();
var pSI = new ProcessStartInfo();
pSI.RedirectStandardOutput = true;
pSI.UseShellExecute = false;
pSI.FileName = HandBrakeLocation;
pSI.Arguments = string.Concat(@"--scan -i ", '"', inputFile, '"');
pSI.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo = pSI;
p.Start();
var stdout = p.StandardOutput;//streamreader
p.WaitForExit();

我认为 p.StandardOutput 可能会将控制台输出发送到 stdout StreamReader 变量,但我在对象内的任何地方都找不到它。我错过了什么?

感谢您的时间和帮助。

【问题讨论】:

    标签: c# console handbrake


    【解决方案1】:

    您可以使用进程(即流)的 StandardOutput 属性读取程序输出:

    var output = stdout.ReadToEnd();
    p.WaitForExit();
    

    更多信息可以在 MSDN 上找到:https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput%28v=vs.110%29.aspx

    【讨论】:

    • 谢谢,但我试过了,“输出”中的值是空字符串。我刚刚从一位同事那里获得了以下链接(他说这是我祈祷的答案),我回家后会尝试。 stackoverflow.com/questions/285760/…
    • 我在使用 Handbrake CLI 时发现大多数输出​​都写入 stderr 而不是 stdout。如果您使用--json 选项,您仍将获得正常的标准错误输出,但标准输出为 JSON。
    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2010-10-06
    • 2017-03-08
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多